Victor Sudakov wrote: > > В ipfw с появлением ядерного nat конфигурация IMHO упростилась (не > надо думать про пакет, который появляется обратно из divert, ведь > действие "nat" при net.inet.ip.fw.one_pass=1 равносильно "permit"?), но всё > равно остаётся много непонятного. Вот взять простейший набор правил > для домашнего шлюза: > > nat 2 config if fxp0 deny_in > 00100 check-state > # in > 00200 allow tcp from any to me dst-port 22,6890-6999 in via fxp0 > 00300 nat 2 ip from any to any in via fxp0 > # out > 00400 nat 2 ip from 192.168.1.0/24 to any out via fxp0 > 00500 nat 2 ip from 10.0.0.0/8 to any out via fxp0 > 00600 allow ip from any to any out via fxp0 keep-state > 65535 allow ip from any to any > > С устройств, живущих в INSIDE сети, можно нормально ходить в Интернет > через NAT, т.е. это работает. А вот с самого шлюза > "telnet -s 192.168.1.1 ya.ru 80" не работает почему-то? Почему? По > моему разумению, оно должно уходить в Интернет через 400 правило и > возвращаться через 300-е.
Для того, чтобы ответить на "почему?", нужно заняться диагностикой. Для диагностики вполне себе существуют средства, начиная от счётчиков на правилах и заканчивая tcpdump. > Или вот это, я уже писал в другом письме. Имеем набор правил: > > router1# ipfw list > 00100 check-state > 00200 allow ip from any to any via lo0 > 00300 allow ip from any to any in via DMZ keep-state > 00500 allow ip from any to any out via OUTSIDE keep-state > 65535 deny ip from any to any > > Трафик уходит из ДМЗ наружу и возвращается, всё в порядке. > > Просто добавляем в 300 правило tag > > router1# ipfw list > 00100 check-state > 00200 allow ip from any to any via lo0 > 00300 allow tag 12 ip from any to any in via DMZ keep-state > 00500 allow ip from any to any out via OUTSIDE keep-state > 65535 deny ip from any to any > > и трафик ходить перестает. В логе видно, что *возвратный* трафик > доходит до конца правил и режется на out via DMZ. Зачем Вы пересказываете лог вместо того, чтобы его показать? > Почему так? См. выше про диагностику. > Соответствующее STATE правило по "ipfw -d" видно, только почему не > срабатывает? Зачем вы пересказываете вывод команды вместо того, чтобы просто его показать? -- LEFT-(UANIC|RIPE) JID: [email protected] PGP fingerprint: 1BCD 7C80 2E04 7282 C944 B0E0 7E67 619E 4E72 9280
