ipfw NAT + fwd

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
orsoft
проходил мимо
Сообщения: 4
Зарегистрирован: 2013-11-09 15:52:42

ipfw NAT + fwd

Непрочитанное сообщение orsoft » 2013-11-10 9:14:54

Доброго времени суток.

есть машина Freebsd 9.2 - роутер

есть интерфейс в интернет (со шлюзом по умолчанию) 1.1.1.1.
интерфейс в серую сеть 192.168.1.2.
в серой сети есть другой роутер2 (192.168.1.1) в третью серую сеть (10.0.0.0/24).

на роутер написан статический маршрут в сеть 10.0.0.0 через 192.168.1.1

с роутера сервера в сети 10.0.0.0 пингуются и телнетятся без проблем

задача: сделать трансляцию обращений к белому адресу роутера на сервер в серой сети (10.0.0.5)

на centos с iptables это решалось одной строкой

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

-A PREROUTING -d 1.1.1.1/32 -p tcp --dport 443 -j DNAT --to-destination 10.0.0.5:8443
на ipfw написал

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

${FwCMD} nat 1 config log if {net_white} reset same_ports deny_in redirect_port tcp 10.0.0.5:8443 1.1.1.1:443
${FwCMD} add 00101 nat 1 log ip from any to 1.1.1.1 443 via {net_gray}
не работает (ipfw show показывает что что на правило 101 есть обработанные пакеты)

пробовал ещё написать

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

${FwCMD} add 00100 fwd 10.0.0.5,8443 log tcp from any to any 8443 via {net_gray}
не срабатывает тогда nat (смотрел ipfw show)

подскажите что я не так написал в nat? :st:
Последний раз редактировалось f_andrey 2013-11-10 10:35:12, всего редактировалось 1 раз.
Причина: Автору. пожалуйста, выбирайте соответствующий раздел форума, оформляйте сообщение по человечески.

Хостинговая компания 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/

lazhu
сержант
Сообщения: 209
Зарегистрирован: 2013-08-10 14:28:38
Контактная информация:

Re: ipfw NAT + fwd

Непрочитанное сообщение lazhu » 2013-11-10 12:54:54

orsoft писал(а):

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

${FwCMD} add 00101 nat 1 log ip from any to 1.1.1.1 443 via {net_gray}
Непонятно, что вы хотите натить вот этим правилом

werder31
сержант
Сообщения: 217
Зарегистрирован: 2009-12-22 10:48:41
Откуда: from Ukraine
Контактная информация:

Re: ipfw NAT + fwd

Непрочитанное сообщение werder31 » 2013-11-10 16:01:36

я недавно парился по поводу ната))
1) Lazhu правильно сказал
2) Нужно разрешающее правило

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

$cmd add allow ip from any to 1.1.1.1 443 in via $WAN_IP
$cmd add allow ip from any to 10.0.0.5 8443 in via $WAN_IP
Любите жизнь, ведь она все равно отымеет..так хоть по любви!

orsoft
проходил мимо
Сообщения: 4
Зарегистрирован: 2013-11-09 15:52:42

Re: ipfw NAT + fwd

Непрочитанное сообщение orsoft » 2013-11-12 11:56:19

werder31 писал(а): 2) Нужно разрешающее правило

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

$cmd add allow ip from any to 1.1.1.1 443 in via $WAN_IP
$cmd add allow ip from any to 10.0.0.5 8443 in via $WAN_IP
при добавлении такого правила оно срабатывает и пакет уходит в уровень приложений (как написано в доках) он не будет транслироваться никуда ...
либо я что-то не догоняю

по логам

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

ipfw show
пакеты появляются на первом из разрешающих парвил и больше нигде

werder31
сержант
Сообщения: 217
Зарегистрирован: 2009-12-22 10:48:41
Откуда: from Ukraine
Контактная информация:

Re: ipfw NAT + fwd

Непрочитанное сообщение werder31 » 2013-11-12 12:30:27

Что бы пакет не уходил сразу по правилу, а проходил полностью фаервол -

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

net.inet.ip.fw.one_pass=1
И поставте нат выше разрешающих правил
Любите жизнь, ведь она все равно отымеет..так хоть по любви!

mak_v_
проходил мимо

Re: ipfw NAT + fwd

Непрочитанное сообщение mak_v_ » 2013-11-12 12:38:52

Самый простой правильный способ:
1) Закоментить всю фильтрацию, настроить нат
2) Постепенно включать фильтрацию + логирование.

orsoft
проходил мимо
Сообщения: 4
Зарегистрирован: 2013-11-09 15:52:42

Re: ipfw NAT + fwd

Непрочитанное сообщение orsoft » 2013-11-12 15:54:42

Ура! победил!

долго курил статью
http://www.lissyara.su/articles/freebsd ... /ipfw_nat/

и вот решение для одинарного преобразования (т.е. только адреса назначения, если сервер во внутренней сети имеет шлюз по умолчанию равным данному роутеру)

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

ServGray="10.0.0.5"
ServPort="8443"
GrayIF=""

InetIF=""
WhiteAddr="1.1.1.1"
WhitePort="443"

# D NAT
${FwCMD} nat 1 config if ${InetIF} reset same_ports deny_in redirect_port tcp ${ServGray}:${ServPort} ${WhiteAddr}:${WhitePort}

# Input packet from user
${FwCMD} add 01000 nat 1 log ip from any to ${WhiteAddr} ${WhitePort} in via ${InetIF}
# Out packet to server
${FwCMD} add 01001 allow log tcp from any to ${ServGray} ${ServPort} out via ${GrayIF}

# Input packet from server
${FwCMD} add 01002 allow log tcp from ${ServGray} ${ServPort} to any in via ${GrayIF}
# Out packet to user
${FwCMD} add 01003 nat 1 log ip from ${ServGray} ${ServPort} to any out via ${InetIF}
и вот решение для двойного преобразования (т.е. адреса назначения и адреса отправителя, если сервер во внутренней сети имеет шлюз по умолчанию отличный от данного роутера)

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

ServGray="10.0.0.5"
ServPort="8443"
GrayIF=""

InetIF=""
WhiteAddr="1.1.1.1"
WhitePort="443"

# D NAT
${FwCMD} nat 1 config if ${InetIF} reset same_ports deny_in redirect_port tcp ${ServGray}:${ServPort} ${WhiteAddr}:${WhitePort}

# S NAT
${FwCMD} nat 2 config if ${GrayIF} same_ports reset deny_in

# Input packet from user
${FwCMD} add 01000 nat 1 log ip from any to ${WhiteAddr} ${WhitePort} in via ${InetIF}
# Out packet to server
${FwCMD} add 01001 nat 2 ip from any to ${ServGray} ${ServPort} out via ${GrayIF}

# Input packet from server
${FwCMD} add 01002 nat 2 ip from ${ServGray} ${ServPort} to any in via ${GrayIF}
# Out packet to user
${FwCMD} add 01003 nat 1 log ip from ${ServGray} ${ServPort} to any out via ${InetIF}
Для обеих примеров опции в /etc/rc.conf

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

gateway_enable="YES"

static_routes="second_gray"
route_second_gray="-net 10.0.0.0/24 192.168.1.100"

firewall_enable="YES"
firewall_nat_enable="YES"
firewall_type="/etc/rc.firewall"
И не забываем /etc/sysctl.conf

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

net.inet.ip.fw.one_pass=1
Всем спасибо.

PS: если у модераторов будет желание можно разместить этот пост гденить для новичков ибо таких как я думаю море

lazhu
сержант
Сообщения: 209
Зарегистрирован: 2013-08-10 14:28:38
Контактная информация:

Re: ipfw NAT + fwd

Непрочитанное сообщение lazhu » 2013-11-12 19:13:53

OMG
зачем такие сложности? :unknown:
зачем нат на внутреннем интерфейсе? :unknown:

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

nat config if ${ext_if} deny_in redirect_port <tcp/udp> <host>:<port> <port>
nat ip from any to any via ${ext_if}
для параноиков:

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

nat ip from any to me in recv ${ext_if}
nat ip from ${lan} to any out xmit ${ext_if}

orsoft
проходил мимо
Сообщения: 4
Зарегистрирован: 2013-11-09 15:52:42

Re: ipfw NAT + fwd

Непрочитанное сообщение orsoft » 2013-11-12 19:22:37

Спасибо за комментарий.

Но на мой скромный взгляд, он несколько запоздал.

я в самом первом посте спрашивал КАК это сделать. На что получил ответ
lazhu писал(а):
orsoft писал(а):

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

${FwCMD} add 00101 nat 1 log ip from any to 1.1.1.1 443 via {net_gray}
Непонятно, что вы хотите натить вот этим правилом
после этого перечитал кучу инфы и СДЕЛАЛ. И теперь милостливо получил замечание
lazhu писал(а):OMG
зачем такие сложности? :unknown:
зачем нат на внутреннем интерфейсе? :unknown:

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

nat config if ${ext_if} deny_in redirect_port <tcp/udp> <host>:<port> <port>
nat ip from any to any via ${ext_if}
для параноиков:

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

nat ip from any to me in recv ${ext_if}
nat ip from ${lan} to any out xmit ${ext_if}
а нельзя было это сразу написать?!!!! я пребываю в а@уе :cry:

snorlov
подполковник
Сообщения: 3716
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

Re: ipfw NAT + fwd

Непрочитанное сообщение snorlov » 2013-11-12 21:18:46

Вы думаете форум все читают каждые 5-ть минут?