實現目標:
服務器A和服務器B都是內網互通的,但是只有服務器A是有外網
然后現在做端口轉發實現服務器B能使用服務器A的外網IP實現外部遠程訪問
服務器A[centos7]
172.16.0.11 內網
192.168.0.11 外網
服務器B[Windows系統]
172.16.0.12 內網
1、firewalld 守護進程
firewall-cmd命令需要firewalld進程處於運行狀態。我們可以使用systemctl status/start/stop/restart firewalld來控制這個守護進程。firewalld進程為防火牆提供服務。
當我們修改了某些配置之后(尤其是配置文件的修改),firewall並不會立即生效。可以通過兩種方式來激活最新配置systemctl restart firewalld和firewall-cmd --reload兩種方式,前一種是重啟firewalld服務,建議使用后一種“重載配置文件”。
重載配置文件之后不會斷掉正在連接的tcp會話,而重啟服務則會斷開tcp會話。
2、控制端口/服務
可以通過兩種方式控制端口的開放,一種是指定端口號另一種是指定服務名。雖然開放http服務就是開放了80端口,但是還是不能通過端口號來關閉,也就是說通過指定服務名開放的就要通過指定服務名關閉;通過指定端口號開放的就要通過指定端口號關閉。還有一個要注意的就是指定端口的時候一定要指定是什么協議,tcp還是udp。知道這個之后以后就不用每次先關防火牆了,可以讓防火牆真正的生效。
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 # 查看開放的端口
3、偽裝IP
防火牆可以實現偽裝IP的功能,下面的端口轉發就會用到這個功能。
firewall-cmd --query-masquerade # 檢查是否允許偽裝IP
firewall-cmd --add-masquerade --permanent # 允許防火牆偽裝IP
firewall-cmd --remove-masquerade# 禁止防火牆偽裝IP
4、端口轉發
端口轉發可以將指定地址訪問指定的端口時,將流量轉發至指定地址的指定端口。轉發的目的如果不指定ip的話就默認為本機,如果指定了ip卻沒指定端口,則默認使用來源端口。
如果配置好端口轉發之后不能用,可以檢查下面兩個問題:
- 比如我將3389端口轉發至53389端口,首先檢查本地的3389端口和目標的53389端口是否開放監聽了
- 其次檢查是否允許偽裝IP,沒允許的話要開啟偽裝IP
#將53389端口的流量轉發至172.16.0.12的3389端口 firewall-cmd --permanent --zone=public --add-forward-port=port=53389:proto=tcp:toport=3389:toaddr=172.16.0.12
#重載firewall配置文件
firewall-cmd --reload
#列出所有信息
firewall-cmd --list-ports
#永久開放端口
firewall-cmd --zone=public --add-port=53389/tcp --permanent
#臨時刪除端口
firewall-cmd --remove-port=53389/tcp
#永久刪除卡對外開放的端口
firewall-cmd --zone=public --remove-port=53389/tcp --permanent
#刪除轉發規則
firewall-cmd --permanent --zone=public --remove-forward-port=port=53389:proto=tcp:toaddr=xxx.xx.xx.xxx:toport=3389
命令含義:
--zone #作用域
--add-port=80/tcp #添加端口,格式為:端口/通訊協議
--permanent #永久生效,沒有此參數重啟后失效
- 當我們想把某個端口隱藏起來的時候,就可以在防火牆上阻止那個端口訪問,然后再開一個不規則的端口,之后配置防火牆的端口轉發,將流量轉發過去。
- 端口轉發還可以做流量分發,一個防火牆拖着好多台運行着不同服務的機器,然后用防火牆將不同端口的流量轉發至不同機器。
參考:腳本之家