簡介
firewalld
是一個在 Linux
中的防火牆管理工具,提供動態介面管理網路流量,它使用區域來定義網路連線的信任級別,並支援 IPv4 和 IPv6。
常用示例
啟動防火牆
sudo systemctl start firewalld
停止防火牆
sudo systemctl stop firewalld
設定防火牆開機自啟動
sudo systemctl enable firewalld
禁止防火牆開機自啟動
sudo systemctl disable firewalld
檢查防火牆的狀態
sudo systemctl status firewalld
重新載入防火牆的配置
sudo firewall-cmd --reload
檢視活動防火牆狀態
sudo firewall-cmd --state
列出所有活動區域
sudo firewall-cmd --get-active-zones
檢視指定區域的規則
sudo firewall-cmd --list-all --zone=public
列出所有區域
sudo firewall-cmd --get-zones
設定預設的區域
sudo firewall-cmd --set-default-zone=trusted
新增一個介面到區域
sudo firewall-cmd --zone=public --add-interface=eth0
從區域中移除一個介面
sudo firewall-cmd --zone=public --remove-interface=eth0
檢視指定區域的介面
sudo firewall-cmd --get-zone-of-interface=eth0
列出所有支援的服務
sudo firewall-cmd --get-services
新增一個服務到區域
sudo firewall-cmd --zone=public --add-service=http
從區域中移除一個服務
sudo firewall-cmd --zone=public --remove-service=http
檢查服務是否是啟動的
sudo firewall-cmd --zone=public --query-service=http
使服務變更永久生效
sudo firewall-cmd --zone=public --add-service=http --permanent
臨時開啟一個埠
sudo firewall-cmd --zone=public --add-port=8080/tcp
臨時關閉一個埠
sudo firewall-cmd --zone=public --remove-port=8080/tcp
使變更埠永久生效
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
列出在區域中開啟的埠
sudo firewall-cmd --zone=public --list-ports
允許來自指定 IP 的流量
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4"
source address="192.168.1.100" accept'
阻止來自指定 IP 的流量
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4"
source address="192.168.1.100" drop'
記錄並丟棄來自指定 IP 的流量
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4"
source address="192.168.1.100" log prefix="Blocked: " level="info" drop'
使規則永久生效
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4"
source address="192.168.1.100" accept' --permanent
啟用偽裝
sudo firewall-cmd --zone=public --add-masquerade
停用偽裝
sudo firewall-cmd --zone=public --remove-masquerade
在區域之間轉發流量
sudo firewall-cmd --zone=trusted --add-forward-port
=port=80:proto=tcp:toport=8080:toaddr=192.168.1.100
在指令碼或恢復模式中使用 firewall-offline-cmd
firewall-offline-cmd --add-service=http
永久儲存所有變更到磁碟
sudo firewall-cmd --runtime-to-permanent