Кратко описываю ситуацию.
На FreeBSD подключение в Интернет, на нем висит веб-сервер и пользователи выходят в Сеть.
Когда запускаю подключение к Инету, запускаю файервол(PF)все вроде работает как надо целый день.
На следующий день утром прихожу- не работает ни наш сайт, ни доступ в Интернет для юзеров.
Причем соединение подключение с Инетом не упало, и ifconfig и top его видят.
В логах пишет сообщения типа таких.Apr 17 10:07:53 cs kernel: pf: BAD state: TCP 80.237.18.204:80 80.237.18.204:80 222.76.116.233:2829 [lo=3347209742 high=3347209743 win=65535 modulator=0] [lo=
Apr 17 10:07:53 cs kernel: pf: State failure on: 1 | 5
Заново запускаю подключение к Интернету - все прекрасно работает.
Без файервола таких проблем не возникает. Где копать?
Даю конфигурацию:
ipout1 = "xx.xxx.xx.xx" #Адрес веб-сервер
table <ournet> { 10.4.0.0/16 }
table <nonet> const { 192.168.0.0/16, 169.254.0.0/16, 224.0.0.0/4, 240.0.0.0/4, 204.152.64.0/23, 224.0.0.0/3, 127.0.0.0/8 }
ifout1 = "em2"
ifvpn1 = "tun0"
ifuser = "{em1, vlan1, vlan15, vlan16, vlan17, vlan18, vlan19, vlan20, vlan21, vlan22, vlan23, vlan24, vlan25, vlan50, vlan100 }"
table <vpnsrv> const { tt.tt.tt.ttt,zz.zz.zzz.zz,rr.rrr.rr.rr }
table <usr> persist # Список разрешенных IP-адресов пользователей(для доступа в Интернет)
superports = "{ 53, 5555 ,22 ,137 ,138, 445 }"
table <admin> const { 10.4.100.125 }
table <abusive_hosts> persist
#Установки политик
set state-policy if-bound
set debug misc
set optimization normal
set block-policy drop
set require-order yes
set fingerprints "/etc/pf.os"
#Не фильтруем пакеты на кольцевом интерфейсе
set skip on lo0
scrub in all fragment reassemble min-ttl 15 max-mss 1400
scrub all random-id min-ttl 128 reassemble tcp
#Защита от спуффинга
antispoof log quick for $ifuser inet
antispoof log quick for lo0 inet
#Блокирум попытки сканирования NMAP
block in quick from any os NMAP
block in quick from any os NAST
#Запрещаю подключение к адресам "хулиганов"
block in quick from <abusive_hosts>
#Пропускаем на сервер только эти порты
pass quick on $ifuser proto { tcp, udp } from <ournet> to <cs> port $superports flags S/SA modulate state
#Разрешаем движение на кольцевом интерфейсе
pass in quick on lo0 all
pass out quick on lo0 all
#Блокируем сети, которых у нас нет и не должно быть в Интернете
block quick from any to <nonet> keep state
#Разрешаем ping во всех направлениях
pass quick inet proto icmp all icmp-type echoreq code 0 keep state
#Разрешаем подключение к нашему web-сервису
pass quick on $ifvpn1 proto tcp to $ipout1 port www flags S/SA keep state state (max-src-conn 100, max-src-conn-rate 15/5, overload <abusive_hosts> flush)
# Пропустить исходящие tcp, udp и icmp пакеты на внешнем интерфейсе.
# Сохранять состояния соединений.
pass out quick on $ifvpn1 proto { tcp, udp } all modulate state flags S/SA
#Поддержка VPN
pass quick proto tcp from <ournet> to <vpnsrv> port 1723
pass quick proto tcp from uuu.uuu.uuu.uu to <vpnsrv> port 1723
pass quick proto udp from <ournet> to <vpnsrv> port 1723
pass quick proto udp from uuu.uuu.uuu.uu to <vpnsrv> port 1723
pass quick from <vpnsrv> to <ournet>
pass quick from <vpnsrv> to uuu.uuu.uuu.uuu
pass quick proto gre from any to any
#Разрешить работу пользователям
pass quick from <usr> to any
pass quick from any to <usr>
#Запретить все остальное
block in quick all
block out quick all