Назад | Перейти на главную страницу

Как реализовать дважды нат с помощью iptables

Хочу дважды сделать нац.

Дизайн это:

LAN - A 192.168.1.10/24 OpenSwan VPN Public IP 5.5.5.5  <------VPN-----> Public IP 6.6.6.6 Open Swan --- > LAN B 192.168.1.20/24

Когда я пингую из источника 192.168.1.10 Я хочу изменить источник на 1.1.1.x/24 и пункт назначения 2.2.2.10/24

Итак, машина в LAN A 192.168.1.10 пингует пункт назначения 2.2.2.10 с исходным нат IP 1.1.1.10 и пакет попадет 192.168.1.20

Из-за перекрытия подсети я не могу проложить маршрут 192.168.1.20 в таблице маршрутизации LAN, поскольку она конфликтует, поэтому я хочу пропинговать фиктивный IP 2.2.2.10 и когда пакет достигает окна VPN Openswan, он переводит адрес назначения в 192.168.1.20

Итак, что было бы заявлением NAT на сайте A OpenSwan?

(Обратите внимание, что у меня нет доступа к сайту B openswan, поэтому все изменения требуются на сайте A openswan)

Требуется ли для LAN A и LAN B использовать одну и ту же подсеть или это можно изменить?

Я также искренне надеюсь, что предоставленные вами IP-адреса 1.1.xx и 2.2.xx являются чисто иллюстративными - в реальном мире вы захотите использовать адреса RFC1918.

На базовом уровне вы описываете применение NAT как источника, так и назначения, то есть SNAT и DNAT.

Итак, теоретически следующее должно работать:

-t nat -A PREROUTING -d 2.2.2.10 -j DNAT --to-destination 192.168.1.20
-t nat -A POSTROUTING -s 192.168.1.10 -j SNAT --to-source 1.1.1.10

К сожалению, если у вас нет доступа к VPN-серверу сайта B, это не сработает.

Причина, по которой это не сработает, заключается в том, что пока машина в LAN A пытается достичь 1.1.1.10, ваша LAN A VPN-сервер должен преобразовать это обратно в 192.168.1.20. Существует также проблема того, что должен делать VPN-сервер LAN B с исходным IP-адресом 1.1.1.10 - вам потребуется маршрутизация для отправки пакета обратно его отправителю, и (мне) кажется намного проще только LAN A используйте 10.1.1.1/24

И, как вы упомянули, вы не можете правильно направить свой сервер LAN A VPN на 192.168.1.20, потому что ваш сервер LAN A VPN считает, что эта подсеть является локальной для него.

Добавление определенного маршрута мощь help (например, ip r add 192.168.1.20/32 через IP), но все это звучит немного хрупко - я бы подумал, что гораздо более работоспособным решением было бы разделить ваш / 24 и назначить / 25 по обе стороны от вашего VPN (если вы должен поддерживать одинаковые IP-адреса LAN на обоих концах).

Поэтому я склонен думать, что вам лучше всего попытаться изменить LAN A.

Подойдет / 24, отличный от B, и также будет работать / 25 по обе стороны от туннеля.