centos默认不适用iptables,因此如果需要使用iptables,需要停止firewalld
systemctl stop firewalld
再centos上使用iptables需要安装iptables依赖,即iptables-services、iptables-devel这两个包
sudo yum install iptables-services iptables-devel
启动iptables
systemctl enable iptables.service && sudo systemctl start iptables.service
流量中转
1. 在/etc/sysctl.conf
文件中添加net.ipv4.ip_forward=1
,表示开启内核流量转发
2. 重新加载配置
sysctl -p
3. 正式配置iptables转发规则
iptables -t nat -A PREROUTING -p tcp --dport [源端口号] -j DNAT --to-destination [目标IP:目标端口号]
iptables -t nat -A PREROUTING -p udp --dport [源端口号] -j DNAT --to-destination [目标IP:目标端口号]
iptables -t nat -A POSTROUTING -p tcp -d [目标IP] --dport [目标端口号] -j SNAT --to-source [中转服务器IP]
iptables -t nat -A POSTROUTING -p udp -d [目标IP] --dport [目标端口号] -j SNAT --to-source [中转服务器IP]
源端口表示中转机器想要转发本机器上哪个端口进来的流量
前两条是去程,表示把源端口进来的流量都转发到目的机器上。
后两条是回程,表示把目的机器*[目标端口号]*发回来的数据的源地址修改成中转机器的地址
4.配置完成之后保存
service iptables save
当然别忘了中转机器要开启对应的端口,允许数据进来
iptables -I INPUT -p tcp --dport [源端口号] -j ACCEPT
service iptables save