Проблема с доступом к серверу UDP - PullRequest
1 голос
/ 06 апреля 2011

Предположим, у вас есть сервер UDP, работающий на порте 9030 в Linux, и вы не можете каким-либо образом получить доступ к этому серверу UDP.Не существует брандмауэра или аналогичных устройств, препятствующих доступу к этому UDP-порту.А также, пожалуйста, знайте, что пакет достигает сетевого стека ОС, и когда ОС получает пакет, он немедленно отправляет ICMP-пакет порта назначения недоступным.И к вашему удивлению, вывод netstat показывает, что UDP-сервер работает на том порту, который вы назначили, как показано ниже:

udp        0      0 212.253.35.111:9030     0.0.0.0:* 722/udpServerApp

Также обратите внимание, что UDP-сервер прослушивает общедоступный IP-адрес, а не localhost или т. Д.этот публичный IP-адрес.

Так что может пойти не так?Какие бы у вас были лучшие догадки?Я действительно смущен.

Ответы [ 3 ]

3 голосов
/ 06 апреля 2011

Возможно, вы не слушаете по правильному адресу - например, прослушиваете 127.0.0.1 (localhost) вместо «любого» адреса.Точный вывод netstat скажет вам об этом (но вы не опубликовали его и не попросили угадать, так что вот оно).

1 голос
/ 06 апреля 2011

Ваш сокет прослушивает локальный IP-адрес 212.253.35.111, порт 9030.

С помощью tcpdump или wireshark убедитесь, что вы действительно отправляете UDP-пакеты на IP-адрес 212.253.35.111, порт 9030.

Вы либо пытаетесь подключиться к неправильному порту, неверному IP-адресу, либо к брандмауэру (например, некоторым локальным правилам iptables), который вам еще предстоит обнаружить, либо есть ошибка маршрутизации, и у вас где-то есть 2 машины с тем же IP-адресом (вполне возможно при некоторой настройке балансировки нагрузки / горячего резервирования, например, если вы используете VRRP)

0 голосов
/ 06 апреля 2011

К какому IP-адресу привязан UDP-сервер?

Если он связан только с 127.0.0.1, он не будет доступен из внешних сетевых интерфейсов.

Для прослушивания на каждом интерфейсе он должен быть привязан к INADDR_ANY.

...