iptables可以认为是一种防火墙,可以拦截、转发特定包
*:它和firewall是同一角色,都是操作内核对网络的配置。所以在iptables和firewall同时配置时,配置均生效
iptables内的“四表五链”逻辑
我们可以在 FORWARD chain中配置转发
1、配置UDP转发
转发10000端口的udp包至172.16.0.1机器
sudo iptables -t nat -A PREROUTING -p udp --dport 10000 -j DNAT --to-destination 172.16.0.1:10000
sudo iptables -t nat -A POSTROUTING -p udp --dport 10000 -d 172.16.0.1 -j MASQUERADE
sudo iptables -I FORWARD -p udp --dport 10000 -d 172.16.0.1 -j ACCEPT # 允许本机转至172.16.0.1的规则
sudo iptables -I FORWARD -p udp --sport 10000 -s 172.16.0.1 -j ACCEPT # 允许源ip为172.16.0.1的转发
参数解析:
-t 表nat
-A 添加规则,添加至表尾
-I 插入规则,插入至表头
-p 协议
--dport 目标端口
--sport 源端口
-j 操作
-d 目标ip
-s 源ip
2、配置TCP转发
与udp类似,将-p参数改为tcp即可
sudo iptables -t nat -A PREROUTING -p tcp --dport 1555 -j DNAT --to-destination 172.16.0.1:1555
sudo iptables -t nat -A POSTROUTING -p tcp --dport 1555 -d 172.16.0.1 -j MASQUERADE
sudo iptables -I FORWARD -p tcp --dport 1555 -d 172.16.0.1 -j ACCEPT
sudo iptables -I FORWARD -p tcp --sport 1555 -s 172.16.0.1 -j ACCEPT
3、iptables配置持久化
sudo systemctl status iptables #查看服务是否已安装
sudo yum install iptables-services #安装服务
#开启iptables服务前,用命令sudo service iptables save保存一下当前配置,否则可能会被覆盖
sudo service iptables save
sudo systemctl start iptables
sudo service iptables save
sudo cat /etc/sysconfig/iptables
至此,iptables配置全部持久化,每次重启机器,iptables service会读取 /etc/sysconfig/iptables 下的配置并加载