[клиент, 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 внешний.
Для тех, кому много букв, повторю вопрос: как это можно реализовать в пределах одного линукс-ядра?