LINUX.ORG.RU
ФорумAdmin

Двойной маскарадинг. Сделать IP клиента локальной сети таким же, как IP шлюза во внешней.

 , ,


0

1

[клиент, 10.10.10.25]<------LAN------>[10.10.10.1, LAN шлюз, 10.10.10.25] <------------> [10.10.10.100, WAN шлюз]

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

Интересует как можно реализовать такой шлюз в пределах одного ядра линукса. Если есть два ядра (например, две виртуалки или два компа), то можно так:

[клиент, 10.10.10.25]<-----LAN1----->[10.10.10.1, LAN1 шлюз, 192.168.1.2]<------LAN2------>[192.168.1.1, LAN2 шлюз, 10.10.10.25]<-----WAN------>[10.10.10.100, WAN шлюз]

Подразумевается, что при прохождении любого шлюза, кроме WAN-шлюза, осуществляется маскарадинг.

Данный хак может использоваться для:
1. Предоставление (псевдо)внешнего IP с пробросом диапазона портов на клиента (DMZ).
2. При этом Интернетом могут пользоваться и другие клиенты.
3. При этом можно на шлюзе или другом клиенте крутить сервер (HTTP, SSH, Jabber).

Всё это остаётся прозрачно для клиента, клиент считает, что его IP внешний.

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

☆☆☆

Последнее исправление: ktulhu666 (всего исправлений: 1)
Ответ на: комментарий от power

Так задача именно том, чтобы клиент имел тот же ip, что дал провайдер. При этом данный ip ещё и другие компы должны использовать.

ktulhu666 ☆☆☆
() автор топика

Пробросить порт локального сервера. Как-то так.

iptables -t nat -A PREROUTING -d $WAN_IP/32 -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination $LOCAL_SERVER_IP:80
iptables -t nat  -A POSTROUTING -d $LOCAL_SERVER_IP/32 -o eth1 -p tcp -m tcp --dport 80 -j SNAT --to-source $LROUTER_LOCAL_IP

Если нужен диапазон, то тоже самое только вместо port будет port-range Еще не хватает правил разрешающих в цепочку FORWARD

Yur4eg ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.