小白也能懂的iptables核心逻辑!四张表+五条链如何守护你的网络安全?

为什么需要理解iptables的四表五链?

大家否遇到过服务器莫名被扫描、内网服务无法被外网访问,或者想限制某些IP访问但配置规则总不生效?这些问题的背后,都离不开Linux防火墙工具iptables的核心机制------四表五链。"

iptables的本质:数据包的"交通警察"

  • 把iptables比作网络流量的"交警岗",数据包是"车辆",而"四表五链"就是不同路口的"执法规则"------有的管"是否放行"(过滤),有的管"改路线/车牌"(地址转换),有的管"特殊标记"(流量跟踪)。
  • 总结:防火墙通过预定义的规则集,对经过Linux系统的数据包进行过滤(放行/拦截)、地址转换(NAT)、标记(特殊处理)等操作。

四张表:不同场景下的"规则工具箱"

表名 核心作用 典型场景
​filter表​ 数据包的"安检员":决定是否放行(DROP/ACCEPT/REJECT) 服务器只允许特定IP访问SSH(22端口),其他连接直接拒绝
​nat表​ 数据包的"化妆师":修改IP/端口(网络地址转换) 内网电脑通过服务器上网(SNAT),外网访问服务器上的内网服务(DNAT)
​mangle表​ 数据包的"标记师":修改TOS/TTL/mark等特殊字段 为VIP用户的流量打标记,后续优先处理(QoS场景)
​raw表​ 数据包的"免跟踪开关":决定是否启用状态跟踪 减少防火墙对高并发流量的跟踪负担(提升性能)

五条链:数据包的"关键节点"

  1. INPUT链:当数据包的目标IP是本机时触发(比如你访问服务器的80端口,包到了服务器后先过INPUT链)。 场景举例:配置"只允许公司IP访问本机数据库(3306端口)",规则要写在INPUT链的filter表中。
  2. OUTPUT链:当本机主动发出的数据包时触发(比如你用服务器ping外网,包从本机出去先过OUTPUT链)。 场景举例:限制本机只能访问特定网站(如公司内网),可在OUTPUT链的filter表中设置规则。
  3. FORWARD链:当数据包既不是本机发出,也不是目标为本机(即需要本机转发时触发)(比如内网电脑通过服务器上网,包经过服务器转发)。 场景举例:配置"内网所有设备通过服务器访问外网",需在FORWARD链的filter表中允许转发并配合nat表的SNAT。
  4. PREROUTING链:数据包刚进入防火墙时立即触发(修改目标地址的最佳时机)。 场景举例:外网用户访问服务器的公网IP(如80端口),实际想转发到内网某台机器的8080端口(DNAT),规则要写在PREROUTING链的nat表中。
  5. POSTROUTING链:数据包即将离开防火墙时触发(修改源地址的最佳时机)。 场景举例:内网电脑通过服务器上网时,把包的源IP从内网IP改为服务器的公网IP(SNAT),规则要写在POSTROUTING链的nat表中。

四表五链的协作流程

  1. 数据包到达防火墙:首先经过raw表(PREROUTING)(决定是否跟踪状态)→ mangle表(PREROUTING)(可打标记)→ nat表(PREROUTING)(修改目标IP/端口,如DNAT)。
  2. 判断目标:如果是本机(如访问服务器的SSH),进入filter表(INPUT链)决定是否放行;如果不是本机(如转发流量),进入mangle表(FORWARD)/filter表(FORWARD链)(检查是否允许转发)。 3.本机发出的包:先经过mangle表(OUTPUT)/nat表(OUTPUT)(修改本机发出的包)→ filter表(OUTPUT链)(决定是否放行)。 4.所有包离开前:最后经过mangle表(POSTROUTING)/nat表(POSTROUTING)(如SNAT修改源IP)→ filter表(若涉及转发)→ 离开防火墙。
相关推荐
wanhengidc2 小时前
云手机的适配性怎么样?
运维·服务器·安全·智能手机·云计算
jimy12 小时前
安卓里运行Linux
linux·运维·服务器
爱凤的小光3 小时前
Linux清理磁盘技巧---个人笔记
linux·运维
若尘啊若辰4 小时前
安全通用要求之六安全管理制度
安全·网络安全·等保·等级保护·安全通用要求
耗同学一米八4 小时前
2026年河北省职业院校技能大赛中职组“网络建设与运维”赛项答案解析 1.系统安装
linux·服务器·centos
知星小度S5 小时前
系统核心解析:深入文件系统底层机制——Ext系列探秘:从磁盘结构到挂载链接的全链路解析
linux
2401_890443025 小时前
Linux 基础IO
linux·c语言
智慧地球(AI·Earth)6 小时前
在Linux上使用Claude Code 并使用本地VS Code SSH远程访问的完整指南
linux·ssh·ai编程
老王熬夜敲代码7 小时前
解决IP不够用的问题
linux·网络·笔记