Как проверить, что порт UDP открыт? [закрыто]

13

У меня здесь дилемма. У меня есть устройство, которое связывается с другим удаленным устройством, но между ними есть межсетевой экран. Это соединение UDP, поэтому утилиты TCP не работают, чтобы проверить, открыт ли определенный порт. Я знаю, что мы можем получить это от брандмауэра, но у меня нет доступа, поэтому я должен доказать, что порт не открыт.

Исходная система - это система Windows 7, а целевая система - это устройство под управлением Linux.

JoeliNNaBit
источник
1
Без доступа к брандмауэру вы действительно не можете сказать (если, конечно, ваши системы не работают).
Ron Trunk
Вопросы, касающиеся сетей, которые вы не можете контролировать, явно не по теме.
Рон Мопин
2
Я бы проголосовал, чтобы оставить это открытым. Я думаю, что это попадает в серую область, и это полезный вопрос теории / устранения неполадок.
Ron Trunk
1
... у вас есть контроль над брандмауэром и сетями? Если нет, то это не по теме здесь.
Крейг Константин
Это сейчас лабораторная среда, мы пытаемся смоделировать будущую производственную ситуацию. Я хотел бы получить способ устранения неполадок сессий UDP без необходимости разбирать журналы на стороне сервера. Но спасибо, я считаю, что это невозможно по характеру общения.
JoeliNNaBit

Ответы:

10

UDP, очевидно, является протоколом «посылай и забывай». Например, во время сканирования UDP NMap единственным способом окончательно доказать, что порт UDP открыт, является получение ответа от этого порта. Имейте в виду, что многие службы могут не отвечать на произвольные данные и требуют протокольных или специфичных для приложения запросов, чтобы гарантировать ответ. Однако некоторые коды ICMP могут гарантировать, что порт закрыт. RFC 792 и RFC 1122 дают нам хорошую информацию о том, что ожидать, когда порт закрыт.

Например, код 3 ICMP типа 3 «Порт назначения недоступен», практически гарантированно будет закрытым портом.

Полный список кодов можно найти здесь:

http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xhtml

Плюсы
источник
1
Спасибо за ответ. Я буду исследовать больше о запросах ICMP типа 3.
JoeliNNaBit
7

Это быстрый рецепт:

1) Запустите анализатор пакетов:

sudo tcpdump -n -i eth2 icmp &
[1] 1409
$ tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth2, link-type EN10MB (Ethernet), capture size 262144 bytes

2) Отправьте пакет UDP:

$ echo reply-me | nc -u 1.0.0.2 1000

3) Если вы получили «ICMP-порт недоступен», этот UDP-порт закрыт:

20:54:15.475211 IP 1.0.0.2 > 1.0.0.1: ICMP 1.0.0.2 udp port 1000 unreachable, length 45

4) В противном случае обычно либо порт открыт, либо что-то блокирует ICMP.

Эвертон
источник
1
Поскольку исходной системой является Windows 7, команды Linux не будут работать.
Рон Мопин
1
Да, это правда, но я попробую виртуальную машину и проверим, работает ли она.
JoeliNNaBit
4

"nc -uvz ip port"не так точно, вы, вероятно, должны использовать "nmap -sU -p port ip", если результат показывает «open», то порт udp, вероятно, открыт, если он показывает «open | Filter», то, вероятно, он закрыт или фильтрован.

Тюремщик Жесткий
источник