IPFW+NATD+port mapping (команды divert, fwd и файло natd.conf)

FreeBSD, NetBSD, OpenBSD, DragonFly и т. д.

Модератор: arachnid

Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

IPFW+NATD+port mapping

Сообщение Maestro »

А в чем принципиальная разница между правилом fwd и divert в ipfw. Мне надо настроить Kerio VPN, порт 4090. Роутер FreeBSD+ipfw+natd: xl0 - внешний (ххх.ххх.ххх.х)
fxp1 - внутренний 192.168.0.1. За freebsd стоят: почтарь МДемон+прокси+биллинг 192.168.0.99 и Kerio VPN сервер 192.168.0.4.
С почтарем и пробросом трафика разобрался просто:
natd.conf>

same_ports yes
use_sockets yes
interface xl0
redirect_port tcp 192.168.0.99:25 25
redirect_address 192.168.0.99 xxx.xxx.xxx.x

причем в правила ipfw ничего, аля divert не добавлял. И все работает. ОСь FreeBSD 6.1
добавил лишь
add allow tcp from any 25 to any
add allow tcp from any to any 25

Сейчас мне надо настроить VPN - для этого нужно настроить портмапинг, чтобы все запросы приходящие извне на порт 4090 перебрасывались вот сюда - 192.168.0.4:4090
Соответственно я вписываю в natd.conf вот такие строки
redirect_port tcp 192.168.0.4:4090 4090
redirect_port udp 192.168.0.4:4090 4090

А в rc.firewall вписываю следующее
add allow tcp from any to 192.168.0.4 4090
add allow tcp from 192.168.0.4 4090 to any
add allow udp from any to 192.168.0.4 4090
add allow udp from 192.168.0.4 4090 to any

В принципе должно работать, но меня терзают смутные сомнения.
Нужно ли вписывать в rc.firewall следующее
add divert 4090 tcp,udp from 192.168.0.4 to any out via xl0
add divert 4090 tcp,udp from any to 192.168.0.4 in via xl0

И можно ли настроить портмапинг с помощью команды fwd. Может есть у кого готовые решения? Знаю то, что, чтобы использовать команду fwd нужно пересобрать ядро с опциями options IPFIREWALL_FORWARD и options IPFIREWALL_FORWARD_EXTENDED - а некогда. И правильно ли делать портмапинг при помощи команды divert? И можно ли вообще обойтись одним ipfw не прикручивая natd.conf??? :huh:
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: IPFW+NATD+port mapping

Сообщение Maestro »

Посоветовался с другами. Говорят, что NAT маркирует (меняет) пакет и оттого VPN сервер не может правильно опознать пакет от клиента и отбрасывает его. Делали портмапинг для vpn в iptable - все работало. Скажите плиз, если настроить портмапинг в ipfw с помощью
add divert 4090 udp from 192.168.0.4 to any out via xl0
add divert 4090 udp from any to 192.168.0.4 in via xl0
(xl0 - внешний интерфейс!!!)
а в natd.conf ничего не прописывать, будет такое построение работать. Неужели никто не настраивал vpn в vpn'e??? :blink:
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: IPFW+NATD+port mapping

Сообщение Maestro »

А может мне мешают вот эти правила??? Хотя не должны... Но все же

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

00400     40     4912 deny ip from 192.168.0.0/24 to any in via xl0
00800    314    29002 deny log logamount 200 ip from any to 192.168.0.0/16 via xl0
01100      0        0 deny log logamount 200 ip from any to 192.0.2.0/24 via xl0
 и лишь потом вот это!
01400 145494 89828393 divert 8668 ip from any to any via xl0


Еще раз опишу ситуацию.
1. Стоит FreeBSD+natd+ipfw (настроен в natd.conf - redirect_port tcp,udp 192.168.0.4:4090 4090)
2. За фряхой стоит пассивный Kerio VPN сервер (192.168.0.4:4090).
3. Активный Kerio VPN клиент получает интернет через vpn своего провайдера.
4. Надо соединить активный клиент и пассивный сервер Kerio VPN.
дайте денег на обновление портов :)
Спасибо сказали:
Аватара пользователя
Maestro
Сообщения: 227
Статус: ипэшник
ОС: FreeBSD-6.2 STABLE

Re: IPFW+NATD+port mapping

Сообщение Maestro »

Я конечно понимаю, что много чего напутал в самом начале этого поста. Но мне нужно было указание на ошибку. А проблема остается по прежнему. Когда я прописываю в natd.conf redirect_port tcp,udp 192.168.0.4:4090 4090, а также redirect_address (кстати, вместе они почему-то не работают, читал про это где не помню, но у меня та же беда), далее в rc.firewall после правила 01400 145494 89828393 divert 8668 ip from any to any via xl0 вписываю это allow tcp from any to any dst-port 4090; allow tcp from any 4090 to any то же самое для udp - а работать не хотит, и мало того, при рестарте системы перестает запускаться даемон natd.

PS Кажется я сам с собой разговариваю )))
дайте денег на обновление портов :)
Спасибо сказали:
Grass_snake
Сообщения: 21

Re: IPFW+NATD+port mapping

Сообщение Grass_snake »

Maestro писал(а):
21.12.2006 16:03
...
PS Кажется я сам с собой разговариваю )))


Сейчас немного трудно вникать в отквоченное, но когда потребовалось, себе сделал подобное так:

rc.firewall:
tmule="4662,5662"
umule="4672,5672"
....
# Switch "ON" NAT on outbound int.
/sbin/natd -p natd -s -m -a ${oip} -f /etc/natd.conf
....

# For ME
$fwcmd add divert natd tcp from any to ${oip} ${tmule} in via ${oif} // Mule
$fwcmd add divert natd tcp from ${admin} ${tmule} to any
$fwcmd add divert natd udp from any to ${oip} ${umule} in via ${oif} // Mule
$fwcmd add divert natd udp from ${admin} ${umule} to any
...

# NAT FOR ALL INBOUND NETWORK TRAFFIC
$fwcmd add divert natd all from any to ${oip} in recv ${oif} // Inb._NAT

...

$fa all from ${admin} to any
$fa all from any to ${admin}
...


natd.conf:
use_sockets yes
same_ports yes
verbose no
log_ipfw_denied yes
unregistered_only yes
# For Me!
redirect_port tcp 192.168.1.5:4662 4662
redirect_port udp 192.168.1.5:4672 4672
redirect_port tcp 192.168.1.5:5662 5662
redirect_port udp 192.168.1.5:5672 5672


Работает.
Спасибо сказали:
J0nEE
Сообщения: 7
ОС: Ubuntu Linux, freeBSD

Re: IPFW+NATD+port mapping

Сообщение J0nEE »

Всем привет. Вобщем задача такая: есть сервак использующий FreeBSD 6-2 RC-1
На нем IPFW, POPTOP, NAT
3 интерфейса :
rl0 = 192.168.1.0/24 - к нему подключем АДСЛ модем я конекчусь к провайдеру через ррр (РРРоЕ)
rl1 = 192.168.2.0/24 - Моя внутришняя локалка (Локалка№1)
rl2 = 192.168.3.0/18 - Городская Локалка (Локалка№2)
Задачи:
1. Этот сервак должен роздавать инет двом разным локалкам по ВПН (РОРТОР)
2. Локалка №1 должна видеть Локалку№2.
3. Ограничение скорости общего канала приема между локалками на 50 мбит

На данный момент розвязал задачу 1 таким способом.

Законектился к инету через ррр создался тунель на каторый надается дин. айпиха. На этот тунель настроен мой НАТ

natd_program="/sbin/natd"
natd_enable="YES"
natd_flags="-l -s -m -n tun0 -dynamic"

В рс.фаерволе прописаны диверты на НАТ теперь те кто подконектился через ВПН имеет инет, эта задача решена.

Вторая задача надо сделать чтоб Локалка№1 видела локалку№2 с ограничением скорости на 50мбит

Для этого в теории я должен поднять нат на интерфейс rl2 и прописать диверты в рс.фаерволе

Если кто то може напишите как это сделать на практике. Весь инет облазил кучу манов перепробовал ничего не помогает. Может я неправельну думаю как это делать. Если есть предложения скажите свой метод плз
Спасибо сказали:
Аватара пользователя
Kotjara
Сообщения: 307
ОС: FreeBSD 7.0/Ubuntu 8.04

Re: IPFW+NATD+port mapping

Сообщение Kotjara »

Вторая задача надо сделать чтоб Локалка№1 видела локалку№2 с ограничением скорости на 50мбит

Для этого в теории я должен поднять нат на интерфейс rl2 и прописать диверты в рс.фаерволе


Для это надо настроить маршрутизацию, а NAT нафиг не нужен. ;)
Спасибо сказали:
J0nEE
Сообщения: 7
ОС: Ubuntu Linux, freeBSD

Re: IPFW+NATD+port mapping

Сообщение J0nEE »

Примеры можешь написать? я ещё не силен во фре только начинающий
Спасибо сказали:
Grass_snake
Сообщения: 21

Re: IPFW+NATD+port mapping

Сообщение Grass_snake »

J0nEE писал(а):
05.02.2007 20:57
Примеры можешь написать? я ещё не силен во фре только начинающий


Ну, к примеру.

На самом маршрутизаторе вот так:
route add -net 192.168.3.0 192.168.1.254 255.255.255.0
или
route add -net 10.1.1.0/24 192.168.1.200

И прописать эти маршруты в /etc/rc.local чтоб после рестарта поднимались.
Спасибо сказали:
J0nEE
Сообщения: 7
ОС: Ubuntu Linux, freeBSD

Re: IPFW+NATD+port mapping

Сообщение J0nEE »

В теории система работает
я поправлю себя дело в том что тут бяка с айпишками.
нарисовал схему чтоб проще понять

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

|------------------|
|                  |
|  Внутриняя сеть  |
|                  |
|------------------|
      |
      |
 |----------------|
 |    rl1         |
 |192.168.150.1/24|
 |----------------|
      |
      |
     |---------|     |-----------|
     | freeBSD |-----| Интернет  |
     |---------|     |-----------|
      |
      |
 |----------------|
 |    rl2         |
 |192.168.80.2/18 |
 |----------------|
      |
      |
|-----------------------|
|                       |
|  Городская сеть       |
|                       |
|-----------------------|


ВОТ. Задача состоит в том, что моя внутришняя сеть должа видеть городскую а городская внутришнюю -нет. Прикол весь в том, что у городского провайдера стоит гейт на фрибсд ( шлюз какой то) мои эхо запросы идут а отвктов не получаю от айпишек. Остается единственный метод это пднять второй нат. Если кто то делал когда нить то помогите пожалуста
Спасибо сказали: