У меня есть шлюз с двумя сетевыми адаптерами: eth0
с публичным IP и eth1
с частным IP.
На eth0
У меня есть 4 общедоступных IP-адреса, я хотел преобразовать общедоступный IP-адрес в частный IP-адрес, и я использовал DNAT для этого uisng iptables.
1.1.1.2 -> 10.10.10.2
1.1.1.3 -> 10.10.10.3
1.1.1.4 -> 10.10.10.4
Правила
-A PREROUTING -d 1.1.1.2 -p tcp -j DNAT --to-destination 10.10.10.2
-A PREROUTING -d 1.1.1.3 -p tcp -j DNAT --to-destination 10.10.10.3
-A PREROUTING -d 1.1.1.4 -p tcp -j DNAT --to-destination 10.10.10.4
и теперь я могу получить доступ к внутреннему IP-адресу с помощью DNAT, но не могу подключиться к внешней сети с этого частного IP-адреса.
Как я могу этого добиться? Можно ли выполнить SNAT для нескольких IPS?
Похоже, вы забыли добавить правило маскарада.
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Это своего рода СНАТ. Он заменяет исходный IP-адрес локальной сети на внешний IP-адрес маршрутизатора в пакетах, исходящих от компьютеров локальной сети. Таким образом, внешние машины знают, кому отправлять пакеты.
Думаю, это можно сделать. Просто укажите -s <int ip>
и --to-source <ext ip>
iptables -t nat -A POSTROUTING -s 10.10.10.2 -i eth1 -j SNAT --to-source 1.1.1.2