Serge Negodyuck wrote: > > > > Где документировано, что произойдет с пакетом, для которого нет записи > > в таблице трансляции, при отсутствии deny_in? В natd возможны были > > разные варианты в зависимости от значения -target_address, а в ядерном > > nat оно как? > > > > И второй вопрос, наверное связанный с первым. Есть набор правил для > > входящего трафика > > > > ipfw nat 2 config if $OUTSIDE deny_in > > ipfw add 10 check-state > > ipfw add 20 allow tcp from any to me $SERVICES in via $OUTSIDE > > ipfw add 30 allow icmp from any to me in via $OUTSIDE > > ipfw add 40 nat 2 ip from any to any in via $OUTSIDE > > > > Из него видно, что если из внутренней сети был ICMP запрос наружу, то > > ответ на этот запрос в NAT не попадет. А если убрать 30-е правило, то > > сам роутер останется без входящего ICMP. > > > > Как сделать правильно и красиво? > > > > Наиболее изящным решением было бы иметь разные адреса для трансляции и > > для внешнего интерфейса, но "белый" адрес есть только один. > > > > ЗЫ Для исходящего трафика правила примерно такие > > > > ipfw add nat 2 ip from $RFC1918 to any out via $OUTSIDE > > ipfw add allow ip from any to any out via $OUTSIDE keep-state > > > > Этому багу года три, > исправлено летом в 8.2-STABLE (т.е. в будущем 8.3-RELEASE), 9.0 > > http://www.freebsd.org/cgi/query-pr.cgi?pr=129093 > http://www.freebsd.org/cgi/query-pr.cgi?pr=122109 > http://www.freebsd.org/cgi/query-pr.cgi?pr=157379
Насколько я понял из приведенных PR, до исправления бага поведение ядерного nat такое, как будто deny_in всегда включен. Но мне осталось непонятно, уже после исправления бага что будут делать с пакетом, для которого нет записи в таблице трансляции, при отсутствии deny_in? В natd возможны были разные варианты в зависимости от значения -target_address, а в ядерном nat нет опции target_address. > Варианты решения: или обновляться, или отказаться от ядерного nat в > пользу других. Как вариант наверное еще можно попробовать собственные пакеты тоже через NAT пропускать, чтобы state в nat создавался, а keep-state/check-state выкинуть. Я попробую и отпишусь тут. -- Victor Sudakov, VAS4-RIPE, VAS47-RIPN sip:[email protected]
