iptables四表五链
在iptables中,”4表5链“是指iptables的四个表和五个链,它们共同作用于数据包的过滤和处理。
iptables 的四表五链(filter 表、nat 表、mangle 表、raw 表,以及 INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING 链)都属于三层协议(网络层)处理。
如果数据包在二层(数据链路层)进行转发,例如通过网桥(bridge)或交换机进行转发,这些数据包不会经过 iptables 的这些链。
四表
- filter表:这是最常用的表,主要用于数据包过滤。它包含了所有与防火墙相关的规则。
- nat表:用于网络地址转换(NAT),例如源地址转换(SNAT)和目的地址转换(DNAT)。
- mangle表:用于修改数据包的内容,例如更改TTL值或设置标记。
- raw表:用于配置数据包的跟踪(connection tracking),通常用于排除某些数据包不被跟踪。
五链
- PREROUTING链:在数据包进入防火墙时最先处理的链,主要用于修改数据包的目的地址。
- INPUT链:处理进入本地系统的数据包。
- FORWARD链:处理转发的数据包,即那些不进入本地系统的数据包。
- OUTPUT链:处理从本地系统发出的数据包。
- POSTROUTING链:在数据包离开防火墙时处理,主要用于修改数据包的源地址。
规则
在iptables规则中,target
(目标)指定了当数据包匹配规则时应执行的动作。target
可以是内置的动作,也可以是用户自定义的链。以下是一些常见的target
及其作用:
- ACCEPT:允许数据包通过。
- DROP:丢弃数据包,不发送任何响应。
- REJECT:拒绝数据包,并发送一个响应(例如ICMP错误消息) 。
- LOG:记录数据包的相关信息到系统日志中,但不改变数据包的处理。
- MASQUERADE:用于动态网络地址转换(NAT),通常用于共享互联网连接。
- SNAT:静态网络地址转换,修改数据包的源地址。
- DNAT:目的地址转换,修改数据包的目的地址。
- REDIRECT:重定向数据包到本地机器的另一个端口。
这些target
可以通过-j
选项在iptables规则中指定。例如:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
这条规则表示允许所有到达本地端口22的TCP数据包通过。
转发
在二层转发的情况下,数据包是根据 MAC 地址进行处理和转发的,而不是根据 IP 地址。因此,iptables 的规则不会应用于这些数据包。
如果你希望在二层转发时也能应用 iptables 规则,可以启用 bridge-nf-call-iptables
参数,这样二层桥接的数据包在转发时也会调用 iptables 的 FORWARD 链规则:
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
启用后,二层桥的数据包在转发时会经过 FORWARD 链,从而可以应用 iptables 规则。
- 原文作者:生如夏花
- 原文链接:https://DBL2017.github.io/post/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/iptables%E5%9B%9B%E8%A1%A8%E4%BA%94%E9%93%BE/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。