0

0

Linux 防火墙 iptables 的工作原理

冷炫風刃

冷炫風刃

发布时间:2026-01-25 17:48:09

|

171人浏览过

|

来源于php中文网

原创

iptables不是防火墙而是配置netfilter的工具;netfilter有PREROUTING、INPUT、FORWARD、OUTPUT、POSTROUTING五个严格串行的钩子点;四表优先级为raw>mangle>nat>filter,且各表链不可混用;规则仅存内存,需手动持久化。

linux 防火墙 iptables 的工作原理

iptables 不是防火墙,而是配置 netfilter 的工具

很多人一说“Linux 防火墙”,就直接敲 iptables 命令,误以为它就是防火墙本身。其实不是:真正的防火墙能力在内核里,叫 netfilteriptables 只是用户空间的一个配置程序,负责把你的规则“写进” netfilter 的钩子点里。就像你用遥控器调电视音量,遥控器不是喇叭,但没它你就没法控制喇叭——iptables 就是那个遥控器。

数据包经过哪五个关键位置?记住钩子点顺序

netfilter 在内核网络中预设了五个检查点(hook points),所有数据包必经其一或多个。它们不是并列的,而是按流向严格串行:

  • PREROUTING:刚进网卡、还没做路由判断时——适合做 DNAT(比如把公网 8080 映射到内网 80)
  • INPUT:路由后确认目标是本机 → 进入本机服务(如 SSH、Nginx)
  • FORWARD:路由后发现目标不是本机 → 要转发出去(路由器/网关场景)
  • OUTPUT:本机进程发出的数据包 → 出门前最后一道关
  • POSTROUTING:即将发往网卡前——适合做 SNAT(比如内网共享一个公网 IP 上网)

记错顺序会导致规则不生效。例如:想限制本机访问外网某端口,必须在 OUTPUT 链加规则,而不是 INPUT——后者只管“进来”的包。

四表五链不是随便组合,优先级和用途强绑定

iptables 的“表(table)”本质是功能分类,不同表在数据包流程中触发时机不同,且有固定优先级:raw > mangle > nat > filter。这意味着:

  • raw 表最早介入,可关闭连接追踪(NOTRACK),常用于高性能场景(如负载均衡器)
  • nat 表只在 PREROUTING/OUTPUT/POSTROUTING 链可用,且仅对**首个分片**生效(后续分片走 conntrack 状态,不会再次匹配 nat 规则)
  • filter 是默认表,只管放行/拦截,对应 INPUT/FORWARD/OUTPUT 链——日常封端口、限 IP 全靠它
  • 你在 filter 表里给 PREROUTING 链加规则?会报错:iptables: No chain/target/match by that name,因为该链根本不在 filter 表中定义

规则生效 ≠ 立即持久化,重启后消失是常态

iptables -A INPUT -p tcp --dport 22 -j ACCEPT 加完规则,立刻生效,但这是纯内存操作。系统重启、甚至某些发行版的服务 reload,都会清空规则。常见误区:

  • Ubuntu 用户以为 systemctl restart iptables 有用——其实 Ubuntu 默认没这个 service,得装 iptables-persistent 并运行 netfilter-persistent save
  • CentOS 7+ 默认用 firewalld,直接敲 iptables 命令可能被覆盖;若坚持用 iptables,需先 systemctl disable firewalld && systemctl mask firewalld
  • 保存命令不是万能的:iptables-save > /etc/iptables.rules 只是导出文本,恢复要靠 iptables-restore ,且得确保开机时自动执行(比如写进 /etc/network/if-pre-up.d/iptables 或 systemd unit)

最易被忽略的一点:规则顺序决定命运。iptables 按从上到下逐条匹配,一旦命中 -j ACCEPT-j DROP 就终止查找。所以“允许已建立连接”这种宽泛规则,一定要放在“拒绝所有”之前,否则全被拦死。

相关专题

更多
nginx 重启
nginx 重启

nginx重启对于网站的运维来说是非常重要的,根据不同的需求,可以选择简单重启、平滑重启或定时重启等方式。本专题为大家提供nginx重启的相关的文章、下载、课程内容,供大家免费下载体验。

231

2023.07.27

nginx 配置详解
nginx 配置详解

Nginx的配置是指设置和调整Nginx服务器的行为和功能的过程。通过配置文件,可以定义虚拟主机、HTTP请求处理、反向代理、缓存和负载均衡等功能。Nginx的配置语法简洁而强大,允许管理员根据自己的需要进行灵活的调整。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

501

2023.08.04

nginx配置详解
nginx配置详解

NGINX与其他服务类似,因为它具有以特定格式编写的基于文本的配置文件。本专题为大家提供nginx配置相关的文章,大家可以免费学习。

498

2023.08.04

tomcat和nginx有哪些区别
tomcat和nginx有哪些区别

tomcat和nginx的区别:1、应用领域;2、性能;3、功能;4、配置;5、安全性;6、扩展性;7、部署复杂性;8、社区支持;9、成本;10、日志管理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

232

2024.02.23

nginx报404怎么解决
nginx报404怎么解决

当访问 nginx 网页服务器时遇到 404 错误,表明服务器无法找到请求资源,可以通过以下步骤解决:1. 检查文件是否存在且路径正确;2. 检查文件权限并更改为 644 或 755;3. 检查 nginx 配置,确保根目录设置正确、没有冲突配置等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

337

2024.07.09

Nginx报404错误解决方法
Nginx报404错误解决方法

解决方法:只需要加上这段配置:try_files $uri $uri/ /index.html;即可。想了解更多Nginx的相关内容,可以阅读本专题下面的文章。

3510

2024.08.07

nginx部署php项目教程汇总
nginx部署php项目教程汇总

本专题整合了nginx部署php项目教程汇总,阅读专题下面的文章了解更多详细内容。

25

2026.01.13

nginx配置文件详细教程
nginx配置文件详细教程

本专题整合了nginx配置文件相关教程详细汇总,阅读专题下面的文章了解更多详细内容。

29

2026.01.13

c++ 根号
c++ 根号

本专题整合了c++根号相关教程,阅读专题下面的文章了解更多详细内容。

58

2026.01.23

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.8万人学习

Git 教程
Git 教程

共21课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号