TCP-подключение: нет маршрута к хосту

TCP-подключение: нет маршрута к хосту

Я запустил TCP-сервер на хосте A, а затем запустил TCP-клиент на другом хосте B.

Оба хоста находятся в одной локальной сети через беспроводной маршрутизатор дома. Клиент TCP пытается подключиться к серверу TCP через порт 8000. Но попытка не удалась из-за ошибки «Нет маршрута к хосту».

Я могу успешно выполнить ping на хост сервера с хоста клиента, и на самом деле теперь я подключен к серверу по ssh с клиента.

Если я поменяю местами два хоста, а именно запущу TCP-сервер на хосте B, а затем запущу TCP-клиент на хосте A, то 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 использует службу 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

Связанный контент