Войти

Показать полную графическую версию : [решено] ipfw+nat


rip88
07-10-2013, 12:14
Всем доброго дня.
Имеется FreeBSD 9.1. Ядро скомпилировано с параметрами


options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=10
options IPFIREWALL_FORWARD
options IPFIREWALL_NAT
options LIBALIAS
options DUMMYNET
options IPFIREWALL_DEFAULT_TO_ACCEPTВ rc.conf прописано следующее:
gateway_enable="YES"
firewall_enable="YES"
firewall_type="/etc/ipfwnat"

Внешний интерфейс - em0, 195.*.*.*
Внутренний интерфейс - em1, 10.0.0.1

содержимое ipfwnat:

#запрещающие правила
add 1000 deny ip from any to 10.0.0.0/8 in via em0
add deny ip from any to 172.16.0.0/12 in via em0
add deny ip from any to 192.168.0.0/16 in via em0
add deny ip from any to 0.0.0.0/8 in via em0
add deny ip from any to 169.254.0.0/16 in via em0
add deny ip from any to 240.0.0.0/4 in via em0
add deny icmp from any to any frag
add deny log logamount 10 icmp from any to 255.255.255.255 in via em0
add deny log logamount 10 icmp from any to 255.255.255.255 out via em0

#разрешающие правила
add 30000 allow tcp from any to any via em1
add allow tcp from any to any established
add allow ip from me to any out via em0
add allow udp from any 53 to any in via em0
add allow icmp from any to any icmp_types 0,8,11

#собственно, NAT
nat 1 config log if em0 reset same_ports deny_in
add nat 1 ip from any to any via em0

#запрещаем все остальное
add 65000 deny from any to any in via em0Проблема вот в чем: при таком раскладе не работает нат, но работают правила файрвола. Если перенести строчки с натом в начало конфига - то начинает работать нат, и НЕ работает файрволл. Например:
Есть машина с адресом 10.0.0.2, в качестве шлюза указан 10.0.0.1 (локальный интерфейс FreeBSD), DNS - 8.8.8.8.
Если правило НАТ стоит в начале - то все отлично, 10.0.0.2 получает полный доступ в интернет. Но внешний адрес FreeBSD перестает пинговаться.
Если правило НАТ стоит в конце - то:
1) С 10.0.0.2 пингуется любой адрес в интернете по IP
2) С 10.0.0.2 не резолвятся адреса (nslookup ya.ru, google.com и т.д. ничего не дает, также как и пинг по имени)
3) Внешний адрес шлюза FreeBSD начинает пинговаться снаружи согласно правилу
add allow icmp from any to any icmp_types 0,8,11.

Как заставить нормально отрабатывать нат без использования divert, natd и т.д., несмотря на то, что ядро скомпилировано с поддержкой этих функций - хотелось бы разобраться без них.

rip88
07-10-2013, 16:56
Странно, но проблема решилась удалением разрешающих правил. Тема решена, наверное.




© OSzone.net 2001-2012