下图为linux下netfilter的流量处理链。
举例环境:
NAT网关机2个网络接口:
Lan口:10.1.1.254/24 eth0 , Wan口:60.1.1.1/24 eth1
Lan内web server: 10.1.1.1:80
分两块:
1、NAT
最前面的PREROUTING,做DNAT操作,改变destination ip从网关机ip到内网目标机器ip。
iptables -t nat -A PREROUTING -d 60.1.1.1 -p tcp –dport 80 -j DNAT –to 10.1.1.1:80
中间的FORWARD,非本地机器的转发规则控制,需要打开 /proc/sys/net/ipv4/ip_forward 为 1
iptables -A FORWARD -d 10.1.1.1 -p tcp –dport 80 -j ACCEPT
最后的POSTROUTING,做SNAT操作,改变source ip,从外网客户端ip改变为网关机ip地址
iptables -t nat -A POSTROUTING -d 10.1.1.1 -p tcp –dport 80 -j SNAT –to 10.1.1.254
2、FILTER
在NAT.PREPOSTING之后,如果目标ip地址是本机地址,则数据包将走FILTER通道。
同样包括INPUT、FORWARD、OUTPUT阶段。
例如:拒绝某个地址包 iptables -A INPUT -s 10.250.4.49 -i eth0 -j DROP
举例:
本机端口转发,不需要管SNAT:
/sbin/iptables -t nat -A PREROUTING -d 10.249.192.168 -p tcp –dport 44000 -j DNAT –to 10.249.192.168:43000