Linux怎么配置防火墙_Linux iptables与firewalld使用对比【指南】
技术百科
穿越時空
发布时间:2026-01-23
浏览: 次 应根据系统版本、管理习惯及功能需求选择iptables或firewalld:iptables适用于CentOS 6等旧系统,需手动保存规则;firewalld是CentOS 7+默认工具,支持动态配置与区域管理,二者不可共存。
如果您在Linux系统中需要实施网络访问控制,但面对ipta

一、iptables防火墙配置方法
iptables是基于netfilter框架的命令行工具,直接操作内核规则链,适用于CentOS 6、Debian旧版等传统系统,规则持久化需手动保存。
1、查看当前所有规则:运行iptables -L -v -n命令,显示filter表各链的匹配计数与详细规则。
2、设置INPUT链默认策略为拒绝:执行iptables -P INPUT DROP,确保未显式放行的入站流量被拦截。
3、允许本地回环通信:添加规则iptables -A INPUT -i lo -j ACCEPT,避免系统内部服务异常。
4、放行已建立连接的响应流量:运行iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT,保障TCP会话连续性。
5、开放SSH端口(22):执行iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT,启用远程管理能力。
6、保存当前规则至配置文件:使用iptables-save > /etc/sysconfig/iptables(CentOS/RHEL)或iptables-save > /etc/iptables/rules.v4(Debian/Ubuntu),确保重启后规则生效。
二、firewalld防火墙配置方法
firewalld采用动态管理模式,支持区域(zone)概念与运行时/永久配置分离,是CentOS 7+、Fedora及RHEL 8+的默认防火墙,无需重启服务即可重载规则。
1、检查firewalld服务状态:运行systemctl status firewalld确认服务是否活跃,若未运行则执行systemctl start firewalld启动。
2、查看当前活动区域:使用firewall-cmd --get-active-zones获取当前启用的区域名称,如public。
3、永久开放HTTP端口(80):执行firewall-cmd --zone=public --add-port=80/tcp --permanent,将规则写入持久配置。
4、重新加载配置使永久规则生效:运行firewall-cmd --reload,不中断现有连接即可应用新规则。
5、查询指定区域所有开放端口:使用firewall-cmd --zone=public --list-ports验证端口是否已成功添加。
6、设置默认区域为drop:执行firewall-cmd --set-default-zone=drop,使所有未明确归属区域的接口默认拒绝入站流量。
三、iptables与firewalld核心差异对比
iptables直接操作内核规则链,所有规则均为运行时生效,重启即丢失,必须显式保存;firewalld通过D-Bus接口与后台守护进程交互,支持--permanent参数写入磁盘配置,reload操作即时生效且不影响已有连接。
iptables无区域概念,管理员需自行组织INPUT/FORWARD/OUTPUT链逻辑;firewalld内置public、internal、trusted等预定义区域,可按网络环境一键切换安全策略级别。
iptables规则顺序敏感,新增规则默认追加至链尾,易因位置错误导致策略失效;firewalld规则由XML配置驱动,同一端口多次添加不会重复,自动去重并统一管理。
iptables依赖用户对表(filter/nat/mangle)和链(INPUT/OUTPUT等)的深度理解;firewalld提供高阶抽象,如--add-service=http隐式处理多端口与协议组合,降低误配风险,适合运维标准化场景。
四、兼容性与共存处理
firewalld底层仍调用iptables命令生成规则,因此二者不可同时管理同一套netfilter逻辑;若firewalld正在运行,直接修改iptables规则可能导致firewalld状态错乱甚至服务崩溃。
1、停用firewalld并启用iptables:执行systemctl stop firewalld && systemctl disable firewalld,随后安装并启动iptables-services包(CentOS 7+)。
2、清空firewalld残留规则:在停用firewalld后,运行firewall-cmd --panic-on && firewall-cmd --panic-off强制刷新内核规则表,避免旧规则残留。
3、验证底层规则一致性:使用iptables -t filter -L INPUT检查INPUT链是否仅含iptables写入的规则,确认firewalld未干预。
4、禁止firewalld开机自启:执行systemctl disable firewalld,防止系统重启后自动拉起冲突服务。
五、规则调试与故障定位
iptables调试依赖日志与计数器:启用iptables -A INPUT -j LOG --log-prefix "IPTABLES-DROP: ",配合dmesg | grep IPTABLES捕获丢包详情;LOG目标不终止规则匹配,需紧随其后添加DROP或REJECT才能生效。
firewalld调试侧重实时反馈:使用firewall-cmd --debug开启调试模式,或监听D-Bus信号dbus-monitor --system "interface='org.fedoraproject.FirewallD1'"观察配置变更事件。
1、检查iptables规则是否命中:运行iptables -L INPUT -v -n,观察对应规则的packet与byte计数是否增长。
2、确认firewalld端口是否真正开放:在客户端执行telnet 服务器IP 80,若连接超时而非拒绝,说明端口未开放或服务未监听。
3、排查firewalld区域绑定错误:使用firewall-cmd --get-zone-of-interface=eth0确认网卡所属区域,避免规则部署到错误zone。
4、验证firewalld服务端口监听状态:运行ss -tlnp | grep :80,确认httpd或nginx进程确实在80端口监听,排除服务层问题。
# 重启
# 适用于
# 您在
# 已有
# 均为
# 两种
# 而非
# 这两种
# 配置文件
# public
# 工具
# linux
# centos
# 防火墙
# 端口
# ubuntu
# linux系统
# 防火墙配置
# internal
# default
# input
# http
# ssh
# debian
# 系统版本
# xml
# 接口
# 事件
# Interface
# nginx
# Filter
# 拉起
# 可按
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Win11怎么关闭任务栏小图标_Windows11
- C++ STL算法库怎么用?C++常用算法函数(s
- Win10文件历史记录怎么用 Win10开启自动备
- 如何在Golang中验证模块完整性_Golangg
- 如何在 Go 开发中正确处理本地包导入与远程模块路
- c++如何判断文件是否存在_c++ filesys
- Win11如何设置文件权限 Win11 NTFS文
- 如何优化Golang内存分配与GC调度_Golan
- Win11怎么更改任务栏颜色_Windows11个
- 如何在Golang中处理JSON字段缺失_Gola
- Win11怎么设置DNS服务器_Windows11
- Python并发安全问题_资源竞争说明【指导】
- Windows10怎么备份注册表_Windows1
- 如何使用Golang匿名函数_快速定义临时函数逻辑
- Win11怎样激活系统密钥_Win11系统密钥激活
- Windows10怎么查看系统激活状态_Windo
- Python性能剖析高级教程_cProfileLi
- 短链接怎么自定义还原php_修改解码规则适配需求【
- XSLT怎么生成动态的HTML属性名和标签名
- Win11右键反应慢怎么办 Win11优化右键菜单
- C++如何使用std::transform批量处理
- 如何使用Golang指针与接口结合_实现方法调用和
- Win11怎么设置指纹解锁 Win11笔记本录入指
- 如何使用Golang实现RPC序列化与反序列化_G
- 如何在Golang中理解指针比较_Golang地址
- Windows如何查看和管理已安装的字体?(字体文
- 如何使用Golang reflect检查方法数量_
- Python对象比较排序规则_集合使用说明【指导】
- Win10怎样设置多显示器_Win10多显示器扩展
- c++的STL算法库find怎么用 在容器中查找指
- php与c语言在嵌入式中有何区别_对比两者在硬件控
- 微信短链接怎么还原php_用浏览器开发者工具抓包获
- Python数据挖掘进阶教程_分类回归与聚类案例解
- VSC怎样用终端运行PHP_命令行执行脚本的步骤【
- Windows10电脑怎么设置防火墙出站规则_Wi
- Win11怎么设置开机密码_Windows11账户
- 当网站SEO排名下降时,如何应对?
- php485返回空数组怎么回事_php485数据接
- Win11怎么设置快速访问_Windows11文件
- Windows如何拦截2345弹窗广告_Windo
- 微信企业付款回调PHP怎么接收_处理企业付款异步通
- Win11如何关闭游戏模式 Win11禁用Xbox
- Win11怎样彻底卸载自带应用_Win11彻底卸载
- C++中的std::shared_from_thi
- 如何用列表一次性对 DataFrame 的指定列应
- VSC怎么在PHP中调试MySQL_数据库交互排查
- Win11怎么恢复旧版开始菜单_通过软件还原Win
- Win11任务栏怎么调到左边_Win11开始菜单居
- C++如何使用Qt创建第一个GUI窗口?(入门教程
- Win10怎么创建桌面快捷方式 Win10为应用创

QQ客服