Страница 1 из 2
ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 9:14:10
mediamag
Установил вчера ядерный нат. Собрал ядро
Код: Выделить всё
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"
Добавил в rc.conf
Код: Выделить всё
firewall_nat_enable="YES"
firewall_nat_interface="внешняя сетевая"
И нат отлично запахал. (юзеры из локалки в инет выходят) Но вот, крутящийся на шлюзе mpd5 и ddclient (dyndns) и ssh стали из мира не доступны. (к mpd не достучатся, ddclient не может синхронизироваться с сайтом dyndns.org). Добавил правило
и начал смотреть логи. Увидел, что при коннекте из мира к mpd в логах идёт такое
Код: Выделить всё
ipfw: 1 Accept TCP 91.193.70.161:49323 10.0.1.2:1723 in via xl0
ipfw: 1 Accept TCP 10.0.1.2:1723 91.193.70.161:49323 out via xl0
НО!!!..в фаерволе у меня правила, разрешающие это хождение есть
Код: Выделить всё
$fwcmd add 6100 allow tcp from any to $extip 1723 in via $extif setup
$fwcmd add 6110 allow tcp from $extip 1723 to any out via $extif setup
но они находятся ниже правила с ядерным натом. Если я их поставлю выше ната и убираю параметр setup, то mpd чётко работает. Но я этого делать не хочу, так как теряю параметр setup (так же безопаснее). Когда стоял обычный natd, таких проблем не было. Подскажите, как на ядерном нате разрешать подобные сервисы извне (mpd, ddclient, ssh, mail etc.) не теряя при этом параметр setup. Мой конфиг правил представлен ниже с минимальными параметрами.
Код: Выделить всё
$fwcmd add 1600 deny ip from 0.0.0.0/8 to any in via $extif
#----allow all lo0 traffic----------------------
$fwcmd add 1000 allow ip from any to any via lo0
#----deny loopback-----------------------------
$fwcmd add 1100 deny ip from any to 127.0.0.0/8
$fwcmd add 1200 deny ip from 127.0.0.0/8 to any
#----NAT---------------------------------------------
ipfw nat 1 config log if xl0 reset same_ports deny_in
$fwcmd add 3000 nat 1 ip4 from any to any via $extif
#---check-state------------
$fwcmd add 3900 check-state
#---allow all LAN traffic----------------------------------
$fwcmd add 4200 allow ip from any to $intnet in via $intif
$fwcmd add 4300 allow ip from $intnet to any out via $intif
#----allow all established tcp connections-----------
$fwcmd add 4400 allow tcp from any to any established
#----allow SSH-------------------------------------------------------------------------
$fwcmd add 5000 allow tcp from any to $extip 35665 in via $extif setup limit src-addr 4
#----allow port 1723 (for mpd5 clients)------------------------------------------------
$fwcmd add 6100 allow tcp from any to $extip 1723 in via $extif setup
$fwcmd add 6110 allow tcp from $extip 1723 to any out via $extif setup
#----allow GRE traffic for mpd5-----------
$fwcmd add 6200 allow gre from any to any
#----block other established tcp connections----------------------
${fwcmd} add 6600 deny tcp from any to $extip in via $extif setup
#----allow established tcp connections from ext IP to ext interface-----------
${fwcmd} add 6700 allow tcp from $extip to any out via $extif setup keep-state
${fwcmd} add 6800 allow tcp from any to $extip in via $intif setup
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 9:28:15
EARL
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 9:52:16
mediamag
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 9:56:28
EARL
Код: Выделить всё
ipfw nat 1 config log if xl0 reset same_ports deny_in
В этой строчке параметр deny_in запрещает все входящие пакеты, если для них небыло найдено записей в таблице трансляций, поэтому у вас сеть за шлюзом работает через nat, а к самому шлюзу доступа нет. Уберите deny_in и посмотрите, что будет без него.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 9:57:26
mediamag
Пробовал - не помогло
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 10:09:24
mediamag
А нет....помогло..НО!!!! только когда я реснул шлюз, а не перечитал правила)))))....блин....+1 подводный камень..ну, будем знать))) спасибо))
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 10:12:55
EARL
Перезагрузка правил не всегда помогает, т.к. замечал подобный глюк. Просто нужно делать
потом заново настраивать нат
иначе новые значения не всегда применяются
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 10:21:53
mediamag
тоесть вверху конфига можно просто добавить эту строку...ага спасибо.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 10:30:53
EARL
можно, но минус тут в том, что при перезагрузке правил фаервола в таком случае некоторые уже установленные сессии разрываются.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 19:22:23
mediamag
Хм...по статье с сайта не удаётся сделать проброс портов.....
Код: Выделить всё
ipfw nat 1 config log if xl0 reset same_ports redirect_port tcp 192.168.0.2:80 80
Такое впечатление что не хватает каких то правил.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 22:33:08
mediamag
РЕШЕНО...кому интересно ниже ната нужно добавить 2 правила:
Код: Выделить всё
allow tcp from any to 192.168.0.2 dst-port 80 via xl0
allow tcp from any to 192.168.0.2 dst-port 80 via rl0
Вопрос - кто знает....как правильно, прописывать конфиг ната и редирект в одном правиле или нат отдельно, а редирект отдельно???? Гуглил и в разных примерах по разному.
я пока сделал всё в одном
Код: Выделить всё
ipfw nat 1 config log if xl0 reset same_ports redirect_port tcp 192.168.0.2:80 80
$fwcmd add 3100 nat 1 ip4 from any to any via $extif
а как правильно???
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-28 22:42:24
EARL
mediamag писал(а):
Вопрос - кто знает....как правильно, прописывать конфиг ната и редирект в одном правиле или нат отдельно, а редирект отдельно???? Гуглил и в разных примерах по разному.
я пока сделал всё в одном
Код: Выделить всё
ipfw nat 1 config log if xl0 reset same_ports redirect_port tcp 192.168.0.2:80 80
$fwcmd add 3100 nat 1 ip4 from any to any via $extif
а как правильно???
Правильно так, как у тебя - нат и редирект прописываются в одном правиле. По другому никак не сделаешь.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-29 9:31:21
mediamag
я тут на форуме встречал готовый конфиг, так там каждый редирект отдельно и нат отдельно.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-05-29 9:37:14
EARL
И всё это работает? Я что-то с трудом в это верю
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-12 9:09:10
mediamag
Чтобы не плодить темы - не могу понять кое что: хочу дать ядерный нат не всей локалке а определенной таблице. В натд это делалось просто, а вот в ядрёном нате не могу понять.
Делал так
Код: Выделить всё
ipfw nat 1 config log if $extif reset same_ports
$fwcmd add 3100 nat 1 ip4 from "table(1)" to any in via $extif
$fwcmd add 3100 nat 1 ip4 from any to "table(1)" out via $extif
и так
Код: Выделить всё
ipfw nat 1 config log if $extif reset same_ports
$fwcmd add 3100 nat 1 ip4 from "table(1)" to any out via $extif
$fwcmd add 3100 nat 1 ip4 from any to "table(1)" in via $extif
не помогает. Подскажите пожалуйста, как же всё таки можно разрешить определенной таблице выход по нату? Заранее спасибо.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-12 9:42:46
terminus
mediamag писал(а):Чтобы не плодить темы - не могу понять кое что: хочу дать ядерный нат не всей локалке а определенной таблице. В натд это делалось просто, а вот в ядрёном нате не могу понять.
Делал так
Код: Выделить всё
ipfw nat 1 config log if $extif reset same_ports
$fwcmd add 3100 nat 1 ip4 from "table(1)" to any in via $extif
$fwcmd add 3100 nat 1 ip4 from any to "table(1)" out via $extif
и так
Код: Выделить всё
ipfw nat 1 config log if $extif reset same_ports
$fwcmd add 3100 nat 1 ip4 from "table(1)" to any out via $extif
$fwcmd add 3100 nat 1 ip4 from any to "table(1)" in via $extif
не помогает. Подскажите пожалуйста, как же всё таки можно разрешить определенной таблице выход по нату? Заранее спасибо.
Код: Выделить всё
ipfw nat 1 config log if $extif reset same_ports
$fwcmd add 3100 nat 1 ip4 from "table(1)" to any out via $extif
$fwcmd add 3101 allow ip4 from me to any out via $extif
$fwcmd add 3102 nat 1 ip4 from any to me in via $extif
$fwcmd add 3103 allow ip4 from any to "table(1)" in via $extif
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-12 17:57:36
mediamag
спасибо за подсказку - попробую
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-13 10:05:21
mediamag
Меня смутили вот эти два правила
Код: Выделить всё
$fwcmd add 3101 allow ip4 from me to any out via $extif
$fwcmd add 3103 allow ip4 from any to "table(1)" in via $extif
Мне кажется что я этими правилами разрешаю слишком много...не полезет ли через них левый трафик?? Например первое правило разрешает исходящий коннект от шлюза в мир (с этим всё ясно и это всегда разрешено в конфигах...даже в хендбуке) Второе же правило разрешает любые входящие коннекты по любым портам из мира на айпи в 1 таблице. Не слишком ли радикально?
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-13 10:45:49
terminus
Как у вас сейчас настроен параметр sysctl one_pass?
Настройте нат с директивой deny_in тогда никакой трафик снаружи через нат внутрь не пройдет, если не сделать для него redirect_port.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-13 10:57:27
mediamag
У меня крутится на шлюзе мпд 5 если я делаю deny_in то к мпд более не достучаться.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-13 11:10:43
mediamag
И только что высянил, что сквид тоже не может работать..по прокси инет не идёт с параметром deny_in
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-13 11:12:11
terminus
Второе же правило разрешает любые входящие коннекты по любым портам из мира на айпи в 1 таблице. Не слишком ли радикально?
IP адреса из table(1) появятся в пакете только после того как он пройдет через нат. Когда выставлен параметр deny_in то левый трафик не пройдет, а только тот который был инициирован клиентом из table(1).
На счет "net.inet.ip.fw.one_pass: 0" - нет проблем, правила 3101 и 3103 как раз это учитывют.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-13 11:13:24
terminus
слишком много всего - надо шаманить с порядком правил (ставить нат последним?).
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-13 11:28:40
mediamag
я попробую сделать редирект порта 3128 в локалку на определенную таблицу...с мпд поступлю так же (сделаю редирект на внутренюю сетевую порта 1723). ПОка что не хочется двигать нат туда-сюда.
Re: ядерный нат (ipfirewall nat) проблемы
Добавлено: 2010-07-14 11:08:46
mediamag
хм...не могу понять, как, при параметре deny_in, заставить работать сквид. Вот что было до включения deny_in
Код: Выделить всё
#----proxy server SQUID allow-----------------------------------
$fwcmd add 2900 fwd 127.0.0.1,3128 tcp from "table(3)" to any 80
#----NAT---------------------------------------------
ipfw nat 1 config log if $extif reset same_ports
$fwcmd add 3100 nat 1 ip4 from any to any via $extif
Так сквид+ядерный нат пашет.
Теперь ставлю
Код: Выделить всё
ipfw nat 1 config log if $extif reset same_ports deny_in
и сквид перестаёт пахать. Есть ли у кого то соображения почему так происходит и как это дело починить? Предполагаю, что параметром deny_in закрываю любые конекты к внешней сетевой из мира в локалку.