firewalld是centos7開始提供的管理防火牆工具,提供了一個動態管理的防火牆,當然低層仍然調用的是 netfilter 。
一、區域(zone)
firewalld將網卡對應到不同的區域(zone),zone默認共有9個,block,dmz,drop,external,home,internal,public,trusted,work。
二、服務(services)
/usr/lib/firewalld/services目錄中,保存了另一類配置文件,每個文件對應一項具體的網絡服務,如 ssh 服務。
對應的配置文件中記錄了各項服務所使用的 tcp/udp 端口,最新的 firewalld 中默認已經定義了 70 多種服務供我們使用。
修改服務的配置只需將/usr/lib/firewalld/services中的配置文件復制到/etc/firewalld/services中修改即可。
三、firewalld常用命令
安裝
yum install firewalld
啟動
systemctl start firewalld
停止
systemctl stop firewalld
查看版本
firewall-cmd --version
查看狀態
firewall-cmd --state
重新載入
firewall-cmd --reload
查看firewalld支持的service
firewall-cmd --get-services
查看當前zone加載的service
firewall-cmd --list-services
查看區域信息
firewall-cmd --get-active-zone
查看活動的區域
firewall-cmd --get-active-zones
查看指定接口所屬區域
firewall-cmd --get-zone-of-interface=ens33
查看默認區域
firewall-cmd --get-default-zone
設置默認區域
firewall-cmd --set-default-zone public
獲取所有的區域
firewall-cmd --get-zones
拒絕所有包
firewall-cmd --panic-on
取消拒絕狀態
firewall-cmd --panic-off
查看是否拒絕
firewall-cmd --query-panic
將接口添加到區域
firewall-cmd --zone=public --add-interface=eth0
將接口從區域中刪除
firewall-cmd --zone=public --remove-interface=eth0
修改接口所屬區域
firewall-cmd --zone=dmz --change-interface=eth0
查詢區域中是否包含某接口
firewall-cmd --zone=public --query-interface=eth0
四、打開端口 (最常用)
查看區域打開的所有端口
firewall-cmd --zone=public --list-ports
加入一個端口到區域
firewall-cmd --zone=public --add-port=8080/tcp
從區域中刪除一個端口
firewall-cmd --zone=public --remove-port=8080/tcp
永久生效加上 --permanent 然后 reload 防火牆
注意,如果加上 --permanent 參數后,會把該配置寫入到指定的區域配置文件中,比如:/etc/firewalld/zones/public.xml
五、如何打開一個服務
打開一個服務,類似端口可視化,服務需要在配置文件中添加,/etc/firewalld/services目錄下。
查詢區域中啟用的服務
firewall-cmd --zone=public --list-services
將ssh服務添加到public區域
firewall-cmd --zone=public --add-service=ssh
移除服務
firewall-cmd --zone=public --remove-service=ssh
六、如何設置端口轉發
要使用端口轉發,需開啟防火牆偽裝
firewall-cmd --add-masquerade --permanent
如:我們想把訪問本機192.168.1.222的3306端口轉發到192.168.1.111主機的3306端口上
1、先把本機的3306端口放開
firewall-cmd --permanent --zone=public --add-port=3306/tcp
2、把訪問本地3306端口的請求轉發到192.168.1.111主機的3306上
firewall-cmd --permanent --zone=public --add-forward-port=port=3306:proto=tcp:toaddr=192.168.1.111:toport=3306
這樣當我們訪問222主機的3306端口時,實際訪問的是111主機的3306端口。
