Я на хост-машине с Centos 7 и 2 гостями на Centos 6.6. Я хочу, чтобы у одного из моих гостей был статический внешний IP-адрес, но некоторые его порты должны быть перенаправлены на другого гостя.
На хост-машине я делаю:
iptables -t nat -I PREROUTING -d <EXTERNAL IP> -i enp2s0 -j DNAT --to-destination 192.168.122.88
iptables -t nat -I POSTROUTING -s 192.168.122.88 -o enp2s0 -j SNAT --to-source <EXTERNAL IP>
iptables -P FORWARD ACCEPT
#####
iptables -t nat -A PREROUTING --dst <EXTERNAL IP> -p tcp --dport 5999 -j DNAT --to-destination 192.168.122.155:5999
iptables -t nat -A PREROUTING --dst <EXTERNAL IP> -p tcp --dport 1540 -j DNAT --to-destination 192.168.122.155:1540
iptables -t nat -A PREROUTING --dst <EXTERNAL IP> -p tcp --dport 1541 -j DNAT --to-destination 192.168.122.155:1541
iptables -t nat -A PREROUTING --dst <EXTERNAL IP> -p tcp --dport 1560 -j DNAT --to-destination 192.168.122.155:1560
iptables -t nat -A PREROUTING --dst <EXTERNAL IP> -p tcp --dport 8187 -j DNAT --to-destination 192.168.122.155:8187
iptables -t nat -A PREROUTING --dst <EXTERNAL IP> -p tcp --dport 3389 -j DNAT --to-destination 192.168.122.155:3389
iptables -t nat -A PREROUTING --dst <EXTERNAL IP> -p tcp --dport 10050 -j DNAT --to-destination 192.168.122.155:3389
Таким образом, гость получает внешний IP-адрес, но правила порта не работают.
Вы добавляете отдельные правила порта после своего первого правила DNAT, и поскольку все пакеты соответствуют вашему первому правилу DNAT, последующие правила никогда не будут совпадать.
Вам нужно переместить отдельные правила порта, прежде чем
iptables -t nat -I PREROUTING -d <EXTERNAL IP> -i enp2s0 -j DNAT --to-destination 192.168.122.88
править в PREROUTING
стол.