Loading...

文章背景图

iptables四表五链

2026-03-30
0
-
- 分钟
|

iptables是Linux上位于用户空间上的的一个防火墙管理工具,他利用的是Linux中netfilter内核模块,这个工具在/sbin目录下,所以只能root用户才能操作。在Debian系统中还会使用nftables,nftables是一个用于替代iptables的用户层面的工具,他是直接在用户层面的。iptables的实际拦截时是会在内核空间运行。如果要使用nftables的话可以用sudo nft即可。下面主要介绍iptables

四表主要是用来进行记录和修改数据包,五链主要是在不同阶段的相应的规则

四个表分别是filter、net、raw、mangle

四个表是由优先级的一个链的的表的优先级是raw、mangle、nat、filter

  • filter主要是进行数据包的过滤,包含input、output、forward链

  • nat主要是进行nat地址的转换,包含prerouting、postrouting、output链。。nat是必须在数据包连接的基础上使用的,如果raw选择不进行追踪,就会跳过nat表

  • mangle主要是修改服务类型,数据包的生存周期等值,包含全部的五链

  • raw主要是进行看这个数据包是否要进行追踪,只包含output、pereouting链

数据包跟踪是一种进行消耗CPU资源的为数据包添加状态的操作,他会在内存中建立一个哈希表进行存储,这个大小是有限的,当这个连接表溢出后会导致网络连接失败。不进行追踪也不会影响后面的过滤,但是会有高级功能需要这个追踪。如果要禁止数据包在raw中进行可以提高效率,例如禁止ping,在raw中禁止ping,可以节省进行追踪的CPU资源。指定raw比默认filter效率高

五链主要是input、output、forward、prerouting、postrouting五个链

  • input主要是收到本机IP的数据包

  • output主要是发出本机IP的数据包

  • forward主要是从本机中转的数据包

  • prerouting主要是在路由确定前的数据包

  • postrouting主要是路由确定后的数据包

如果说一个机器没有开启流量中转功能ip_forward,forward就没有事情,prerouting会一直活跃,如果说ip_forward没有开启,它会数据包丢弃

评论交流

文章目录