我在主機A上啟動了一個tcp伺服器,然後在另一台主機B上啟動了一個tcp客戶端。
兩台主機透過家裡的無線路由器處於同一個區域網路。 tcp 用戶端嘗試在連接埠 8000 上連接到 tcp 伺服器。
我可以從客戶端主機成功 ping 伺服器主機,實際上我現在已經從客戶端 ssh 進入伺服器
如果我交換兩台主機,也就是在主機B上啟動tcp伺服器,然後在主機A上啟動tcp客戶端,則TCP連線成功
伺服器主機A出了什麼問題?以下連結顯示了 iptables -L -n、ss -tlnp 和 netstat -lnp 的結果
http://paste.ubuntu.com/12785409/
以及 A 上的路由表:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
B 上的路由表:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
相關的tcp客戶端和伺服器有: https://www.cs.cmu.edu/afs/cs/academic/class/15213-f99/www/class26/tcpserver.c
http://www.cs.cmu.edu/afs/cs/academic/class/15213-f99/www/class26/tcpclient.c
我試過
殺死 vpnagent 進程
# ps ax | grep vpnagent
1291 ? S 0:00 /opt/cisco/vpn/bin/vpnagentd
4202 pts/2 S+ 0:00 grep --color=auto vpnagent
#sudo kill -9 1291
進而
# service vpnagentd stop
# sudo systemctl stop vpnagentd
不知道是不是因為這個,最後一天,連結突然就OK了。但重啟後,執行上述指令停止 vpnagent 服務,「無路由到主機」問題仍然存在
答案1
Fedora 使用firewalld 服務來阻止/允許連接埠
使用此命令尋找您的活動區域:
firewall-cmd --get-active-zones
它會顯示 public、dmz 或其他內容。您應該只申請所需的區域。
在公開嘗試的情況下:
firewall-cmd --zone=public --add-port=8000/tcp
如果你想使其永久,請嘗試:
firewall-cmd --zone=public --add-port=8000/tcp --permanent
否則,請將 dmz 替換為您的區域,例如,如果您的區域是公共區域:
firewall-cmd --zone=public --add-port=2888/tcp --permanent
然後記得重新加載防火牆以使更改生效。
firewall-cmd --reload