使用iptables實現端口轉發
環境及目標
- 環境
機器manager1:192.168.0.41
機器manager2:192.168.0.42
web項目部署在manager1上,端口爲8080。 - 目標
將192.168.0.42的80端口轉發到192.168.0.41的8080端口,即訪問http://192.168.0.42可以訪問到http://192.168.0.41:8080上的web項目。
使用iptables實現
命令(兩臺機器一樣):
// 開放本機8080端口,確保本機能8080能被訪問
iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
// 設置轉發規則
iptables -t nat -A PREROUTING -d 192.168.0.42 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.41:8080
iptables -t nat -A POSTROUTING -d 192.168.0.41 -p tcp --dport 8080 -j SNAT --to-source 192.168.0.42
// 保存iptables規則
service iptables save
// 修改轉發規則,該文件內容爲0,表示禁止數據包轉發,1表示允許,將其修改爲1
echo 1 > /proc/sys/net/ipv4/ip_forward
// 重啓
service iptables restart
在192.168.0.41上執行:
[root@manager ~]# iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
[root@manager ~]# iptables -t nat -A PREROUTING -d 192.168.0.42 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.41:8080
[root@manager ~]# iptables -t nat -A POSTROUTING -d 192.168.0.41 -p tcp --dport 8080 -j SNAT --to-source 192.168.0.42
[root@manager ~]# service iptables save
iptables:將防火牆規則保存到 /etc/sysconfig/iptables: [確定]
[root@manager ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@manager ~]# service iptables restart
iptables:將鏈設置爲政策 ACCEPT:filter nat [確定]
iptables:清除防火牆規則: [確定]
iptables:正在卸載模塊: [確定]
iptables:應用防火牆規則: [確定]
[root@manager ~]#
測試http://192.168.0.41:8080/可以訪問。
在192.168.0.42上執行:
[root@node1~]# iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
[root@node1~]# iptables -t nat -A PREROUTING -d 192.168.0.42 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 192.168.0.41:8080
[root@node1~]# iptables -t nat -A POSTROUTING -d 192.168.0.41 -p tcp --dport 8080 -j SNAT --to-source 192.168.0.42
[root@node1~]# service iptables save
iptables:將防火牆規則保存到 /etc/sysconfig/iptables: [確定]
[root@node1~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@node1~]# service iptables restart
iptables:將鏈設置爲政策 ACCEPT:filter nat [確定]
iptables:清除防火牆規則: [確定]
iptables:正在卸載模塊: [確定]
iptables:應用防火牆規則: [確定]
[root@node1~]#
測試http://192.168.0.42:8080/可以訪問。