温馨提示×

centos防火墙规则怎么写

小樊
33
2026-09-30 00:11:07
栏目: 智能运维

在 CentOS 里,“防火墙”通常指 firewalld(CentOS 7 及以后默认)。下面按常见场景给你一套实用写法。


一、先确认防火墙状态

# 查看 firewalld 是否运行
systemctl status firewalld

# 启动并设置开机自启
systemctl start firewalld
systemctl enable firewalld

二、最常用:开放端口

1️⃣ 开放 TCP 端口(如 80、443、8080)

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

2️⃣ 开放 UDP 端口(如 53)

firewall-cmd --add-port=53/udp --permanent
firewall-cmd --reload

3️⃣ 查看已开放端口

firewall-cmd --list-ports

三、使用“服务”方式(推荐)

很多服务 firewalld 已内置规则:

# 开放 http / https
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

查看支持的服务:

firewall-cmd --get-services

四、限制 IP 访问(白名单 / 黑名单)

✅ 只允许某个 IP 访问 22 端口

firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.1.100"
port protocol="tcp" port="22" accept'
firewall-cmd --reload

❌ 拒绝某个 IP

firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="10.0.0.5" reject'
firewall-cmd --reload

五、端口转发(NAT)

把 80 转发到 8080:

firewall-cmd --permanent --zone=public \
--add-forward-port=port=80:proto=tcp:toport=8080
firewall-cmd --reload

六、CentOS 6(iptables,老系统)

如果你用的是 CentOS 6:

iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart

七、排错常用命令

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

# 查看指定 zone
firewall-cmd --zone=public --list-all

# 临时关闭(不推荐)
systemctl stop firewalld

八、示例:Web 服务器常用规则

firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

如果你能告诉我:

  • CentOS 版本(6 / 7 / 8 / Stream)
  • 具体需求(开放端口 / 限制 IP / 端口转发 / Docker)

我可以直接给你精确命令。

0 踩