Чувствую, у меня мозг закипать начинает...))
Будем плясать от печки.
Пока у меня фаер работает должным образом только в stateless- варианте
его конфиг - #!/bin/sh
/sbin/ipfw -q -f flush
/sbin/ipfw add 100 allow all from any to any via lo
/sbin/ipfw add 200 allow all from any to any via iif
/sbin/ipfw add 300 divert natd ip from 192.168.0.0/24 to any out via oif
/sbin/ipfw add 350 divert natd ip from not 192.168.0.0/24 to x.x.x.x in via oif
/sbin/ipfw add 400 allow ip from x.x.x.x to any out via oif
/sbin/ipfw add 450 allow udp from any 53 to x.x.x.x in via oif
/sbin/ipfw add 500 allow udp from 192.168.0.0/24 to any 53 out via oif
/sbin/ipfw add 550 allow udp from any 53 to 192.168.0.0/24 in via oif
/sbin/ipfw add 600 allow tcp from 192.168.0.0/24 to any 80,53,25,110 out via oif
/sbin/ipfw add 650 allow tcp from any 80,53,25,110 to 192.168.0.0/24 in via oif
/sbin/ipfw add 700 allow icmp from any to any
#ну и всем все запретить
ну, либо чуть упростив, учитывая, что правило 400 разрешает исходящий ип не только самому роутеру, но и внутренним хостам, которых до этого обработал нат в правиле 300 -
#!/bin/sh
/sbin/ipfw -q -f flush
/sbin/ipfw add 100 allow all from any to any via lo
/sbin/ipfw add 200 allow all from any to any via iif
/sbin/ipfw add 300 divert natd ip from 192.168.0.0/24 to any out via oif
/sbin/ipfw add 350 divert natd ip from not 192.168.0.0/24 to x.x.x.x in via oif
/sbin/ipfw add 400 allow ip from x.x.x.x to any out via oif
/sbin/ipfw add 450 allow udp from any 53 to x.x.x.x in via oif
#/sbin/ipfw add 500 allow udp from 192.168.0.0/24 to any 53 out via oif
/sbin/ipfw add 550 allow udp from any 53 to 192.168.0.0/24 in via oif
#/sbin/ipfw add 600 allow tcp from 192.168.0.0/24 to any 80,53,25,110 out via oif
/sbin/ipfw add 650 allow tcp from any 80,53,25,110 to 192.168.0.0/24 in via oif
/sbin/ipfw add 700 allow icmp from any to any
#ну и всем все запретить
Так, соответственно, тоже работает.
Вроде бы, на мой скромный еще взгляд, для костяка stateless-конфига не сильно страшно.(но это без всяких запрещающих правил выше диверта)
НО
Как только я пытаюсь добавить динамические правила - все, самый настоящий болт
ну например для tcp
#!/bin/sh
/sbin/ipfw -q -f flush
/sbin/ipfw add 100 allow all from any to any via lo
/sbin/ipfw add 200 allow all from any to any via iif
/sbin/ipfw add 300 divert natd ip from 192.168.0.0/24 to any out via oif
/sbin/ipfw add 350 divert natd ip from not 192.168.0.0/24 to x.x.x.x in via oif
/sbin/ipfw add 400 allow ip from x.x.x.x to any out via oif
/sbin/ipfw add 450 allow udp from any 53 to x.x.x.x in via oif
/sbin/ipfw add 500 allow udp from 192.168.0.0/24 to any 53 out via oif
/sbin/ipfw add 550 allow udp from any 53 to 192.168.0.0/24 in via oif
/sbin/ipfw add 550 check-state
/sbin/ipfw add 600 allow tcp from 192.168.0.0/24 to any 80,53,25,110 out via oif keep-state
/sbin/ipfw add 700 allow icmp from any to any
#ну и всем все запретить
Нифига не работает (по tcp)
Ну вот где я ошибся???