Страница 1 из 1

Можно ли заставить NAT не менять IP отправителя? / Как быть?

Добавлено: 2009-10-09 6:08:25
SWBE
Может кто знает красивое решение моей проблемы :)
Заранее благодарю.

Сервер с натом для локалки: 2 внешних интерфейса (инет) + 1 внутренний (локалка).
С недавних пор на сервере появилась необходимость предоставлять сервисы, которые должны быть доступны на двух внешних интерфейсах.
Но из-за использованием ната все эта затея загнулась.

Вот простой лог фаервола (реальные адреса и интерфейсы заменены).

10000 - до правил с натом
50000 - после правил с натом

ipfw: 10000 Count ICMP:8.0 {remote_ip} {my_ext1_ip} in via {if_1}
ipfw: 50000 Count ICMP:8.0 {remote_ip} {my_ext1_ip} in via {if_1}

ipfw: 10000 Count ICMP:0.0 {my_ext1_ip} {remote_ip} out via {if_2}
ipfw: 50000 Count ICMP:0.0 {my_ext2_ip} {remote_ip} out via {if_2}

Без ната, можно было бы воспользоваться: fwd {my_ext1_gw} all from {my_ext1_ip} to any out
но после прохождения пакета через нат, исходящий IP меняется на IP в соответствии с роутом до удаенного хоста и fwd уже не работает.

Можно ли заставить NAT не менять IP отправителя (меня), а отправлять с того же IP, на который был получен пакет? Или как быть?

Решение конечто же будет обозначить все сервисы ДО правил с натом и форвардить уже до ната, но тогда пассивный фтп сервер опять же не будет работать...

Re: Можно ли заставить NAT не менять IP отправителя? / Как быть?

Добавлено: 2009-10-09 9:55:05
terminus
http://forum.lissyara.su/viewtopic.php? ... 14&start=0

там предложен пример с keep-state + fwd, и предложено попробовать заменить fwd на setfib.
У вас есть желание проверить работу этого примера?

Re: Можно ли заставить NAT не менять IP отправителя? / Как быть?

Добавлено: 2010-02-09 21:22:01
SWBE
число случайно напоролся =)

Решилось через setfib. А именно:

1. в ядро >>

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

options         ROUTETABLES=4
2. настроил дефолтовый роут для каждого фида

3. в фаервол в начале где нибудь >>

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

ipfw setfib 0 ip from any to any in via ${inet1_if}
ipfw setfib 1 ip from any to any in via ${ext1_if
как то так получается, что работает =)