Есть локалка 192.168.100.0/24, в локалке шлюз под управлением freebsd 7.0, на котором настроен proftpd, pf и mpd5 с виртуальной подсетью 10.189.159.0/24.
Задачи такие:
1) Обеспечить доступ из локалки в инет через nat без ограничений (в том числе и на торренты и фтп).
2) Обеспечить доступ из инета к фтпшнику на шлюзе (в том числе и пассивный режим).
3) Обеспечить подключенных удаленных впн клиентов доступом без органичений к ресурсам локальной сети.
Пункты 2 и 3 вроде бы работают, выкладываю конфиг, поругайте правила, поскольку в том что они на 100% правильные я сомневаюсь. Некоторые строчки бездумно драл с инета и особо не заморачивался, поскольку работает. Но хочу чтобы правила были правильные и не было ничего лишнего.
Проблемы, которые есть сейчас
1) Нет доступа из локалки через нат к фтп серврам в инете (не работает пассивный режим)
2) Как-то криво работает торрент (маленькая скорость и практически нет отдачи)
Код: Выделить всё
ext_if="em1"
int_if="em0"
lannet="192.168.100.0/24" #внутренняя локалка
ext_ip="81.x.x.x/8" #внешний IP
1c_server="192.168.100.100" #1C сервер в локалке, на который по RDP ходят из вне
table <vpn> {10.189.159.0/24} #VPN подсеть
private_nets = "{ 127.0.0.0/8, 192.168.100.0/24, 10.189.159.0/24, 0.0.0.0/8 }"
client_ports = "{ 21, 22, 25, 110, 123, 80, 5190, 443, 3128, 3129, 3389, 8080, 5938, 9997, 2802, >=49151 }"
ftp_ports = "{ 80, 21, 20, >=49151 }" #эти порты необходимы для корректного захода на наш фтп из вне любым софтом (в том числе и браузером)
set block-policy drop
set loginterface $ext_if
set optimization normal
set skip on lo0
scrub in
nat on $ext_if from $int_if:network to any -> $ext_if
rdr on $ext_if proto tcp from any to $ext_if port rdp -> $1c_server
antispoof quick for {lo0, $int_if}
block log all
block drop in quick on $ext_if from $private_nets to any
pass out keep state
pass inet proto icmp icmp-type echoreq
pass in on $int_if proto udp from $lannet to any port domain keep state
pass in on $int_if proto udp from $lannet to any port ntp keep state
pass in on $int_if proto tcp from $lannet to any port $client_ports keep state
pass in log on $ext_if proto tcp from any to $ext_ip port 22 flags S/SA synproxy state
pass in log on $ext_if proto tcp from any to $1c_server port rdp flags S/SA synproxy state
pass in quick on $ext_if proto tcp from any to $ext_ip port 1723 flags S/SA keep state
pass in quick from <vpn> to any
pass in quick from any to <vpn>
pass out quick from any to <vpn>
pass out quick from <vpn> to any
pass in quick on $ext_if inet proto tcp from any to $ext_ip port $ftp_ports keep state