虛擬機器之間能夠ping通,但是建立tcp連線時卻顯示Failed in connect to TCP server: No route to host

Ka-kaa發表於2024-10-14

實驗環境:A、B、C三臺虛擬機器,A、B一個子網、B、C一個子網,AC之間通訊透過B進行轉發。

現象:A、C相互能夠ping通,但是嘗試建立TCP連線時卻一直顯示No route to host。

能夠ping通,按理講路由表應該沒問題,但是還是先對幾個虛擬機器之間的路由表進行檢查。

透過以下指令檢視路由表:

ip route

檢視之後確實都是正常的,B也開啟了資料轉發。

懷疑是防火牆的問題。

檢視iptables規則

iptables -L

預設都接收並轉發。

檢視firewalld。

sudo firewall-cmd --list-all

都開啟firewalld,並且未配置規則。

嘗試直接從B與C建立TCP連線,發現被拒絕。

開啟C對應的防火牆埠:

sudo firewall-cmd --permanent --add-port=10001/tcp
sudo firewall-cmd --reload

開啟後B可以和C建立TCP連線了,但是A仍舊沒法正常建立連線。

嘗試關閉B的防火牆:

sudo systemctl stop firewalld

嘗試連線,發現可以正常連線了,那麼也就是說B也應該要對firewalld進行配置。

重新啟動防火牆,並將兩個埠加入信任區域,允許轉發所有流量:

sudo systemctl start firewalld
sudo firewall-cmd --zone=trusted --change-interface=ens192 --permanent
sudo firewall-cmd --zone=trusted --change-interface=ens224 --permanent
sudo firewall-cmd --zone=trusted --add-masquerade --permanent
sudo firewall-cmd --reload

之後A、C就可以正常進行通訊了。

相關文章