IPFW+NAT+DHCP+VLAN

Настройка сетевых служб, маршрутизации, фаерволлов. Проблемы с сетевым оборудованием.
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Гость
проходил мимо

IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение Гость » 2012-11-20 13:29:06

Доброго времени суток!
Прошу помощи с настройкой IPFW + NAT
Проблема:
Есть локалка, клиентская сеть через DHCP (isc DHCP), выход к провайдеру.
Локалка работает, клиентская сеть тоже, НО! С клиентской сети пингуется только Шлюз провайдера и не шагу дальше, кроме 1 пакета с измененным ip адресом в совершенно другом диапазоне. Думал icmp провайдер рубит, но нет… в принципе ничего не качается.
Предварительно:
Система:
FreeBSD WiFiRouterEXPO.domain.ru 9.0-RELEASE FreeBSD 9.0-RELEASE
Ядро:

Код: Выделить всё

include GENERIC
ident   ROUTERWIFI
nooptions       INET6
options         IPFIREWALL
options         IPFIREWALL_DEFAULT_TO_ACCEPT
options         IPFIREWALL_FORWARD
options         IPFIREWALL_VERBOSE
options         IPFIREWALL_VERBOSE_LIMIT=100
options         IPFIREWALL_NAT
options         LIBALIAS
options         DUMMYNET
options         HZ="1000"
options         DEVICE_POLLING
options         IPDIVERT
содержимое /etc/rc.conf

Код: Выделить всё

hostname="WiFiRouterEXPO.domain.ru"
ifconfig_em0_name="iflan0"
ifconfig_em2_name="ifnat0"
ifconfig_iflan0="inet 192.**.**.13 netmask 255.255.252.0"
ifconfig_ifnat0="inet 10.67.0.1 netmask 255.255.0.0"
ifconfig_em1="up"
cloned_interfaces="vlan***"
ifconfig_vlan***_name="ifwan0"
ifconfig_ifwan0="inet ***.**.207.253 netmask 255.255.255.192 vlan *** vlandev em1"
defaultrouter="192.**.**.1"
gateway_enable="YES"
sshd_enable="YES"
dhcpd_enable="YES"
dhcpd_ifaces="ifnat0"
dhcpd_conf="/usr/local/etc/dhcpd.conf"
dhcpd_chuser_enable="YES"
dhcpd_withuser="dhcpd"
dhcpd_withgroup="dhcpd"
dhcpd_chroot_enable="YES"
dhcpd_devfs_enable="YES"
dhcpd_rootdir="/var/db/dhcpd"
dhcpd_includedir="/usr/local/etc"
syslog_flags="-l /var/db/dhcpd/var/run/log"
firewall_enable="YES"
firewall_nat_enable="YES"
firewall_nat_interface="ifnat0"
firewall_script="/etc/myfirewall";
/etc/myfirewall

Код: Выделить всё

#!/bin/sh -x
ipfw -q flush
cmd="ipfw"

natif="ifnat0"
natip=10.67.0.1                         #DHCP SERVER
natnet="10.67.0.0/16"
###---------
lanif="iflan0"                                     #Локалка
lanip="192.**.**.13"
lannet="192.**.**.0/22"
###---------
wanif="ifwan0"
wanip="87.***.***.253"                          #Провайдер
wanet="87. ***.***.192/26"
wangw="87. ***.***.193"

$cmd add allow ip from any to any via $lanif
$cmd nat 123 config same_ports ip $wanip
$cmd add allow ip from $natnet to any in recv $natif
$cmd add nat 123 ip from $natnet to any out xmit $wanif
$cmd add allow ip from $wanip to any out xmit $wanif
$cmd add nat 123 ip from any to $wanip in recv $wanif
$cmd add allow ip from any to $natnet in recv $wanif
$cmd add allow ip from any to $natnet out xmit $natif
Ipfw show

Код: Выделить всё

00010 3443 448429 allow ip from any to any via iflan0
00110   13   2980 allow ip from 10.67.0.0/16 to any in recv ifnat0
00210    3    252 nat 123 ip from 10.67.0.0/16 to any out xmit ifwan0
00310    3    252 allow ip from 87.***.***.253 to any out xmit ifwan0
00410    6    384 nat 123 ip from any to 87.***.***.253 in recv ifwan0
00510    3    252 allow ip from any to 10.67.0.0/16 in recv ifwan0
00610   11   2876 allow ip from any to 10.67.0.0/16 out xmit ifnat0
65535   51   3462 allow ip from any to any
Tcpdump –ni ifwan0

Код: Выделить всё

tcpdump -ni ifwan0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ifwan0, link-type EN10MB (Ethernet), capture size 65535 bytes
10:15:05.627628 ARP, Request who-has 87.***.***.244 tell 87.***.***.193, length 46
{пингую шлюз провайдера}
10:15:12.605802 IP 87. ***.***.253 > 87. ***.***.193: ICMP echo request, id 2068, seq 1, length 64
10:15:12.606022 IP 87. ***.***.193 > 87. ***.***.253: ICMP echo reply, id 2068, seq 1, length 64
10:15:13.606565 IP 87. ***.***.253 > 87. ***.***.193: ICMP echo request, id 2068, seq 2, length 64
10:15:13.606763 IP 87. ***.***.193 > 87. ***.***.253: ICMP echo reply, id 2068, seq 2, length 64
{пингую любой другой адрес или доменное имя}
10:15:28.467049 ARP, Request who-has 87.***.***.199 tell 87.***.***.193, length 46
10:15:28.467055 ARP, Request who-has 87.***.***.194 tell 87.***.***.193, length 46
10:15:28.467058 ARP, Request who-has 87.***.***.196 tell 87.***.***.193, length 46
10:15:28.467059 ARP, Request who-has 87.***.***.195 tell 87.***.***.193, length 46
10:15:28.467131 ARP, Request who-has 87.***.***.197 tell 87.***.***.193, length 46
10:15:28.469158 IP 61.183.172.39.6000 > 87. ***.***.253.9415: Flags [S], seq 1216151552, win 16384, length 0
10:15:28.469247 ARP, Request who-has 87.***.***.240 tell 87.***.***.193, length 46
10:15:28.469422 ARP, Request who-has 87.***.***.239 tell 87.***.***.193, length 46
10:15:28.469426 ARP, Request who-has 87.***.***.246 tell 87.***.***.193, length 46
10:15:28.469429 ARP, Request who-has 87.***.***.244 tell 87.***.***.193, length 46
/etc/sysctl.conf

Код: Выделить всё

net.inet.ip.fw.enable=1
net.inet.ip.fw.one_pass=1
net.inet.tcp.maxtcptw=40960
kern.ipc.somaxconn=4096
kern.ipc.nbmclusters=65536
net.inet.tcp.nolocaltimewait=1
net.inet.ip.portrange.randomized=0

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение skeletor » 2012-11-20 13:48:13

А свитч-то ваш понимает вланы или куда вы вставили линк от провайдера? Или провайдер вам прямо вланом подаёт?
Да и правила файервола написаны как-то не очень.

ПС. Вы раскрыли 3 из 4-ох октетов вашего внешнего ИПа. Так, что либо не скрывайте его вообще, либо везде скрывайте только одни и те же октеты (в rc.conf открыты 2 последних, в tcpdump - первый и последний).

Гость
проходил мимо

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение Гость » 2012-11-20 14:09:13

skeletor писал(а):А свитч-то ваш понимает вланы или куда вы вставили линк от провайдера? Или провайдер вам прямо вланом подаёт?
Vlan получается напрямую от провайдера.
Так же думал что проблема в нем, но специально для проверки оставил один этот интерфейс и прописал настройки чисто для проверки интернета. Работает, так как без vlan'a даже пакеты не выпускаются.
Но! Была мысль что надо указывать Vlan как то в правилах ipfw - надо ли это?
skeletor писал(а):Да и правила файервола написаны как-то не очень.
По поводу правил, специально их урезал до минимума и даже делала type=open
Чтобы проверить Nat работает или нет.
Та же проблема - только шлюз.

Остальные все правила буду дописывать после. Для начала надо понять почему Nat не работает.

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение skeletor » 2012-11-20 14:35:56

Я бы для начала, начал с таких правил НАТа

Код: Выделить всё

${FwCMD} nat 123 config if ${wanif}
${FwCMD} add nat 123 ip from ${natnet} to any via ${wanif}
${FwCMD} add nat 123 ip from ${lannet} to any via ${wanif}
${FwCMD} add nat 123 ip from any to ${wanip} via ${wanif}

Serperic
проходил мимо
Сообщения: 6
Зарегистрирован: 2012-11-20 12:59:53
Откуда: Moscow

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение Serperic » 2012-11-20 15:44:56

IPFW Show

Код: Выделить всё

00010  124  26098 allow ip from any to any via iflan0
00110    2    168 nat 123 ip from 10.67.0.0/16 to any via ifwan0
00210    2    168 nat 123 ip from any to 87.***.***.253 via ifwan0
65535 1015 102982 allow ip from any to any
tcpdump ifwan0

Код: Выделить всё

12:39:07.926928 IP 87.***.***.253 > 87.***.***.193: ICMP echo request, id 2107, seq 2, length 64
12:39:07.927156 IP 87.***.***.193 > 87.***.***.253: ICMP echo reply, id 2107, seq 2, length 64
12:39:14.030272 ARP, Request who-has 87.***.***.210 tell 87.***.***.193, length 46
12:39:49.633781 ARP, Request who-has 87.***.***.235 tell 87.***.***.193, length 46
tcpdump ifnat0

Код: Выделить всё

12:39:07.926917 IP 10.67.1.2 > 87.***.***.193: ICMP echo request, id 2107, seq 2, length 64
12:39:07.927164 IP 87.***.***.193 > 10.67.1.2: ICMP echo reply, id 2107, seq 2, length 64
12:39:09.401280 IP 10.67.1.2 > 8.8.8.8: ICMP echo request, id 2108, seq 1, length 64
12:39:10.401033 IP 10.67.1.2 > 8.8.8.8: ICMP echo request, id 2108, seq 2, length 64
Шлюз пингуется, дальше нет.
Есть подозрение что проблема все таки не в фаере, потому что он судя по правилам все пропускает и впускает.

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение skeletor » 2012-11-20 15:59:03

Я думаю, что вы пропускаете непротанченные пакеты, а вот провайдер ваш - их рубит и не пускает дальше в мир.

Serperic
проходил мимо
Сообщения: 6
Зарегистрирован: 2012-11-20 12:59:53
Откуда: Moscow

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение Serperic » 2012-11-20 16:16:37

skeletor писал(а):Я думаю, что вы пропускаете непронатченные пакеты, а вот провайдер ваш - их рубит и не пускает дальше в мир.
То есть возможно не работает сама функция NAT'a, весьма логично. Но где тогда искать зацепку и почему пакеты отправленные до шлюза провайдера проходят переименовку?

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение skeletor » 2012-11-20 16:47:29

Искать ошибку в правилах НАТа. Почему у вас они проходят - вопрос к вам. Попробуйте правила НАТа, которые я привел. Да и ещё, посмотрите количество ошибок на интерфейсах (netstat -i), может что-то не так с сеткой?

Serperic
проходил мимо
Сообщения: 6
Зарегистрирован: 2012-11-20 12:59:53
Откуда: Moscow

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение Serperic » 2012-11-20 17:11:57

netstat -i

Код: Выделить всё

Name    Mtu Network       Address              Ipkts Ierrs Idrop    Opkts Oerrs  Coll
iflan  1500 <Link#1>      00:0c:29:9f:da:21           4787     0     0      313     0     0
iflan  1500 192.168.**.0/ 192.168.**.13                415     -     -      309     -     -
em1    1500 <Link#2>      00:0c:29:9f:da:2b         2057     0     0        0     0     0
ifnat  1500 <Link#3>      00:0c:29:9f:da:35               6     0     0        5     0     0
ifnat  1500 10.67.0.0     10.67.0.1                           2     -     -        2     -     -
plip0  1500 <Link#4>                                               0     0     0        0     0     0
ipfw0 65536 <Link#5>                                             0     0     0        0     0     0
lo0   16384 <Link#6>                                               0     0     0        0     0     0
lo0   16384 your-net      localhost                             0     -     -        0     -     -
ifwan  1500 <Link#7>      00:0c:29:9f:da:2b             9     0     0        0     0     0
ifwan  1500 87.***.***.19 host-253.domain.87           0     -     -        0     -     -

Мне кажется или это не очень хороший показатель?

Правила сейчас именно те и стоят собственно после них следующим постом вывел всю инфу после их применения.

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение skeletor » 2012-11-20 17:28:42

цифры какие-то странные - очень маленькие значения, как-будто через сервак мало что ходит.

Serperic
проходил мимо
Сообщения: 6
Зарегистрирован: 2012-11-20 12:59:53
Откуда: Moscow

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение Serperic » 2012-11-20 17:33:50

skeletor писал(а):цифры какие-то странные - очень маленькие значения, как-будто через сервак мало что ходит.
В данный момент это тестовая виртуальная машина, которая в последствии должна стать боевой.

Из за одного странного глюка с vlan'ом приходилось перезагружать все систему.
{После изменения настроек в rc.conf делается netif restart, из-за этого на vlan интерфейсе пропадает адрес, ifconfig up и повторное прописывание inet не лечит его, но shutdown лечит.}

Аватара пользователя
skeletor
майор
Сообщения: 2548
Зарегистрирован: 2007-11-16 18:22:04

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение skeletor » 2012-11-20 18:50:52

Да, есть такое, сам замечал.

Serperic
проходил мимо
Сообщения: 6
Зарегистрирован: 2012-11-20 12:59:53
Откуда: Moscow

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение Serperic » 2012-11-20 19:03:23

Так, а есть возможность настроить подобный NAT баз фаера вообще?
Или с минимальными изменениями. Проблема в том что NAT возможно только ядреный, из за обширного трафика.

Serperic
проходил мимо
Сообщения: 6
Зарегистрирован: 2012-11-20 12:59:53
Откуда: Moscow

Re: IPFW+NAT+DHCP+VLAN

Непрочитанное сообщение Serperic » 2012-11-20 19:29:06

УРА!! Я сделал это!!! Черт! 6 дней морочился.
Ошибка была в таблице маршрутизации - ты был прав! Спасибо.
Заменил Default на Gateway провайдера.
Локалка жива, интернет тоже, клиентам инет идет!! ДАААА!