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

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

Я могу успешно пропинговать хост сервера с хоста клиента, и на самом деле я теперь ssh'ed на сервер с клиента

Если я поменяю местами два хоста, а именно, я запустил tcp-сервер на хосте B, а затем запустил tcp-клиент на хосте A., тогда соединение TCP будет успешным

Что не так с сервером хоста A? следующая ссылка показывает результаты iptables -L -n, ss -tlnp и netstat -lnp

http://paste.ubuntu.com/12785409/

и таблица маршрутизации на А:

# 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

Я старался

убить впнагент процесс

# 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 ответ1

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .