Перейти к основному содержимому

Мониторинг портов TCP и UDP

TCP-монитор открывает соединение с хостом и портом и сообщает, приняла ли его та сторона. UDP-монитор отправляет датаграмму на хост и порт и сообщает, пришло ли что-нибудь в ответ. Оба отвечают на один вопрос — отвечает ли этот порт, — но с очень разной степенью уверенности, и вторая половина страницы в основном про эту разницу.

Проверяйте свои TCP- и UDP-порты каждую минуту
Бесплатно и без карты: до 55 мониторов, оповещения в Telegram или на почту.
Добавить порт

Для чего подходит

Сервисы без веб-интерфейса

База данных на 5432, Redis на 6379, брокер сообщений на 5672, SSH на 22, игровой сервер, внутренний бинарный протокол. Запрашивать нечего и статус-страницы нет — но слушатель либо принимает соединение, либо нет, и обычно именно об этом вы и хотите узнавать первым.

:22:5432:6379

Сервисы, которые говорят только по UDP

NTP на 123, SNMP на 161, порты VPN и игровых запросов вообще не отвечают на TCP-соединение, поэтому UDP-монитор с правильной нагрузкой — единственный способ их увидеть. DNS на 53 слушает и TCP тоже, но голое соединение туда говорит только то, что порт открыт.

TCPUDP:123

Правило файрвола, проброс порта или туннель, которые вы только что поменяли

Проверка из региона PingZen видит порт так же, как его видит внешний пользователь, и ловит случай, когда сервис работает прекрасно, а что-то перед ним никого не пускает. Чтобы посмотреть на тот же порт изнутри, запустите монитор с приватного чекера.

:5432

Подтвердить, что слушатель поднялся после деплоя или перезагрузки

Процесс, упавший на старте, оставляет порт закрытым, а закрытый порт — самый быстрый однозначный сигнал. Если сервис ещё и здоровается баннером, TCP прочитает его и проверит, что отвечает нужная версия.

:22:22SSH-2.0-OpenSSH_9.6

Для чего не подходит

Проверка порта говорит, что дверь открывается. Что за ней — она не говорит:

Что нужно узнатьЧто использовать
Работает ли веб-сервис на этом порту? TCP-проверка на 8080 проходит, пока приложение отвечает 500 на каждый запросМонитор HTTP / HTTPS
Скоро ли истечёт сертификат? TCP-проверка вообще не начинает TLS и остаётся зелёной до того дня, когда сертификат умрётМонитор TLS/SSL-сертификата
Доступна ли машина вообще, когда никакого осмысленного порта нет?Монитор Ping (ICMP)
Возвращает ли DNS-сервер правильные записи? UDP-проверка на 53 доказывает только то, что кто-то ответил, но не то, что он сказалМонитор DNS
Ходит ли почта? Открытый порт 25, 587, 993 или 995 ничего не говорит про вход, STARTTLS и почтовый ящикМонитор SMTP, IMAP или POP3
Проксирует ли прокси на самом деле? TCP-проверка на 1080 доказывает, что порт открыт, а не то, что работают рукопожатие, логин-пароль и исходящий каналМонитор SOCKS5 или монитор MTProxy
Поднимается ли WebSocket и ходят ли по нему сообщения? TCP-соединение с 443 ничего не говорит про рукопожатиеМонитор WebSocket
Жива ли задача или устройство, до которых из интернета не достучаться?Монитор Heartbeat — задача сама зовёт его

Почему TCP и UDP — это не одна и та же проверка

TCPUDP?

У TCP есть рукопожатие. Когда монитор подключается, та сторона либо завершает его, либо нет, и каждый исход что-то значит. Принятое соединение доказывает, что процесс слушает порт и готов работать. Отказ доказывает, что хост жив, а на этом порту никого нет. Оба ответа — настоящие.

У UDP рукопожатия нет. Отправка датаграммы — локальная операция: пакет ушёл, и сеть никому ничего не должна рассказывать о его судьбе. Поэтому UDP-монитор не может узнать ничего одной только отправкой. Он должен послать то, на что сервис ответит, и дождаться ответа. Ответ — это и есть всё доказательство.

Отсюда и требование к нагрузке: она должна подходить сервису. На случайные байты большинство сервисов просто промолчит, а молчание выглядит точно так же, как авария.

Что делает TCP-проверка

  1. Открывает соединение с хостом и портом.
  2. Записывает время установки соединения как время отклика.
  3. По желанию читает баннер — приветствие, которое многие сервисы шлют сразу после подключения, например строку с версией SSH или SMTP.
  4. Закрывает соединение. Монитор ничего не отправляет сервису: даже при чтении баннера он только слушает.

Если чтение баннера включено, монитор читает до 1024 байт, декодирует их как текст и сохраняет вместе с проверкой. Баннера он ждёт не дольше 5 секунд и меньше, если от таймаута монитора осталось мало, — но не меньше одной секунды.

Баннер остаётся справочной информацией, пока вы не зададите ожидаемое ключевое слово. С ключевым словом проверка проходит только тогда, когда оно встречается в тексте баннера, с точным совпадением, включая регистр. Отсутствующий баннер, пустой баннер, неудачное чтение или другое содержимое одинаково красят проверку в красный. Без ключевого слова непрочитанный баннер ничего не ломает: проверка проходит по одному факту соединения, а баннер просто отсутствует.

Что делает UDP-проверка

  1. Резолвит имя хоста. У этого шага свой предел — 5 секунд или таймаут монитора, если он меньше.
  2. Отправляет одну датаграмму с полезной нагрузкой.
  3. Ждёт ответ до истечения таймаута, если ожидание не выключено.
  4. По желанию сверяет ответ с ожидаемой строкой и записывает, сколько байт пришло.

Если нагрузка не задана, монитор выбирает её по порту:

ПортЧто отправляется по умолчанию
53 (DNS)Настоящий DNS-запрос — запись A для example.com
123 (NTP)Стандартный клиентский пакет NTP
161 (SNMP)Те же четыре байта PING — SNMP нужна ваша community string, поэтому здесь задайте свою нагрузку
Любой другой портЧетыре байта PING — это заглушка, а не протокол

Для всего, кроме DNS и NTP, рассчитывайте писать нагрузку самостоятельно. Сервис сам решает, что достойно ответа, и заглушка по умолчанию обычно им не является.

UDP-монитору нужен явный порт в адресе. Никакого порта по умолчанию не подставляется: адрес без порта сразу проваливает проверку с соответствующим сообщением, потому что угаданный порт молча мониторил бы не то.

Если выключить ожидание ответа

У UDP есть режим «отправил и забыл»: датаграмма ушла из сокета — проверка считается успешной. Стоит понимать, что это даёт. Это доказывает, что имя хоста разрезолвилось и пакет отдан в сеть. Про сервис на той стороне это не доказывает вообще ничего — его могли выключить месяц назад. Такой монитор практически никогда не покажет аварию, так что считайте его тестом отправки, а не мониторингом доступности.

Что означает молчание

Таймаут — единственный результат, который на двух протоколах читается по-разному, и полезно понимать, с каким молчанием вы имеете дело.

В TCP молчание нетипично. Живой хост, на котором порт никем не занят, обычно сразу отказывает в соединении, и монитор записывает этот отказ. Молчание вместо отказа обычно значит, что файрвол не отклоняет пакеты, а выбрасывает их, — или что самого хоста больше нет.

В UDP молчание — обычный способ вас проигнорировать. Ответа нет — значит, сервис лежит, или файрвол выбросил запрос, или ответ потерялся на обратном пути, или сервис просто не счёл вашу нагрузку достойной ответа. Различить это монитор не может, поэтому UDP-монитор с таймаутом говорит «ответа нет», а не «сервис лежит». Иногда операционная система всё же получает ICMP-сообщение о недоступности порта — тогда проверка падает с этой ошибкой, а не по таймауту, но дойдёт ли такое сообщение, решает сеть по пути.

Практический вывод такой: UDP-монитор достоверен ровно настолько, насколько правильна отправляемая нагрузка. Угадали с нагрузкой — получили настоящую проверку. Не угадали — получили вечную аварию на здоровом сервисе.

Логика статусов

Состояния деградации у этих мониторов нет. Порогов по времени отклика у TCP и UDP тоже нет — результат либо «работает», либо «не работает», либо «таймаут».

РезультатСтатус
TCP: соединение принято (и ключевое слово в баннере совпало, если оно задано)UP
TCP: в соединении отказаноDOWN
TCP: хост не резолвится, маршрута нет или другая ошибка соединенияDOWN
TCP: ключевое слово задано, а баннер отсутствует, пуст, не читается или другойDOWN
UDP: ответ пришёл (и содержит ожидаемый текст, если он задан)UP
UDP: ответ пришёл, но ожидаемого текста в нём нетDOWN
UDP: порт не указан или вне диапазона, имя хоста не резолвится, порт сообщён как недоступныйDOWN
Любой протокол: до истечения таймаута ничего не произошлоTIMEOUT

DOWN и TIMEOUT считаются простоем и открывают инцидент — после порога подтверждения, по умолчанию это три неудачные проверки подряд, чтобы один потерянный пакет никого не будил.

Настройки

Адрес

Хост и порт в виде example.com:5432. Схема принимается и отбрасывается (tcp://, udp://), IPv6 пишется в квадратных скобках: [2001:db8::1]:5432. Порт живёт только в адресе — у TCP-монитора отдельное поле «Порт» просто удобный способ править часть :port этого адреса.

Порт

Для TCP пропущенный порт означает 80 — вряд ли вы имели в виду это, так что указывайте его. Для UDP порт обязателен и должен быть от 1 до 65535; UDP-монитор без порта намеренно проваливает каждую проверку.

Таймаут

Сколько может длиться одна проверка, прежде чем её запишут как таймаут. По умолчанию пять секунд. Он покрывает установку соединения в TCP, а в UDP — разрешение имени и ожидание ответа.

Чтение баннера и ожидаемый баннер (TCP)

По умолчанию выключено. Первая настройка включает чтение баннера и сохраняет то, что сказал сервер; вторая задаёт ключевое слово, которое в баннере должно быть. Берите слово, которое здоровый сервис печатает всегда, а сломанный — никогда.

Полезная нагрузка (UDP)

Текст, который уходит в датаграмме, в кодировке UTF-8. Пусто — значит нагрузка по умолчанию для этого порта, из таблицы выше.

Ожидание ответа и ожидаемый ответ (UDP)

Ожидание ответа включено по умолчанию, и лучше его не выключать. Вторая настройка задаёт текст, который должен быть в ответе, с точным совпадением, включая регистр. Учтите, что многие сервисы отвечают в бинарном виде, и там сравнение по тексту — неподходящий инструмент.

В форме TCP есть поле «Ожидаемый ответ»: если его заполнить, проверка читает баннер и требует в нём этот текст; если оставить пустым — проверяется только то, что порт принимает подключения. Нагрузки UDP и её ожидаемого ответа в форме по-прежнему нет — их задают через REST API или инструменты MCP на том же мониторе, который вы создали в интерфейсе.

Ключевые возможности

  • Один тип монитора на любой порт TCP или UDP, на цель ничего ставить не надо
  • TCP записывает время установки соединения и, по запросу, баннер сервера
  • Необязательное ключевое слово в баннере для TCP и ожидаемый текст ответа для UDP — несовпадение проваливает проверку
  • Готовые UDP-нагрузки для DNS и NTP, для всего остального — своя нагрузка
  • Отказ, таймаут и недоступный порт записываются как разные ошибки, поэтому на странице монитора видно, что именно произошло