前言
有这么一个需求,需要把访问本机(192.168.1.1)的80端口的流量转发到局域网另一台服务器(192.168.1.2)的8080的端口上,如果是web服务,那么可以使用nginx进行反向代理把web流量用proxy_pass的方式转发到192.168.1.2上,我们将采用iptables的方式,可以将所有的tcp或者udp都转发到另一台机器上。
如果你的机器是CentOS7或者8,或者Ubuntu,默认没有安装iptables ,可以查看我的另一篇博文:
https://blog.terrynow.com/2021/02/16/centos7-ubuntu-iptables-firewall/
准备工作,检查linux的ip_forward配置
#修改/etc/sysctl.conf文件 vim /etc/sysctl.conf #找到net.ipv4.ip_forward如果它的值是0就改成1,如果没有,就新增一行,输入以下内容 net.ipv4.ip_forward = 1#改成1 #修改保存后,使配置生效 sysctl -p /etc/sysctl.conf
准备工作2,检查是否有iptables
which iptables #or systemctl status iptables #如果Unit iptables.service could not be found.说明没有安装,或者系统默认安装的不是iptables防火墙 #那么可以参考 https://blog.terrynow.com/2021/02/16/centos7-ubuntu-iptables-firewall/ 安装iptables防火墙
#清空NAT表 iptables -F -t nat #将外网访问的80端口的tcp流量转发到192.168.1.2:8080端口 iptables -t nat -I PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:8080 iptables -t nat -I POSTROUTING -p tcp --dport 8080 -j MASQUERADE #将本机的5900转发到192.168.1.2的5900,即两个端口一样的情况 iptables -t nat -I PREROUTING -p tcp --dport 5900 -j DNAT --to-destination 10.22.7.2:5900 iptables -t nat -I POSTROUTING -p tcp --dport 5900 -j MASQUERADE
如果CentOS要写到配置文件里,以便重启后生效
#80 forward到本机的8080,写到vim /etc/sysconfig/iptables #最后加上如下: *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [3:353] :POSTROUTING ACCEPT [3:353] -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 COMMIT
如果是Ubuntu,保存到配置文件
iptables-apply iptables-save > /etc/network/iptables.up.rules
文章评论