[root@serv2 ~]# cat pf.conf #интерфейсы int_if="vr0" #modem_if="rl0" ext_if="rl0" #ипы сети admin_comp="192.168.112.6" sergaeva_comp="192.168.112.21" marina_comp="192.168.112.9" lena_comp="192.168.112.1" server_comp="192.168.112.254" yurist_comp="192.168.112.4" serv_port="3389" icmp_types="echoreq" #таблица люедй вне прокси table const { $admin_comp, $server_comp, $sergaeva_comp, $yurist_comp, $marina_comp, $lena_comp } #политика по-умолчанию set block-policy drop #игнорируем петлевой интерфейс set skip on lo0 #нормализуем вх/исх трафик #scrub in all fragment reassemble # Нормализация и т.д. set block-policy return set loginterface $ext_if #scrub in all max-mss 1436 scrub in all no-df scrub out all random-id max-mss 1360 #натим nat pass log on $ext_if inet proto tcp from to any -> ($ext_if) #перекидываем порт со внешки на сервак rdr on $ext_if inet proto tcp to $ext_if port $serv_port -> $server_comp port $serv_port #на проксю rdr inet proto tcp from to any port www -> 192.168.112.251 port 3128 #блочим все (политика по-умолчанию) block all # Открываем входящие соединения с уже установленным флагом pass out on { $ext_if $int_if } proto { tcp udp icmp } all modulate state #Открываем исходящие с прокси pass out quick on $ext_if inet proto tcp from 192.168.112.251 to any port www keep state #разрешим входящие с инета, чтобы перекинуть их pass in on $ext_if proto tcp from any to ($ext_if) port $serv_port flags S/SA keep state # SSH c инета и локалки pass in on $ext_if proto tcp from any to ($ext_if) port ssh flags S/SA keep state pass in quick on $int_if proto tcp from any to $int_if port ssh flags S/SA keep state # DNS pass in on $int_if inet proto udp from $int_if:network to $int_if port 53 keep state # Пущай пингуют pass in inet proto icmp all icmp-type $icmp_types keep state #Разрешаем входящие pass in on $int_if inet proto tcp from to any keep state