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怎么开启上帝模式_创建Windows 1
- VSC怎么在PHP中调试MySQL_数据库交互排查
- Windows电脑如何进入安全模式?(多种按键方法
- php订单日志怎么记录评价_php记录订单评价日志
- Win11怎么关闭自动更新 Win11永久关闭系统
- 如何使用Golang table-driven基准
- Python函数接口文档化_自动化说明【指导】
- 如何使用Golang构建基础消息队列模拟_Gola
- 如何使用Golang table-driven f
- Win11怎么关闭通知消息_屏蔽Windows 1
- 手机php文件怎么变成mp4_安卓苹果打开php转
- Go 中的 := 运算符:类型推导机制与使用边界详
- Win11如何设置文件权限 Win11 NTFS文
- Win11怎样安装剪映专业版_Win11安装剪映教
- c++的STL算法库find怎么用 在容器中查找指
- Windows10怎么查看硬件信息_Windows
- Win11如何设置省电模式 Win11开启电池节电
- 如何在Golang中实现RPC异步返回_Golan
- 如何使用Golang包导出规则_控制函数和变量可见
- Windows怎样关闭开始菜单广告_Windows
- Win10如何备份驱动程序_Win10驱动备份步骤
- 如何使用Golang配置安全开发环境_防止敏感信息
- Python配置文件操作教程_JSONINIYAM
- Windows如何使用BitLocker To G
- c++中如何进行二进制文件读写_c++ read与
- 如何使用Golang实现Web表单数据绑定_自动映
- PythonGIL机制理解_多线程限制解析【教程】
- php嵌入式多设备通信怎么实现_php同时管理多个
- Win10如何更改任务栏高度_Windows10解
- 如何将文本文件中的竖排字符串转换为横排字符串
- Mac如何设置动态壁纸?(让桌面动起来)
- Win10怎样清理C盘阿里旺旺缓存_Win10清理
- Win11如何关闭小娜Cortana Win11禁
- c++ unordered_map怎么用 c++哈
- 如何诊断并终止卡死的 multiprocessin
- php怎么下载安装后测试是否成功_简单脚本验证方法
- Golang如何实现基本的用户注册_Golang用
- Python字符串处理进阶_切片方法解析【指导】
- php转mp4怎么保留字幕_php处理带字幕视频转
- Win11无法安装软件怎么办_Win11解除应用安
- Win11笔记本怎么看电池健康度_Win11电池报
- Windows 10自带杀毒软件在哪_Window
- php在Linux怎么部署_LNMP环境搭建PHP
- Python迭代器生成器进阶教程_节省内存与懒加载
- c++中如何使用auto关键字_c++11类型推导
- Python异步网络编程_aiohttp说明【指导
- 静态属性修改会影响所有实例吗_php作用域操作符下
- php怎么连接数据库_MySQL数据库连接的基础代
- How to Properly Use NumPy
- 使用类变量定义字符串常量时的类型安全最佳实践

QQ客服