当前位置:首页>Linux>Linux防火墙详解:Firewalld与Iptables对比+实操命令大全

Linux防火墙详解:Firewalld与Iptables对比+实操命令大全

  • 2026-10-11 07:29:30
Linux防火墙详解:Firewalld与Iptables对比+实操命令大全

技术弄巷

读完仅需

5
分钟

记得星标公众号

前言

在Linux服务器运维工作中,防火墙是保障服务器安全、拦截恶意访问、管控进出流量的核心工具。CentOS 7之后系统默认采用Firewalld防火墙,替代了传统的Iptables。

很多运维人员分不清Firewalld和Iptables区别,不懂区域概念、不会放行端口、不会配置NAT转发。本文通俗易懂讲解Firewalld底层原理、二者区别、区域机制、常用命令、配置文件、实战实验,全程真实运维命令,零基础也能看懂,适合收藏做手册。

一、Firewalld与Iptables核心对比

1、底层关系

Firewalld 并不是全新防火墙,它是iptables的前端控制器,二者底层均依赖Linux内核 Netfilter框架实现防火墙功能。真正过滤数据包的是内核Netfilter,两个工具只是规则管理工具。

2、本质区别

  1. Iptables(静态防火墙)
  • 修改规则必须全局reload
  • 刷新规则会断开当前所有已建立连接
  • 默认策略:默认放行,禁止需要手动限制
  1. Firewalld(动态防火墙)
  • 支持单条规则动态修改,无需全局重载
  • 修改规则不会断开现有连接
  • 默认策略:默认拒绝,放行需要手动添加
  • 人性化程度高,不懂四表五链也能上手

3、优缺点总结

✅ Firewalld优点

  • 动态修改规则,不中断业务连接
  • 语法简单、通俗易懂、学习成本低
  • 自带区域zone机制,安全划分更规范

❌ Firewalld缺点

  • 默认全部拒绝,所有服务、端口必须手动放行

二、Firewalld核心概念:区域Zone

1、区域介绍

Firewalld最大特色就是区域管理机制。将网络划分为不同可信级别区域,不同区域配置不同规则,管控数据流。

  • 外网:不可信区域
  • 内网:高可信区域

2、默认区域

Firewalld 默认区域为 public

3、常见区域说明

  • public:公共区域,默认,仅放行ssh、dhcpv6-client
  • trusted:信任区域,全部允许
  • block:拒绝所有外部连接

三、Firewalld安装与基础命令

1、安装防火墙

yum install firewalld firewalld-config -y

2、基础查看命令

# 查看防火墙运行状态
firewall-cmd --state

# 查看当前激活区域
firewall-cmd --get-active-zones

# 查看默认区域
firewall-cmd --get-default-zone

# 查看public区域详细规则
firewall-cmd --zone=public --list-all

# 查看系统支持所有服务
firewall-cmd --get-services

# 查看所有区域规则
firewall-cmd --list-all-zones

3、修改默认区域

# 修改默认区域为trusted
firewall-cmd --set-default-zone=trusted

4、重载防火墙

firewall-cmd --reload

四、配置文件方式修改防火墙

配置文件存放路径:/etc/firewalld/zones/以public.xml为例:

<?xml version="1.0" encoding="utf-8"?>
<zone>
<short>Public</short>
<description>For use in public areas.</description>
<servicename="ssh"/>
<servicename="dhcpv6-client"/>
<servicename="http"/>
<servicename="ftp"/>
</zone>

修改后重启服务生效:

systemctl restart firewalld

五、防火墙端口与访问控制实验

实验一:http服务访问控制

1、移除http服务(永久生效)

firewall-cmd --permanent --remove-service=http
firewall-cmd --reload

此时外部无法访问80端口。

2、仅允许指定IP访问80端口

# 允许192.168.100.110访问80端口
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 192.168.100.110 -j ACCEPT

# 禁止其他所有IP访问80端口
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -p tcp --dport 80 ! -s 192.168.100.110 -j ACCEPT

3、删除自定义规则

firewall-cmd --direct --remove-rule ipv4 filter INPUT 1 -p tcp --dport 80 -s 192.168.100.110 -j ACCEPT

六、实验二:Firewalld实现NAT路由转发

1、NAT服务端配置

# 开启地址伪装(NAT转发)
firewall-cmd --permanent --add-masquerade
firewall-cmd --reload

# 开启内核转发功能
echo 1 >/proc/sys/net/ipv4/ip_forward

2、客户端配置

客户端网关指向NAT服务器网卡,即可实现内网穿透、访问外网。

route -n

测试连通性:

ssh 172.17.10.222
curl 172.17.10.222

七、核心要点总结

  1. 底层原理
    :Firewalld是iptables前端工具,底层依赖内核Netfilter,并非独立防火墙。
  2. 本质区别
    :iptables静态重载断连接;firewalld动态修改不中断业务。
  3. 默认策略
    :iptables默认放行;firewalld默认拒绝,安全性更高。
  4. 核心特色
    :Zone区域机制,划分网络可信等级,适合企业复杂网络环境。
  5. 生产建议
    :生产环境优先使用Firewalld,不随意reload,避免业务中断。
  6. 常用场景
    :端口放行、IP限制、NAT转发、内网穿透、服务访问控制。

写在最后

Firewalld是运维工程师必掌握的Linux安全工具,生产环境使用率极高,无论是端口放行、安全拦截、内网转发都离不开它。相比于复杂难记的iptables,firewalld语法简单、动态生效、无业务中断,更适合现代云服务器、企业服务器使用。

我会持续更新Linux运维、防火墙、安全加固、shell脚本、服务部署干货。 点赞+收藏+关注,持续学习进阶运维技术,做一名专业高效的运维工程师!

不用出门也能体验一杆清台的快乐!《台球王者》完美还原真实台球手感,力度、角度全靠你掌控,和全国玩家在线对战,秀出你的一杆清台操作!关注我,后续还会分享更多竞技对战类小游戏,点击下方就能直接开玩👇#台球王者 #台球小游戏 #对战小游戏 #竞技小游戏 #一杆清台 #休闲对战

最新文章

随机文章