Linux如何配置防火墙iptables_Linux iptables防火墙配置方法

酷浩吖_8039

酷浩吖_8039

2026-04-05

403人浏览

原创

iptables是内核netfilter的用户态工具,非传统服务;重启丢规则需手动保存,确认生效需检查firewalld状态、iptables规则链、内核模块及命令版本。

linux如何配置防火墙iptables_linux iptables防火墙配置方法

iptables 不是“开个服务就能用”的传统服务,它本质是内核 netfilter 框架的用户态操作工具。在 CentOS 7+/Ubuntu 16.04+ 等现代发行版中,iptables 命令仍可用,但默认不带持久化服务——你加的规则重启就丢,除非手动保存。


怎么确认当前生效的是 iptables 还是 firewalld

别猜,直接看:

  • systemctl status firewalld:如果显示 active (running),说明 firewalld 正在管事,此时 iptables -L 显示的可能是它自动生成的兼容规则(非你手写的)
  • iptables -t filter -S:输出原始规则语句,比 -L 更可靠,能看清是否真有你加的规则
  • lsmod | grep ip_tables:返回非空说明内核模块已加载,iptables 命令底层可用
  • which iptables 和 iptables --version:确认命令存在且版本 ≥ 1.4.21(避免老系统里缺 -m state 支持)

关键点:Ubuntu 默认没装 iptables-services 包,CentOS 7+ 默认禁用 iptables 服务,但 iptables 命令本身仍可临时加规则。


添加一条放行 Web 端口的 INPUT 规则

常见错误是只写 -A INPUT -p tcp --dport 80 -j ACCEPT 就以为完事了——这规则加在链末尾,而默认策略(POLICY DROP)可能已经把包拒之门外。

正确做法(以 Ubuntu/Debian 或关闭 firewalld 的 CentOS 为例):

  • 先确保已有 ESTABLISHED/RELATED 流量放行:iptables -I INPUT 1 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
  • 再插入新规则到合适位置(比如第2条):iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT
  • 最后检查顺序:iptables -nL INPUT --line-numbers,确认 ESTABLISHED 在最前、你的规则紧随其后

注意:-I 插入比 -A 追加更安全;--dport 必须配合 -p tcp 或 -p udp,否则无效;conntrack 模块名在新版内核中替代了旧的 state 模块(-m state --state 已弃用)。


为什么重启后规则没了?怎么保存

因为 iptables 规则是运行时写进内核的,不自动落盘。不同系统保存方式不同:

  • Ubuntu/Debian:sudo apt install iptables-persistent,然后 sudo netfilter-persistent save(会存到 /etc/iptables/rules.v4)
  • CentOS 7+(启用传统服务):sudo yum install iptables-services,再 sudo service iptables save(存到 /etc/sysconfig/iptables)
  • 通用临时方案(不推荐长期用):iptables-save > /root/my-iptables.rules,开机时用 iptables-restore 加载

容易踩的坑:Ubuntu 上装了 iptables-persistent 但没运行 netfilter-persistent reload,规则依然不会加载;CentOS 7+ 执行 service iptables save 前必须先 systemctl stop firewalld,否则会被覆盖。


INPUT 链里有一条 REJECT 规则,但它总在生效,怎么调顺序

iptables 是**从上到下逐条匹配**,一旦命中就执行目标(ACCEPT/DROP/REJECT),不再继续。所以如果你在末尾加了 REJECT,又没在它前面放好 ACCEPT 规则,所有流量都会被拦住。

排查和修复步骤:

  • 用 iptables -nL INPUT --line-numbers 查看带行号的规则列表
  • 找到那条 REJECT 规则的行号(比如第5行),再看它上面有没有覆盖目标端口的 ACCEPT
  • 若没有,用 iptables -I INPUT 4 -p tcp --dport 22 -j ACCEPT 把 SSH 规则插到它前面
  • 若已有但位置靠后,先删掉再重插:iptables -D INPUT 5,再 iptables -I INPUT 4 ...

真正麻烦的不是加规则,而是理解「匹配即终止」这个逻辑——很多连不上 SSH 的问题,根源就是一条 REJECT 规则挡在了所有 ACCEPT 前面,而且没人去看行号。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
点击input框没有光标怎么办
点击input框没有光标怎么办

点击input框没有光标的解决办法:1、确认输入框焦点;2、清除浏览器缓存;3、更新浏览器;4、使用JavaScript;5、检查硬件设备;6、检查输入框属性;7、调试JavaScript代码;8、检查页面其他元素;9、考虑浏览器兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.24

754

4

tcp和udp的区别
tcp和udp的区别

TCP和UDP的区别,在连接性、可靠性、速度和效率、数据报大小以及适用场景等方面。本专题为大家提供tcp和udp的区别的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.25

483

5

udp是什么协议
udp是什么协议

UDP是OSI参考模型中一种无连接的传输层协议。本专题为大家带来udp是什么协议的相关文章,免费提供给大家。

2023.08.08

2651

5

tcp和udp有什么区别
tcp和udp有什么区别

tcp和udp的区别有:1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。想了解更多tcp相关的内容,可阅读本专题下面的相关文章。

2024.11.14

3109

8

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3910

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3353

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2493

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6050

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5682

7

热门下载

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

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习