我在主机 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
不知道是不是因为这个,昨天连接突然好了,但是重启后,运行上面的命令停止vpnagent服务,还是出现“没有到主机的路由”的问题
答案1
Fedora 使用防火墙服务来阻止/允许端口
使用此命令来查找您的活动区域:
firewall-cmd --get-active-zones
它会显示公共、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