小白也能懂的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表(若涉及转发)→ 离开防火墙。
相关推荐
微露清风4 小时前
系统性学习Linux-第二讲-基础开发工具
linux·运维·学习
不会代码的小猴5 小时前
Linux环境编程第六天笔记--system-V IPC
linux·笔记
阳光九叶草LXGZXJ5 小时前
达梦数据库-学习-48-DmDrs控制台命令(同步之Manager、CPT模块)
linux·运维·数据库·sql·学习
诸神缄默不语5 小时前
Linux命令行教程
linux
i建模7 小时前
如何在Arch Linux中重设忘记的root密码
linux·运维·服务器
青岑CTF8 小时前
攻防世界-Ics-05-胎教版wp
开发语言·安全·web安全·网络安全·php
kida_yuan8 小时前
【Linux】运维实战笔记 — 我常用的方法与命令
linux·运维·笔记
@syh.8 小时前
【linux】进程控制
linux
何中应10 小时前
vmware的linux虚拟机如何设置以命令行方式启动
linux·运维·服务器
江畔何人初10 小时前
kubernet与docker的关系
linux·运维·云原生