Страница 1 из 1
Как сделать хитрый нат
Добавлено: 2010-02-05 12:46:04
Riskator
В хозяйстве имеется типовой шлюз с двумя сетевухами и натом, который выводит в мир внутр. сеть через 192.168.1.1 и пробрасывает порты снаружи через 195.1.1.1 Есть так же пара сервисов к которым нужно подключаться снаружи по порту 100 (редирект делать нельзя), для этого был добыт еще один адрес 195.1.1.2 и повешен на другую сетевуху, для неё запущен нат /sbin/natd -a 195.1.1.2 -p 8669 -f /etc/natd2.conf. В фаере добавлена пара правил:
Код: Выделить всё
divert 8669 ip from 192.168.1.0/24 100 to any out via 195.1.1.2
divert 8669 ip from any to 195.1.1.2 in via xl0
Пакет внутрь проходит нормально, а ответ посылается через 195.1.1.1.
Как победить?

Re: Как сделать хитрый нат
Добавлено: 2010-02-05 13:27:51
hizel
проверяйте последовательность прохождения пакетов по nat-ам
Re: Как сделать хитрый нат
Добавлено: 2010-02-05 14:42:34
Riskator
em0=195.1.1.1
xl0=195.1.1.2
divert 8669 ip from 192.168.1.0/24 100 to any out via xl0
divert 8669 ip from any to 195.1.1.2 in via xl0
divert 8668 ip from any to 195.1.1.1 in via em0
divert 8668 ip from 192.168.1.0/24 to any out via em0
allow tcp from any to any dst-port 100
allow tcp from any 100 to any
Как проверку сделать?
Re: Как сделать хитрый нат
Добавлено: 2010-02-05 14:50:44
hizel
ого так у вас две сетвые карты, тогда вам брать исходник из примера для двух шлюзов тоесть fwd или setfib использовать
ээ, кстати а как оно работает? обе сетевые карты в один хаб?
Re: Как сделать хитрый нат
Добавлено: 2010-02-05 15:27:31
Riskator
Ага, две.
Попробовал сначала назначить алиас на одну - интерфейс падает, разбираться времени нет, поэтому воткнул вторую карту в свитч.
Можно ли пакет от сервака 192.168.1.10 завернуть в нат 8669?
Re: Как сделать хитрый нат
Добавлено: 2010-02-05 15:56:04
hizel
по идее у вас все верно, то что проходит к 100-ому порту попадает в первый нат
Re: Как сделать хитрый нат
Добавлено: 2010-02-05 17:35:13
terminus
Riskator писал(а):Ага, две.
Попробовал сначала назначить алиас на одну - интерфейс падает, разбираться времени нет, поэтому воткнул вторую карту в свитч.
Можно ли пакет от сервака 192.168.1.10 завернуть в нат 8669?
С какими параметрами делали алиас?
Маска должна была быть 255.255.255.255
---
те правила которые вы привели работать не будут так как на выходе пакеты не попадут во второй нат на em0 - маршрут по умолчанию идет через старый интерфейс.
Re: Как сделать хитрый нат
Добавлено: 2010-02-08 13:41:02
Riskator
Да, маска такая.
Попробовал назначать нат по тупому на адреса:
/sbin/natd -f natd1.conf -p 8669 -a 195.1.1.1
/sbin/natd -f natd1.conf -p 8668 -a 195.1.1.2
divert 8669 ip from any to any via 195.1.1.1
divert 8668 ip from any to any via 195.1.1.2
allow tcp from any to any dst-port 100
allow tcp from any 100 to any
оказалось что на алиасе нат не работает - только на основном адресе

Re: Как сделать хитрый нат
Добавлено: 2010-02-08 13:52:32
Riskator
А если ставить маску выданную провайдером 255.255.255.240, то отрабатывает тот нат, правило divert которого стоит в rc.firewall первым.
Жесть

Re: Как сделать хитрый нат
Добавлено: 2010-02-09 19:35:59
Riskator
Народ, скажите как такое может быть?
Адреса 207 и 208 в таблице принадлежат em0, что неправда.
Код: Выделить всё
#netstat -nr
195.142.56.193 00:1b:53:e1:36:01 UHLW 2 22 em0 1098
195.142.56.207 00:01:02:0a:1b:61 UHLW 1 1 em0 1198
195.142.56.208 00:1b:21:35:49:52 UHLW 1 14858 lo0
#ifconfig
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
inet6 fe80::21b:21ff:fe35:4952%em0 prefixlen 64 scopeid 0x1
inet 195.142.56.208 netmask 0xffffffe0 broadcast 195.142.56.223
ether 00:1b:21:35:49:52
media: Ethernet autoselect (1000baseTX <full-duplex>)
status: active
xl0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=9<RXCSUM,VLAN_MTU>
inet6 fe80::201:2ff:fe0a:1b61%xl0 prefixlen 64 scopeid 0x3
inet 195.142.56.207 netmask 0xffffffe0 broadcast 195.142.56.223
ether 00:01:02:0a:1b:61
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active
После загрузки системы 207 адерс в таблице появляется только после того как его пропинговали.