netfilter 为linux 第三代防火墙,前面为 ipfwadm 与 ipchains
netfilter 有四个表,五条链,四种状态
四个表: raw 表 在连接链路检测之前,主要做防火墙性能优化用
mangle 表 修改进入linux设备的数据包相关参数,可以改ip的dscp 值,后者加上 mangle 的mark 标记
nat 表 只要是一些 SNAT,DNAT 用
filter 表 防火墙的核心,包过滤的作用
每个表有不同的链:
raw:
PREROUTING 链
OUTPUT 链
mangle:
PERROUTING 链,
INPUT链,
FORWARD链,
OUTPUT链
POSTROUTING链
nat:
PERROUTING 链,
OUTPUT链
POSTROUTING链
数据包的转发流程依次是 raw> mangle > nat > filter
netfilter 数据转发流程:
iptables 为 netfilter 统一的规则匹配接口
部分举例:
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT
iptabels -A FORWARD -i eth1 -o eth0 -p tcp --dport 80 -j DROP
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 10.0.1.200
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.1:80
iptables -t mangle -A OUTPUT -p tcp --dport 22 -j DSCP --set-dscp 43