轉載 2016年12月09日 18:23:50php
firewall-cmd
命令須要firewalld
進程處於運行狀態。咱們可使用systemctl status/start/stop/restart firewalld
來控制這個守護進程。firewalld
進程爲防火牆提供服務。mysql
當咱們修改了某些配置以後(尤爲是配置文件的修改),firewall 並不會當即生效。能夠經過兩種方式來激活最新配置systemctl restart firewalld
和firewall-cmd --reload
兩種方式,前一種是重啓 firewalld 服務,建議使用後一種 「重載配置文件」。重載配置文件以後不會斷掉正在鏈接的 tcp 會話,而重啓服務則會斷開 tcp 會話。sql
能夠經過兩種方式控制端口的開放,一種是指定端口號另外一種是指定服務名。雖然開放 http 服務就是開放了 80 端口,可是仍是不能經過端口號來關閉,也就是說經過指定服務名開放的就要經過指定服務名關閉;經過指定端口號開放的就要經過指定端口號關閉。還有一個要注意的就是指定端口的時候必定要指定是什麼協議,tcp 仍是 udp。知道這個以後之後就不用每次先關防火牆了,可讓防火牆真正的生效。tcp
firewall-cmd --add-service=mysql # 開放mysql端口
firewall-cmd --remove-service=http # 阻止http端口
firewall-cmd --list-services # 查看開放的服務
firewall-cmd --add-port=3306/tcp # 開放經過tcp訪問3306
firewall-cmd --remove-port=80tcp # 阻止經過tcp訪問3306
firewall-cmd --add-port=233/udp # 開放經過udp訪問233
firewall-cmd --list-ports # 查看開放的端口
防火牆能夠實現假裝 IP 的功能,下面的端口轉發就會用到這個功能。ui
firewall-cmd --query-masquerade # 檢查是否容許假裝IP
firewall-cmd --add-masquerade # 容許防火牆假裝IP
firewall-cmd --remove-masquerade# 禁止防火牆假裝IP
端口轉發能夠將指定地址訪問指定的端口時,將流量轉發至指定地址的指定端口。轉發的目的若是不指定 ip 的話就默認爲本機,若是指定了 ip 卻沒指定端口,則默認使用來源端口。
若是配置好端口轉發以後不能用,能夠檢查下面兩個問題:spa
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080 # 將80端口的流量轉發至8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 將80端口的流量轉發至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 將80端口的流量轉發至192.168.0.1的8080端口