Я пытаюсь проверить, могу ли я получить доступ к определенному порту на удаленном сервере (оба из которых у меня есть доступ) через UDP.
Оба сервера подключены к интернету. Я использую netcat для прослушивания определенного порта.
Затем я использую nmap для проверки того, открыт ли этот порт, но не кажется, что он открыт.
Iptables выключен.
Любые предложения, почему это может быть? В конце концов я собираюсь настроить VPN-туннель, но, поскольку я очень плохо знаком с туннелями, я хочу убедиться, что у меня есть подключение к порту UDP 1194 перед продвижением.
centos
udp
networking
Замок
источник
источник
Ответы:
Не существует такого понятия, как «открытый» порт UDP, по крайней мере, в том смысле, в котором большинство людей привыкли думать (что отвечает на что-то вроде «ОК, я принял ваше соединение»). UDP не использует сессии, поэтому «порт» (читай: протокол UDP в стеке IP операционной системы) никогда не будет отвечать «успех» сам по себе.
Порты UDP имеют только два состояния: прослушивание или нет. Обычно это означает «иметь открытый сокет процесса» или «не иметь никакого открытого сокета». Последний случай должен легко обнаруживаться, поскольку система должна ответить пакетом ICMP Destination Unreachable с кодом = 3 (Порт недоступен). К сожалению, многие брандмауэры могут отбрасывать эти пакеты, поэтому, если вы ничего не получите обратно, вы точно не знаете, находится порт в этом состоянии или нет. И давайте не будем забывать, что ICMP тоже не требует сессий и не выполняет повторные передачи: пакет «Недоступный порт» вполне может быть потерян где-то в сети.
Порт UDP в состоянии «прослушивания» может вообще не отвечать (прослушивающий его процесс просто получает пакет и ничего не передает) или может отправлять что-либо обратно (если процесс действует после приема и если он действует посредством ответ через UDP на исходный IP-адрес отправителя). Опять же, вы никогда не знаете наверняка, в каком состоянии, если ничего не получите.
Вы говорите, что можете управлять принимающим хостом: это позволяет вам создать собственный протокол для проверки достижимости UDP-порта: просто установите процесс на принимающем хосте, который будет прослушивать данный UDP-порт и отвечать обратно (или отправлять вам сообщение). электронная почта, или просто сумасшедший, и
unlink()
все в файловой системе хоста ... все, что привлечет ваше внимание, сделает).источник
Чтобы проверить, отвечает ли порт udp, используйте
netcat
.Пример из справочной страницы :
Конечно, если используется брандмауэр
DROP
, который обычно имеет место при работе с интернет-шлюзами, вы не получите ответ ICMP.источник
yum install nc
(для centos)nc -ul 6111
nc -u <server> 6111
Примечание. Когда вы запускаете
nc -ul
команду на сервере, она будет подключаться только при первом подключении к нему. Как я выяснил, вы не можете переключаться между серверами ping без остановки и перезапускаnc -ul
. Фактически, если вы ^ C остановите client (nc -u ...
), вы также не сможете перезапустить клиент, не перезапустив прослушиватель сервера.источник
Тестирование открытых UDP-портов с помощью nmap чревато опасностями - нет трехстороннего рукопожатия, указывающего на открытость. Если процесс прослушивания не отвечает на все, что отправляет nmap, у nmap нет способа различить открытый порт, который не отвечает, и отфильтрованный порт.
Гораздо проще просто слушать на одном конце с netcat и использовать netcat на другом конце для отправки пакетов, и видеть, что они приходят на другом конце. Делайте это в обоих направлениях, просто будьте уверены. Вы также
tcpdump
можете увидеть, как пакеты попадают туда, куда им нужно идти.источник
У меня была похожая проблема, и я нашел хорошее решение, используя netcat здесь: http://en.wikipedia.org/wiki/Netcat#Test_if_UDP_port_is_open:_simple_UDP_server_and_client
nc -vzu <host> <port>
Я был в состоянии подтвердить, что мой порт UDP был открыт, и затем мог приступить к тестированию моего фактического кода.
источник
Вы можете сканировать порты UDP, используя следующую команду
источник
Вы можете сделать это с помощью
netcat
(nc) илиiperf
, если у вас есть другая машина для тестирования вне сети. Мой выбор -nmap
сканирование UDP из системы вне вашей среды. Какой была ваша командная строка nmap? Есть ли какие-либо аппаратные брандмауэры или другие устройства в миксе?источник
У меня простой подход. Если UDP-сервер не возвращает ожидаемые данные, я просто прекращаю собирать дграммы, предполагая, что они вышли из строя:
источник