欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用iptables实现端口转发

程序员文章站 2022-05-27 23:41:37
...

使用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上执行:

[[email protected] ~]# iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
[[email protected] ~]# 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 
[[email protected] ~]# iptables -t nat -A POSTROUTING -d 192.168.0.41 -p tcp --dport 8080 -j SNAT --to-source 192.168.0.42
[[email protected] ~]# service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables:     [确定]
[[email protected] ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[[email protected] ~]# service iptables restart
iptables:将链设置为政策 ACCEPT:filter nat                [确定]
iptables:清除防火墙规则:                                 [确定]
iptables:正在卸载模块:                                   [确定]
iptables:应用防火墙规则:                                 [确定]
[[email protected] ~]#

测试http://192.168.0.41:8080/可以访问。

在192.168.0.42上执行:

[[email protected]~]# iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
[[email protected]~]# 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 
[[email protected]~]# iptables -t nat -A POSTROUTING -d 192.168.0.41 -p tcp --dport 8080 -j SNAT --to-source 192.168.0.42
[[email protected]~]# service iptables save
iptables:将防火墙规则保存到 /etc/sysconfig/iptables:     [确定]
[[email protected]~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[[email protected]~]# service iptables restart
iptables:将链设置为政策 ACCEPT:filter nat                [确定]
iptables:清除防火墙规则:                                 [确定]
iptables:正在卸载模块:                                   [确定]
iptables:应用防火墙规则:                                 [确定]
[[email protected]~]#

测试http://192.168.0.42:8080/可以访问。