雲服務器安全組放行後,系統防火牆仍可能攔截流量。CentOS 7/8 預設使用 firewalld,兼容 iptables 命令。本文提供 firewalld 永久規則、iptables 直接操作、驗證與故障排查全流程。

firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=22/tcp # SSH 必須保留
firewall-cmd --reload
# 僅允許特定 IP 訪問 80/443
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.0/24" port protocol="tcp" port="80" accept'
firewall-cmd --reload
# 查看活躍區域
firewall-cmd --get-active-zones
# 指定區域開放(如 dmz 區域)
firewall-cmd --permanent --zone=dmz --add-service=http
firewall-cmd --reload
# 開放 80/443/22
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables -I INPUT -p tcp --dport 443 -j ACCEPT
iptables -I INPUT -p tcp --dport 22 -j ACCEPT
# 保存規則(CentOS 7)
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables
# 重啟服務
systemctl restart iptables
# firewalld
firewall-cmd --list-all
firewall-cmd --list-all-zones
# iptables
iptables -nL --line-numbers
iptables -nL INPUT --line-numbers
# 本機測試
curl -I https://localhost
telnet localhost 80
nc -zv localhost 80 443
# 遠端測試
nc -zv SERVER_IP 80 443
nmap -p 80,443 SERVER_IP
| 現象 | 原因 | 解決 |
|---|---|---|
| 雲控制台已放行但不通 | 系統防火牆攔截 | 按本文配置 firewalld/iptables |
| firewall-cmd 報錯 FirewallD is not running | 服務未啟動 | systemctl enable --now firewalld |
| iptables save 後重啟失效 | firewalld 覆蓋規則 | 統一用 firewalld,或 systemctl disable firewalld |
| Docker 容器埠口衝突 | Docker 直接操作 iptables | 配置 Docker --iptables=false 或用 firewalld 管理 |
--add-service=http)而非埠口,語義清晰、自動適配 IPv6firewall-cmd --list-all-zones 輸出存證CentOS 7/8 開放 80/443 核心是:**雲安全組 + 系統 firewalld 雙層放行**。首選 firewall-cmd --permanent --add-service=http --add-service=https,--reload 生效。拒絕直接操作 iptables 除非排查兼容性問題。將防火牆規則納入基礎設施代碼管理,實現版本控制、審計追溯、自動化部署。