1. 程式人生 > >CentOS 7下用firewall-cmd控制埠與埠轉發詳解

CentOS 7下用firewall-cmd控制埠與埠轉發詳解

一 、控制埠/服務

可以通過兩種方式控制埠的開放,一種是指定埠號另一種是指定服務名。雖然開放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  # 檢視開放的埠

二、偽裝IP

防火牆可以實現偽裝IP的功能,下面的埠轉發就會用到這個功能。

firewall-cmd --query-masquerade # 檢查是否允許偽裝IP
firewall-cmd --permanent --add-masquerade # 允許防火牆偽裝IP
firewall-cmd --permanent --remove-masquerade# 禁止防火牆偽裝IP

三、埠轉發

埠轉發可以將指定地址訪問指定的埠時,將流量轉發至指定地址的指定埠。轉發的目的如果不指定ip的話就預設為本機,如果指定了ip卻沒指定埠,則預設使用來源埠。

如果配置好埠轉發之後不能用,可以檢查下面兩個問題:

  • 比如我將80埠轉發至8080埠,首先檢查本地的80埠和目標的8080埠是否開放監聽了
  • 其次檢查是否允許偽裝IP,沒允許的話要開啟偽裝IP
# 將80埠的流量轉發至8080
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080
# 將80埠的流量轉發至
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.0.1192.168.0.1
# 將80埠的流量轉發至192.168.0.1的8080埠
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toaddr=192.168.0.1:toport=8080
  • 當我們想把某個埠隱藏起來的時候,就可以在防火牆上阻止那個埠訪問,然後再開一個不規則的埠,之後配置防火牆的埠轉發,將流量轉發過去。
  • 埠轉發還可以做流量分發,一個防火牆拖著好多臺執行著不同服務的機器,然後用防火牆將不同埠的流量轉發至不同機器。