У меня есть NAT-маршрутизатор с 2 IP-адресами, скажем так 111.111.111.111
и 222.222.222.222
связанные с интерфейсами eth0
и eth0:1
соответственно.
У меня есть два сервера, которые подключаются к этому шлюзу NAT через интерфейс tap0
(Клиенты OpenVPN) с IP-адресами 10.0.0.1
и 10.0.0.2
. Я хочу, чтобы они выдавали себя за каждый IP-адрес маршрутизатора NAT.
Пока я сделал следующее iptables
правила:
iptables -A PREROUTING -d 111.111.111.111/32 -i eth0 -j DNAT --to-dest 10.0.0.1
iptables -A PREROUTING -d 222.222.222.222/32 -i eth0 -j DNAT --to-dest 10.0.0.2
Это направляет все входящие соединения на нужный сервер. Тем не менее, исходящие соединения по-прежнему используют тот же IP-адрес для доступа в Интернет. Как я могу создать правило, которое заставит весь исходящий трафик этих локальных серверов использовать соответствующий внешний IP-адрес и достичь желаемого эффекта олицетворения?
Ладно, в итоге я понял это сам, видимо, моя проблема заключалась в том, что это правило нужно добавить до -A POSTROUTING -o eth0 -j MASQUERADE
один.
iptables -t nat -A POSTROUTING -s 10.0.0.1/32 -o eth0 -j SNAT --to 111.111.111.111
iptables -t nat -A POSTROUTING -s 10.0.0.2/32 -o eth0 -j SNAT --to 222.222.222.222
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE