iptables设置规则
Iptables 指南 1.1.19
Iptables详解
iptables/netfilter全攻略详解
iptables默认三张表:
1、filter:防火墙,包含INPUT、OUTPUT、FORWARD
2、nat:网络地转转换,包含PREROUTING、POSTROUTING、OUTPUT
3、mangle:流量整形,包含所有的五条链
iptables的五条链 ->写规则的地方
1、INPUT:数据包的目地的是LINUX主机本身
2、OUTPUT:数据包由LINUX主机本身发送
3、FORWARD:数据包从一个接口进入,另一个接口发出(如果做路由转发的话必须开启/etc/sysctl.conf 修改net.ipv4.ip_forward=1)
4、PREROUTING:做路由之前
5、POSTROUTING:做路由之后
背景
A本地机
B公网机(跳板机):公网116.56.140.66,私网172.16.1.100
C私网机:172.16.1.56
A发送116.56.140.66:5000,B将其转发到C私网机172.16.1.56:5000
转发规则设置
1、打开内核转发文件,允许转发echo "1" > /proc/sys/net/ipv4/ip_forward
2、将访问116.56.140.66:5000的数据包目的地址改为172.16.1.56:5000,但注意不要指定-d 116.56.140.66,因为公网机接收的数据包可能也是被某个路由转发过来的,原先发送到116.56.140.66:5000的数据包目的地址被该路由改变过了,即公网机接收的数据包的目的地址不是116.56.140.66sudo iptables -t nat -I PREROUTING -p tcp --dport 5000 -j DNAT --to-destination 172.16.1.56:5000
3、允许转发目的地址为172.16.1.56:5000的数据包sudo iptables -t filter -I FORWARD -p tcp -d 172.16.1.56 --dport 5000 -j ACCEPT
4、将访问172.16.1.56:5000的数据包源地址改为172.16.1.100(不要改为公网116.56.140.66)sudo iptables -t nat -I POSTROUTING -p tcp -d 172.16.1.56 --dport 5000 -j SNAT --to 172.16.1.100