在 OpenEuler 中使用?firewalld
?開放指定端口的操作步驟如下,需區分臨時開放(重啟后失效)和永久開放(重啟后保留)兩種場景:
一、查詢端口當前狀態
首先確認端口是否已開放,避免重復配置:
# 格式:firewall-cmd --query-port=端口號/協議(tcp/udp)
firewall-cmd --query-port=8080/tcp # 示例:查詢8080端口(TCP協議)
- 返回?
yes
?表示已開放,no
?表示未開放。
二、臨時開放端口(即時生效,重啟后失效)
適用于臨時測試場景,無需重啟防火墻,但重啟?firewalld
?服務或服務器后規則會丟失:
# 格式:firewall-cmd --zone=public --add-port=端口號/協議
firewall-cmd --zone=public --add-port=8080/tcp # 示例:臨時開放8080端口(TCP)
--zone=public
:指定作用域為公共區域(默認常用區域,可省略)。- 如需開放 UDP 端口,將?
tcp
?替換為?udp
?即可(如?8080/udp
)。
三、永久開放端口(需重載生效,重啟后保留)
適用于生產環境,規則會保存到配置文件,重啟后不丟失,但需要手動重載配置才能立即生效:
# 格式:firewall-cmd --zone=public --add-port=端口號/協議 --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent # 示例:永久開放8080端口(TCP)
關鍵步驟:重載配置使永久規則生效
永久配置添加后,必須執行以下命令讓規則立即生效:
firewall-cmd --reload # 重載防火墻配置
四、驗證端口是否成功開放
# 再次查詢端口狀態
firewall-cmd --query-port=8080/tcp # 應返回 yes# 或列出所有已開放的端口(包括臨時和永久生效的)
firewall-cmd --list-ports
五、額外操作:開放端口范圍 / 移除端口
開放端口范圍(如開放 1000-2000 之間的所有 TCP 端口):
# 臨時開放 firewall-cmd --add-port=1000-2000/tcp # 永久開放(需重載) firewall-cmd --add-port=1000-2000/tcp --permanent && firewall-cmd --reload
移除已開放的端口:
# 移除臨時開放的端口 firewall-cmd --remove-port=8080/tcp # 移除永久開放的端口(需重載) firewall-cmd --remove-port=8080/tcp --permanent && firewall-cmd --reload
核心要點總結
firewalld
?區分運行時配置(臨時,--permanent
?不加)和永久配置(--permanent
?加)。- 永久配置必須通過?
firewall-cmd --reload
?重載后才會生效。 - 操作后務必通過?
--query-port
?或?--list-ports
?驗證結果,避免配置遺漏。