nat表中的链有:
PREROUTING:含义同mangleOUTPUT:含义同filterPOSTROUTING:含义同mangleraw表中的链有:PREROUTING:含义同mangleOUTPUT:含义同filter
注意 , 虽然不同的表中有同名的链 , 但他们并不是同一个链 , 并且一个链只能引用同一个表中的链 , 不能跨表引用 。 , 平时我们的防火墙策略配置 , 即是在上述各个表的各个链中配置具体的规则
规则生效顺序虽然一个链中的规则是从上到下依次匹配 , 但多个表中的多个链 , 甚至同名链的之间的匹配优先顺序是啥?这就要看下图了

文章插图
PREROUTING 链PREROUTING 链是最先生效的 , 当数据包到达网口时 , 即开始工作 。同时由于其在raw, mangle, nat表中都存在 , 其执行的优先顺序是:raw(PREROUTING) ----> mangle(PREROUTING)----> mangle(nat)
PREROUTING 一般用作对包进行目标地址修改 。比如将该包的目标地址 , 修改为非本机的另外的网络ip , 一般通过
DNAT规则进行修改 。路由决策(Routing Decision)决定一个包该走哪个链 。如果上述PREROUTING 链对包进行了目标网络ip更改 。那么决策会觉得这个是一个需要转发的数据包 , 于是会将该包转发给 FORWARD 链 。
否则 , 该包会走INPUT链
FORWARD 链FORWARD在各表中生效的优先顺序是:mangle(FORWARD) ----> filter(FORWARD)处理路由决策派发发过来的包 , 到这里的包一般目标网络地址在PREROUTING链被修改过
INPUT 链其生效顺序是: mangle(INPUT) ----> filter(INPUT)处理路由决策派发发过来的包 , 到这里的包一般目标网络地址在PREROUTING链没有被修改过 。
OUTPUT 链在目标进程端口接收到输入数据包后 , 输出的数据包 , 将在这里进行规则应用 。OUTPUT链在各表中生效的先后顺序是:raw(OUTPUT) ----> mangle(OUTPUT) ----> nat(OUTPUT) ----> filter(OUTPUT)
规则详解前面铺垫了那么多 , 主要讲解了链的复杂生效时机 , 毕竟如果包最终都到不了这个链 , 那其中的规则配置也就没有意义 。接下来 , 我们需要讲解 , 链中具体规则的设置和使用 。
一个规则一般分为两大部分:
- 匹配: 即哪些数据包会命中这个规则 , 比如一个指定的ip , 即是一个匹配规则
- 动作: 匹配到规则之后 , 需要做什么动作 , 是放行 , 还是拒绝 。
- ACCEPT: 直接接受该数据包 , 不会再走其他链条和规则 。比如filter中的input表中的某个规则命中后 , 动作是ACCEPT , 那么该数据包将被直接送达目标进程端口 。
- DROP: 直接抛弃该数据包 , 并且没有任何返回 。且不会再走其他链和规则
- REJECT: 跟DROP类似 , 但好歹还是会跟请求方返回一些拒绝信息 , 比如我们拒绝掉ICMP协议后 , ping该主机 , 会返回“destination host unreachable”
- RETURN: 当前规则不做任何处理 , 返回 。让给下一个规则处理
- LOG : 同RETURN类似 , 但只是会将请求信息记录到系统日志中 , 记录路径为:
/var/log/syslogor/var/log/messages
经验总结扩展阅读
- 华为车载智慧屏值得买吗_华为车载智慧屏使用评测
- 夏天使用空调怎么更省电 空调不制冷解决方法
- Pytest进阶使用
- RAID5 IO处理之条带读代码详解
- RAID5 IO处理之写请求代码详解
- RAID5 IO处理之重构代码详解
- RAID5 IO处理之replace代码详解
- 法国大宝能当晚霜使用吗?
- 如何使用 pyqt 读取串口传输的图像
- 你们觉得华为手机卡不卡,使用体验如何(华为加装nm卡缺点)
