iptables
规则存在顺序。 依次检查,匹配即停(LOG策略除外),没有匹配走默认。
4表5链
filter: 本机进出
- INPUT: 入本机的数据包
- OUTPUT: 出本机的数据包
- FORWARD: 转发数据包
nat: 源IP:Port\目的IP:Port之间转换
- PREROUTING: 路由判断前执行的规则(DNAT-目的NAT/REDIRECT-重定向)
- POSTROUTING: 路由判断后执行的规则(SNAT-源NAT/MASQUERADE-广播)
- OUTPUT: 出本机的数据包
mangle: 与特殊的封包的路由标识有关
- PREROUTING、PREROUTING、OUTPUT、INPUT、FORWARD
raw: 确定是否对数据包进行状态追踪
- PREROUTING
- OUTPUT
由于 mangle 很少被使用,下图为去除mangle后的链表相关性
规则表之间顺序: raw > mangle > nat > filter
入站规则链顺序:PREROUTING > INPUT
出站规则链顺序:OUTPUT > POSTROUTING
转发规则链顺序:PREROUTING > FORWARD > POSTROUTING
路径A: 数据包进入主机,路由判断是进入主机的数据包后,主要通过fileter[INPUT]
链管控。
路径B: 数据包经主机转发给其他主机,主要经过的链是 filter[FORWARD]
和nat[POSTROUTING,PREROUTING]
。
路径C: 响应请求或者由主机主动发出的包。经路由判断后,通过filter[OUTPUT]
和nat[OUTPUT,POSTROUTING]
发出。
命令举例
- 查看规则
|
|
-t nat
指定表,如果不传则为默认的filter表;-L
列出目前的table规则;-n
不进行IP与hostname的反查,速度快;-v
显示详细信息
Ubuntu22.04,CentOS8之后,使用nf_tables作为新的内核网络过框架.具体命令参考
|
|
iptables-legacy
: ==iptables,背后是iptables框架nft
: 背后是nf_tables框架iptables-nft
: 使用方法与iptables兼容,背后框架是nf_tablesiptables
: 软连接,可在iptables-legacy
与iptables-nft
之间切换
nftables
nftables是一个新式的数据包过滤框架,旨在替代现用的iptables、ip6tables、arptables和ebtables的新的包过滤框架。
nftables旨在解决现有{ip/ip6}tables工具存在的诸多限制。相对于旧的iptables,nftables最引人注目的功能包括:改进性能、支持查询表、事务型规则更新、所有规则自动应用等等