常用指令
-
檢視防火牆狀態
firewall-cmd --state
-
停止firewall
systemctl stop firewalld.service
-
禁止開機啟動
systemctl disable firewalld.service
-
開放某個服務埠--允許所有IP訪問
firewall-cmd --add-port=16379/tcp --permanent
-
移除6379埠-禁止訪問
firewall-cmd --permanent --remove-port=6379/tcp firewall-cmd --reload
-
** 只允許指定埠訪問指定伺服器埠**
# 允許192.168.142.166 IP 訪問ES 9200埠 firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.142.166" \ port protocol="tcp" port="9200" accept" firewall-cmd --reload
-
刪除規則:刪除上一條規則--撤銷192.168.142.166訪問本機9200埠的訪問許可權
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.142.166" port protocol="tcp" port="9200" accept" firewall-cmd --reload
-
其他指令
#檢視開放的埠 $ firewall-cmd --list-ports #查詢6379埠是否開放 $ firewall-cmd --query-port=6379/tcp # 檢視當前系統開啟的所有埠 firewall-cmd --zone=public --list-ports # 獲取已啟用的zonesudo dockerd –debug firewall-cmd --get-active-zones
-
docker啟動失敗,防火牆問題
ZONE_CONFLICT: 'docker0' already bound to a zone #Check if docker zone exists in firewall-cmd $ firewall-cmd --get-active-zones #If "docker" zone is available, change interface to docker0 (not persisted) $ sudo firewall-cmd --zone=docker --change-interface=docker0 #If "docker" zone is available, change interface to docker0 (persisted, thanks rbjorklin) $ sudo firewall-cmd --permanent --zone=docker --change-interface=docker0 $ sudo systemctl restart firewalld
-
檢視所有的規則
firewall-cmd --list-all
-
埠轉發: 只允許外部透過訪問18088埠訪問伺服器8088 web服務, 外部無法透過8088埠服務
- 啟用埠轉發:
sudo firewall-cmd --permanent --add-masquerade sudo firewall-cmd --reload
- 新增轉發規則:
sudo firewall-cmd --permanent --add-forward-port=port=18088:proto=tcp:toport=8088 sudo firewall-cmd --reload
- 禁用外部透過8088埠訪問 web服務
firewall-cmd --permanent --remove-port=8088/tcp sudo firewall-cmd --reload
這些命令將啟用埠轉發並新增相應的轉發規則。
第一個命令啟用了IP偽裝(masquerade),允許轉發流量。
第二個命令新增了轉發規則,將透過18088埠的流量轉發到8088埠。
第三個:防火牆中新增了阻止8088埠訪問的規則
請注意:如果你已經在防火牆中新增了阻止80埠訪問的規則,則可以跳過第一步。
- 啟用埠轉發:
應用
外部透過訪問10022埠訪問ssh服務
-
檢查防火牆是否啟用
service firewalld status #如果未啟用則啟用firewalld服務 service firewalld start
-
檢查防火牆現有規則
firewall-cmd --list-all # 輸出如下 443/tcp 80/tcp 10022/tcp 9092/tcp 8088/tcp 8080/tcp 22/tcp 20514/udp
-
檢查sshd服務, 新增sshd額外監聽埠10022,如果已配置,忽略此步驟
vim /etc/ssh/sshd_config # 新增第18行程式碼 ... 17 Port 22 18 Port 10022 19 #AddressFamily any 20 #ListenAddress 0.0.0.0 21 #ListenAddress :: ... # 重啟ssh 服務 service sshd restart
-
啟用 firewall埠轉發規則功能
sudo firewall-cmd --permanent --add-masquerade sudo firewall-cmd --reload
-
新增埠轉發規則:將10022埠轉發至埠22
sudo firewall-cmd --permanent --add-forward-port=port=10022:proto=tcp:toport=22 sudo firewall-cmd --reload
-
禁用外部透過22埠訪問sshd服務
firewall-cmd --permanent --remove-port=22/tcp firewall-cmd --reload
-
防火牆中新增了阻止8088/8080埠(星海大資料管理平臺)訪問的規則
firewall-cmd --permanent --remove-port=8088/tcp firewall-cmd --permanent --remove-port=8080/tcp firewall-cmd --reload
-
新增埠轉發規則:將19092埠轉發至埠9092(KAFKA服務),同時禁用外部透過9092訪問KAFKA服務
firewall-cmd --permanent --add-forward-port=port=19092:proto=tcp:toport=9092 firewall-cmd --permanent --remove-port=9092/tcp sudo firewall-cmd --reload