最后更新于

CentOS配置防火墙命令


CentOS系统中的firewall-cmd是管理防火墙的重要工具。本文将详细介绍各种常用的防火墙配置命令,帮助您快速掌握防火墙管理技巧。

🔓 端口管理

开放单个端口

firewall-cmd --zone=public --add-port=443/tcp --permanent

相当于配置:

<port protocol="tcp" port="443"/>

开放端口范围

firewall-cmd --zone=public --add-port=30000-32767/tcp --permanent

相当于配置:

<port protocol="tcp" port="30000-32767"/>

针对特定IP开放端口

firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="10.244.0.0/16" port protocol="tcp" port="1-65535" accept'

相当于配置:

<rule family="ipv4">
  <source address="10.244.0.0/16"/>
  <port protocol="tcp" port="1-65535"/>
  <accept/>
</rule>

删除端口规则

firewall-cmd --zone=public --remove-port=80/tcp --permanent

🔄 配置管理

重新加载配置

firewall-cmd --reload

查看防火墙规则

查看public区域规则:

firewall-cmd --list-all

仅查看端口部分:

firewall-cmd --zone=public --list-ports

查看所有区域策略:

firewall-cmd --list-all-zones

⚙️ 服务管理

防火墙服务控制

# 启动
systemctl start firewalld
# 停止
systemctl stop firewalld
# 重启
systemctl restart firewalld
# 启用开机自启
systemctl enable firewalld
# 禁用开机自启
systemctl disable firewalld

查看防火墙状态

firewall-cmd --state

🌐 高级配置

IP地址伪装

IP地址伪装用于使内部网络的计算机可以与外部网络通信(NAT功能)。

# 启用IP地址伪装
firewall-cmd --add-masquerade --permanent
# 关闭IP地址伪装
firewall-cmd --remove-masquerade
# 检查是否允许伪装IP
firewall-cmd --query-masquerade

网络接口管理

将网络接口添加到信任区域,允许该接口的所有流量通过防火墙:

firewall-cmd --zone=trusted --add-interface=cni0 --permanent

等价于生成配置文件 /etc/firewalld/zones/trusted.xml

<?xml version="1.0" encoding="utf-8"?>
<zone target="ACCEPT">
  <short>Trusted</short>
  <description>All network connections are accepted.</description>
  <interface name="cni0"/>
</zone>

端口转发

配置端口转发,将本地端口的流量转发到其他服务器:

# 将访问63790端口的流量转发到192.168.0.1:6379
firewall-cmd --add-forward-port=port=63790:proto=tcp:toaddr=192.168.0.1:toport=6379 --permanent

💡 提示: 所有带 --permanent 参数的命令都需要执行 firewall-cmd --reload 才能生效。