Как проверить доступность UDP-порта

«Как проверить доступность UDP-порта» — вопрос из категории Сети, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Проверка UDP-порта сложнее, чем TCP, из-за отсутствия handshake. Я обычно использую комбинацию инструментов.

1. Базовое сканирование с nmap:

sudo nmap -sU -p 53 192.168.1.1

Опция -sU указывает на UDP-сканирование. Результат open|filtered означает, что порт либо открыт, либо его блокирует файрвол (так как открытый UDP-порт может не отвечать).

2. Проверка с отправкой полезной нагрузки (если известен протокол): Для DNS-порта (53) можно использовать dig или nmap со скриптом:

nmap -sU -p 53 --script dns-recursion 192.168.1.1

3. Использование netcat (nc) для отправки данных:

echo "test" | nc -u -w 2 192.168.1.1 161

Здесь -u для UDP, -w 2 — таймаут в 2 секунды. Если сервис на порту 161 (SNMP) ожидает конкретный запрос, он может ответить.

Ключевой момент: Отсутствие ответа не всегда означает, что порт закрыт. Для надежной проверки нужно либо знать ожидаемый протокол и отправить валидный запрос, либо анализировать трафик с помощью tcpdump, чтобы увидеть, приходят ли ICMP-сообщения "port unreachable" (что указывает на закрытый порт).