Страница 1 из 2
Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-05 19:11:56
Призрак
Здравствуйте, уважаемые!
Поднял NAT на FreeBSD 8.3, решил настроить его с IPFW. И весь мозг уже себе сломал, но никак не могу заставить заработать Интернет на FreeBSD 8.3 с NAT.
Конфигурация сети:
Интернет провайдер Ростелеком, подключен через роутер D-Link Dir300/NRU IP адреса Ростелеком выдает автоматически при подключении. На самом роутере IP адрес
Мой компьютер подключен к роутеру и имеет следующие сетевые настройки:
Код: Выделить всё
IP 192.168.1.2
mask 255.255.255.0
Основной шлюз 192.168.1.1
DNS провайдера 212.120.160.130
FreeBSD развернута на виртуальной машине VirtualBox на моем компьютере, тип подключения сетевой мост.
Настройки сетевых карт FreeBSD следующие: (вторую создавал для NAT чтобы подключать клиентов)
Код: Выделить всё
em0 (смотрит в Интернет)
IP 192.168.1.4
mask 255.255.255.0
em1 192.168.10.1(смотрит внутрь)
mask 255.255.255.0
DNS для обеих карт установил в
До пересборки ядра сеть работала прекрасно, все пинговалось, обновлялись порты. Но после пересборки даже при добавлении правил IPFW нет пинга кроме как на собственные адреса (192.168.1.4, 192.168.10.1), Интернета нет вообще. При попытке пинговать DNS провайдера высвечивается надпись no route to host при попытке пинговать мой компьютер (192.168.1.2) и роутер (192.268.1.1) высвечивается надпись host is down. При пробном наборе команды portsnap fetch update в журнале security появляется следующая надпись:
Код: Выделить всё
ipfw 800 deny UDP 192.468.1.4:(случайный порт типа 44888) 212.120.160.130:53 out via em0
Опции ядра:
Код: Выделить всё
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPFIREWALL_NAT
options LIBALIAS
options ROUTETABLES=2
options DUMMYNET
options HZ="1000"
options IPSEC
options IPSEC_DEBUG
device crypto
Содержимое rc.conf:
Код: Выделить всё
gateway_enable="YES"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_script="/etc/rc.ipfw"
ifconfig_em1="inet 192.168.10.1 netmask 255.255.255.0"
ifconfig_em0="inet 192.168.1.4 netmask 255.255.255.0"
defaultrouter="192.168.1.1"
hostname="home.test"
Содержимое rc.ipfw
Тут у меня было 2 варианта - 1 вариант рабочий с сервера без NAT просто я добавлял к нему настройки NAT (выделены пробелами), второй чисто только с NAT
1 вариант:
Код: Выделить всё
#!/bin/sh
ipfw -q -f flush
inetif="em0"
lanif="em1"
cmd="ipfw -q -add"
ks="keep-state"
$cmd check-state
$cmd deny all from any to any frag
$cmd deny all from any to any established
$cmd allow ip from any to any via $lanif
$cmd allow all from any to any via lo0
$cmd allow icmp from any to any icmptypes 0, 3, 8, 11
$cmd allow tcp from any to any out via $inetif setup $ks
$cmd allow udp from any to any out via $inetif $ks
ipfw nat 1 config log if $inetif reset same_ports
$cmd nat 1 ip from any to 192.168.1.4 via $inetif
$cmd deny ip from any to any not verrevpath in
$cmd deny log ip from any to any
2 вариант:
Код: Выделить всё
#!/bin/sh
ipfw -q -f flush
inetif="em0"
lanif="em1"
cmd="ipfw -q -add"
ks="keep-state"
ipfw nat 1 config log if $inetif reset same_ports
$cmd nat 1 ip from any to 192.168.1.4 via $inetif
$cmd deny ip from any to any not verrevpath in
$cmd deny log ip from any to any
При обоих вариантах пинг все равно не проходит ни в ту ни в другую сторону, и Интернета нету.
Помогите пожалуйста решить проблему.
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-05 19:52:14
Призрак
Ошибся с названием роутера - не D-Link DIR-300/NRU а D-Link DSL-2640/U/BRU/D, приношу свои извинения!
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-05 20:37:35
шёл_мимо
/etc/resolv.conf - чего там?
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-05 20:47:29
Призрак
шёл_мимо писал(а):/etc/resolv.conf - чего там?
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-05 22:43:27
шёл_мимо
ipfw nat 1 config log if $inetif reset same_ports
$cmd nat 1 ip from any to 192.168.1.4 via $inetif
заменить на
Код: Выделить всё
ipfw nat 1 config log ip $inetif reset same_ports
$cmd nat 1 ip from any to any via $inetif
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 5:30:11
Призрак
шёл_мимо писал(а):ipfw nat 1 config log if $inetif reset same_ports
$cmd nat 1 ip from any to 192.168.1.4 via $inetif
заменить на
Код: Выделить всё
ipfw nat 1 config log ip $inetif reset same_ports
$cmd nat 1 ip from any to any via $inetif
Пробовал, с тем же успехом. Кстати, при варианте №1 правил IPFW со строчками
Код: Выделить всё
$cmd allow log tcp from any to any out via $inetif setup $ks
$cmd allow log udp from any to any out via $inetif $ks
при пробном наборе команды portsnap fetch update в журнале security появляется следующая надпись:
Код: Выделить всё
ipfw 800 Accept UDP 192.468.1.4:(случайный порт типа 44888) 212.120.160.130:53 out via em0
то есть обращение уже разрешено! Да только все равно нету толку, Интернет отсутствует. Судя по записям в этом логе разрешен и пинг, то есть тоже написано Accept при правиле:
Код: Выделить всё
$cmd allow log icmp from any to any icmptypes 0, 3, 8, 11
Но к бестолку. Все равно высвечивает при пинге для 192.168.1.1 host is down а для 212.120.160.130 no route to host. Явно я делаю что-то неправильно либо не работает NAT.
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 9:05:00
Гость
Лень все читать, но у меня были и остались проблемы с натом на дир пробовал 655, 320 я тоже новичек не исключаю кривые руки, все же грешу на длинк. Как вариант попробовать напрямую.
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 9:18:21
Призрак
Гость писал(а):Лень все читать, но у меня были и остались проблемы с натом на дир пробовал 655, 320 я тоже новичек не исключаю кривые руки, все же грешу на длинк. Как вариант попробовать напрямую.
Подумайте, как я могу грешить на оборудование, если до пересборки ядра и включения туда ipfw и nat все работало отлично? Я понимаю что у меня кривые руки, вот и задал вопрос. Между тем, у меня на рабочем сервере ipfw пашет на отлично (без NAT, напрямую к провайдеру), там развернуты FTP и WEB и отлично работают, правила ipfw выполняются. Я даже мента поставил (Fail2Ban) для того, чтобы сбрасывать паразитов в клетку. Справляется на отлично.
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 10:11:13
snorlov
У меня, правда в другой ситуации, nat и dns не хотели трудится, когда фря в виртуалбоксе крутилась, экспериментировал... Правда потом все заработало, но какие конкретно правила крутил уже не вспомню, а та же конфигурация на живой машине взлетела без танец с бубнами...
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 10:19:02
Shuba
Сделай
и
и кинь сюда результат
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 11:06:22
sadchok
Начни все с начала.
Отключи фаервол, на сервере должен появится инет.
В настройках D-Link пропиши маршрут до подсети 192.168.10.0 , в ней должен появится инет (через NAT на D-Link).
Далее врубай фаервол и добавляй правила, отслеживай как ходят пакеты.
Делай все пошагово, так проще разгребать.
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 12:01:07
sadchok
2 вариант:
Код: Выделить всё
#!/bin/sh
ipfw -q -f flush
inetif="em0"
lanif="em1"
cmd="ipfw -q -add"
ks="keep-state"
ipfw nat 1 config log if $inetif reset same_ports
$cmd nat 1 ip from any to 192.168.1.4 via $inetif
$cmd deny ip from any to any not verrevpath in
$cmd deny log ip from any to any
Для интерфейса em1 у вас действует правило deny.
Попробуйте прописать allow ip from any to any via $lanif.
Для NAT заменить nat 1 ip from any to 192.168.1.4 via $inetif на nat 1 ip from any to any via $inetif
Ну и пропустить пакеты для себя.
Код: Выделить всё
$cmd check-state
$cmd allow ip from me to any keep-state
Код: Выделить всё
#!/bin/sh
ipfw -q -f flush
inetif="em0"
lanif="em1"
cmd="ipfw -q -add"
$cmd check-state
$cmd allow ip from me to any keep-state
$cmd allow ip from any to any via $lanif
ipfw nat 1 config log if $inetif reset same_ports
$cmd nat 1 ip from any to any via $inetif
$cmd deny ip from any to any not verrevpath in
$cmd deny log ip from any to any
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 16:17:30
vintovkin
tcpdump-ом подебажте, посмотрите где пакеты дропаются ...
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 17:37:48
Призрак
Shuba писал(а):Сделай
и
и кинь сюда результат

- Вывод команды ipfw -t show
- ipfw -t show.png (11.29 КБ) 2711 просмотров

- Вывод команды ipfw nat 1 show config
- ipfw nat 1 show config.png (2.89 КБ) 2711 просмотров
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 17:53:42
Призрак
sadchok писал(а):Начни все с начала.
Отключи фаервол, на сервере должен появится инет.
В настройках D-Link пропиши маршрут до подсети 192.168.10.0 , в ней должен появится инет (через NAT на D-Link).
Далее врубай фаервол и добавляй правила, отслеживай как ходят пакеты.
Делай все пошагово, так проще разгребать.
IPFW впаян в ядро, отключить его так невозможно, разве что оттуда выпаивать.
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 18:02:52
Призрак
sadchok писал(а):2 вариант:
Код: Выделить всё
#!/bin/sh
ipfw -q -f flush
inetif="em0"
lanif="em1"
cmd="ipfw -q -add"
ks="keep-state"
ipfw nat 1 config log if $inetif reset same_ports
$cmd nat 1 ip from any to 192.168.1.4 via $inetif
$cmd deny ip from any to any not verrevpath in
$cmd deny log ip from any to any
Для интерфейса em1 у вас действует правило deny.
Попробуйте прописать allow ip from any to any via $lanif.
Для NAT заменить nat 1 ip from any to 192.168.1.4 via $inetif на nat 1 ip from any to any via $inetif
Ну и пропустить пакеты для себя.
Код: Выделить всё
$cmd check-state
$cmd allow ip from me to any keep-state
Код: Выделить всё
#!/bin/sh
ipfw -q -f flush
inetif="em0"
lanif="em1"
cmd="ipfw -q -add"
$cmd check-state
$cmd allow ip from me to any keep-state
$cmd allow ip from any to any via $lanif
ipfw nat 1 config log if $inetif reset same_ports
$cmd nat 1 ip from any to any via $inetif
$cmd deny ip from any to any not verrevpath in
$cmd deny log ip from any to any
Это конечно верно, но все бесполезно. Вот вывод после команды ipfw show:

- Вывод команды ipfw show
- ipfw show.png (5.55 КБ) 2707 просмотров
Тут видно, что разрешается все несомненно, и после набора команды portsnap fetch update, и после команды ping 192.168.1.1, что подтверждается вот этим:

- Вывод команды tail /var/log/security
Но видно, что NAT мертв...
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 18:40:37
оавшв
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 19:26:08
Призрак
Все перепробовал ничего не помогает. При выводе команды
высвечивается просто
и никакой информации. Что еще надо я не понимаю вообще. У меня сервер без NAT с IPFW с WEB и FTP пашет только так, а тут хоть тресни, ни в какую не хочет.
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 19:54:19
vintovkin
с точки зрения теории, нат и фаервол это два разных механизма , у лиса куча статей хороших на сайте есть для этого дела, вы там были???
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 20:42:10
Призрак
vintovkin писал(а):с точки зрения теории, нат и фаервол это два разных механизма , у лиса куча статей хороших на сайте есть для этого дела, вы там были???
Конечно был, а как же! Кстати, статьи я не сказал бы что полезные, я настраивал и IPFW и WEB сервер и FTP не по этим статьям, хотя конечно кое что и взял. Перепробовал все, что написано в статьях по NAT бесполезно, ничего не работает нормально.
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 21:15:09
BirdGovorun
http://www.lissyara.su/articles/freebsd ... /ipfw_nat/ по этой статье за 10 минут
В rc.conf
Код: Выделить всё
gateway_enable="YES"
defaultrouter="ale0"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_nat_interface="ale0"
firewall_flags="unreg_only same_ports unregistered_only"
firewall_script="/usr/local/etc/rc.d/ipfw_rules"
ipfw_rules
Код: Выделить всё
#!/bin/sh
ipfw -q -f flush
ipfw nat 123 config log if ale0
ipfw add nat 123 all from any to any via ale0
ipfw -q add 1100 pass all from any to any
Раздаю интернет компу жены, через свой, до этого был natd.
Заработало без проблем.
Провайдер выдаёт динамический IP.
Код: Выделить всё
ale0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=c319a<TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MCAST,WOL_MAGIC,VLAN_HWTSO,LINKSTATE>
ether 00:1b:fc:fe:8a:9c
inet 77.120.146.13 netmask 0xfffffe00 broadcast 77.120.147.255
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
fxp0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=2009<RXCSUM,VLAN_MTU,WOL_MAGIC>
ether 00:d0:b7:0b:2e:6f
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
inet6 fe80::2d0:b7ff:fe0b:2e6f%fxp0 prefixlen 64 scopeid 0xc
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
Код: Выделить всё
ipfw show
00100 4095 2200469 nat 123 ip from any to any via ale0
01100 2532 1415017 allow ip from any to any
65535 20 1740 deny ip from any to any
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-06 21:21:02
BirdGovorun
Да вот ещё:
Код: Выделить всё
ipfw nat 123 show
nat 123: icmp=0, udp=18, tcp=5, sctp=0, pptp=0, proto=0, frag_id=0 frag_ptr=0 / tot=23
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-07 8:35:02
Проходимец
Влезу в чужую тему, да простит меня автор. Пробовал натом пробросить в интернет опенвпн и вот лог с DIRа
Код: Выделить всё
DNS relay ALG rejected packet from 10.10.100.2:59210 to 87.253.13.14:53
[INFO] Mon Oct 22 15:47:15 2012 Dropped packet from 10.10.100.2 to 87.253.13.14 (IP protocol 17) as unable to create new session
Или на Дире надо маршрут прописать. Это я к тому что без ната все работает, посмотрите логи в роутере.
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-07 8:52:33
Залётныё
Проходимец писал(а):Влезу в чужую тему, да простит меня автор. Пробовал натом пробросить в интернет опенвпн и вот лог с DIRа
Код: Выделить всё
DNS relay ALG rejected packet from 10.10.100.2:59210 to 87.253.13.14:53
[INFO] Mon Oct 22 15:47:15 2012 Dropped packet from 10.10.100.2 to 87.253.13.14 (IP protocol 17) as unable to create new session
Или на Дире надо маршрут прописать. Это я к тому что без ната все работает, посмотрите логи в роутере.
У ТС НАТ совсем не работает, маршруты это после того, когда заработает.
Re: Ядерный NAT + IPFW проблема с выходом в Интернет.
Добавлено: 2012-11-07 9:17:09
Проходимец
Может поможете с маршрутом?! ИП роутера 192.168.0.1 ип тачки с впн 192.168.0.2 подсеть опенвпн 10.10.100.0/24