Tomsk Sysadmins Forum

Unix => Администрирование => Topic started by: Petya on March 06, 2008, 12:47:42

Title: Трабл с ipnat + ipfw
Post by: Petya on March 06, 2008, 12:47:42
Не работает данная связка. Не могу понять в чем прокол. ipfw show регистрирует прохождение пакетов через разрешающее правило. tcpdump’ом видно входящие пакеты, но исходящих нет. Наверное не работает ipnat? Но почему? Сведующие люди посмотрите, может какаято совершенно очевидная ошибка...  

Настройки следующие:

В ядре
Code: [Select]
options         IPFIREWALL
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=5
options         IPFIREWALL_FORWARD
options         DUMMYNET
options         HZ=1000
В rc.conf
Code: [Select]
kern_securelevel="0"
kern_securelevel_enable="NO"
gateway_enable="YES"
firewall_enable="YES"
firewall_script="/etc/rc.firewall"
ipnat_enable="YES"
ipnat_rules="/etc/ipnat.rules"
Правила ipnat и ipfw для простоты порезаны и выглядят пока так, соответственно.
Code: [Select]
map rl1 192.168.0.0/24 -> внешний ip
Code: [Select]
cmd="/sbin/ipfw -q add"
/sbin/ipfw -q -f flush
${cmd} 50 allow all from any to any
Title: Трабл с ipnat + ipfw
Post by: anovo on March 06, 2008, 13:49:47
Если такой несложный конфиг, то может использовать "классический" Handbook для настройки файера и ната: http://freebsd.tusur.ru/doc/en_US.ISO8859-...twork-natd.html (http://freebsd.tusur.ru/doc/en_US.ISO8859-1/books/handbook/network-natd.html). Эта конфигурация точно рабочая и делает то же, что тебе требуется, правда, используя natd вместо ipnat.
Title: Трабл с ipnat + ipfw
Post by: Petya on March 06, 2008, 14:48:13
Quote from: anovo
Эта конфигурация точно рабочая и делает то же, что тебе требуется, правда, используя natd вместо ipnat.
Не... этого не надо, спасибо. У меня имеется полноценно работающая уже больше полу года конфигурация ipnat+ipf. Хочу опробовать именно связку ipnat + ipfw + dummynet в познавательных целях + обкатать немного на деле, чтоб можно было ориентироваться что для чего лучше.
З.Ы.: я конечно в курсе, для хоум или оффисе использования нет разницы ipnat или natd... Но принципиально не понимаю зачем вообще столь примитивную операцию (NAT) делать на уровне демона (про natd). Посему последний не хочу использовать.... не знаю правильно или нет поступаю... но пока так есть.
Title: Трабл с ipnat + ipfw
Post by: anovo on March 06, 2008, 15:23:09
Quote
Хочу опробовать именно связку ipnat + ipfw + dummynet в познавательных целях
Посмотри тогда сюда http://www.opennet.ru/base/net/ipfw_multiroute.txt.html (http://www.opennet.ru/base/net/ipfw_multiroute.txt.html)
ПС. Не вижу defaultrouter в rc.conf.
Title: Трабл с ipnat + ipfw
Post by: Petya on March 06, 2008, 15:42:13
Quote from: anovo
Посмотри тогда сюда http://www.opennet.ru/base/net/ipfw_multiroute.txt.html (http://www.opennet.ru/base/net/ipfw_multiroute.txt.html)
ПС. Не вижу defaultrouter в rc.conf.
Не.. это отпадает. Там он имеется. Статейку эту уже читал.  Собственно практически по ней и делал.
У меня есть такой вариант возможной ошибки. Может в ядро еще должен быть вкомпилен IPFILTER, т.к. если не ошибаюсь ipnat является так сказать его "частью", или он должен быть загружен модулем?
Title: Трабл с ipnat + ipfw
Post by: nuclight on March 07, 2008, 11:03:30
Quote from: Petya
Не... этого не надо, спасибо. У меня имеется полноценно работающая уже больше полу года конфигурация ipnat+ipf. Хочу опробовать именно связку ipnat + ipfw + dummynet в познавательных целях + обкатать немного на деле, чтоб можно было ориентироваться что для чего лучше. :)
З.Ы.: я конечно в курсе, для хоум или оффисе использования нет разницы ipnat или natd... Но принципиально не понимаю зачем вообще столь примитивную операцию (NAT) делать на уровне демона (про natd). Посему последний не хочу использовать.... не знаю правильно или нет поступаю... но пока так есть. :)

Два файрвола сразу использовать - лишний геморрой себе на задницу. Тем более, что ipfilter/ipnat уже deprecated и со временем будет вынесен из новых версий FreeBSD. Касательно natd - в 6.x есть другие средства для ядерного ната, если критична производительность. Ну и сам NAT - отнюдь не примитивная операция. Например, ipf/pf не умеют натить сложные протоколы, заглядывая внутрь пакета (а natd умеет) - это значит, что к ним нужно городить костыли в виде отдельных демонов. Разделение процессов - основа надежности (см. тему микроядра), поэтому везде, где не нужна производительность (низкая нагрузка на ADSL и т.п.), использование natd - вполне нормальный вариант.