И так. Дело чуть сдвинулось с точки, но не намного.
Начну снова с stateless-варианта -
blabla# ipfw show
00100 0 0 allow ip from any to any via lo
00120 35 3228 allow ip from any to any via iif
00200 3 128 divert 8668 ip from 192.168.0.0/24 to any out via oif
00250 8 376 divert 8668 ip from not 192.168.0.0/24 to x.x.x.x in via oif
00300 3 128 allow ip from x.x.x.x to any out via oif
00350 0 0 allow udp from any 53 to x.x.x.x in via oif
00400 0 0 allow udp from 192.168.0.0/24 to any dst-port 53 out via oif
00450 0 0 allow udp from any 53 to 192.168.0.0/24 in via oif
00500 0 0 allow tcp from 192.168.0.0/24 to any dst-port 80,25,110 via oif
00550 2 88 allow tcp from any 80,25,110 to 192.168.0.0/24 in via oif
00700 0 0 allow icmp from any to any
65535 6 288 deny ip from any to any
Здесь пустил телнет по 80 порту на yandex.ru
Видно, что -
1.пакет обработал нат в правиле 200
2. отработало 300
3. снова нат в правиле 250
4. ну и пропустило ответный tcp пакет 550
Тут понятно.
Но снова - приписываю одно динамическое правило, ребут, чистый список -
blabla# ipfw -d show
00100 0 0 allow ip from any to any via lo
00120 12 912 allow ip from any to any via iif
00200 0 0 divert 8668 ip from 192.168.0.0/24 to any out via oif
00250 2 104 divert 8668 ip from not 192.168.0.0/24 to x.x.x.x in via oif
00260 0 0 check-state
00300 0 0 allow ip from x.x.x.x to any out via oif
00350 0 0 allow udp from any 53 to x.x.x.x in via oif
00400 0 0 allow udp from 192.168.0.0/24 to any dst-port 53 out via oif
00450 0 0 allow udp from any 53 to 192.168.0.0/24 in via oif
00500 0 0 allow tcp from 192.168.0.0/24 to any dst-port 80,25,110 via oif keep-state
00700 0 0 allow icmp from any to any
65535 2 104 deny ip from any to any
Ну, почти чистый). Какая-то сволочь уже пытается прорваться снаружи в этом маленьком интервале.
Пускаю телнет по 80 порту на yandex.ru -
blabla# ipfw -d show
00100 0 0 allow ip from any to any via lo
00120 14 1008 allow ip from any to any via iif
00200 2 96 divert 8668 ip from 192.168.0.0/24 to any out via oif
00250 2 96 divert 8668 ip from not 192.168.0.0/24 to x.x.x.x in via oif
00260 0 0 check-state
00300 2 96 allow ip from x.x.x.x to any out via oif
00350 0 0 allow udp from any 53 to x.x.x.x in via oif
00400 0 0 allow udp from 192.168.0.0/24 to any dst-port 53 out via oif
00450 0 0 allow udp from any 53 to 192.168.0.0/24 in via oif
00500 0 0 allow tcp from 192.168.0.0/24 to any dst-port 80,25,110 via oif keep-state
00700 0 0 allow icmp from any to any
65535 2 96 deny ip from any to any
И вот он болт в чистом виде.
До правила 500 пакет просто не доходит, соответственно ответное правило не генерируется.
А все из-за правила 300. И, вроде, все логично, но как мне в таком случае прописать динамику для локальной сети???
Вот тут моя мысль пока зашла в тупик..