Как проверить, открыт ли порт: telnet, nc, PowerShell и онлайн-сервисы
5 мин чтения
Как проверить, открыт ли порт: telnet, nc, PowerShell и онлайн-сервисы

Как проверить, открыт ли порт: telnet, nc, PowerShell и онлайн-сервисы

«Проверь, открыт ли порт» — задача на одну минуту, если знать команды, и на час мучений, если не знать. Практикум: как проверить порт с любой системы, как читать три возможных ответа (открыт, закрыт, фильтруется) и почему проверка изнутри сервера и снаружи — это две разные проверки с разными ответами. Что такое порты в принципе — в отдельной статье; здесь только практика.

Команды: по одной на каждую систему

# macOS / Linux — nc (netcat), самый удобный:
nc -zv example.ru 443
# → succeeded / Connection refused / timed out

# Windows — PowerShell:
Test-NetConnection example.ru -Port 443
# → смотрите поле TcpTestSucceeded: True/False

# Классика везде, где есть telnet:
telnet example.ru 443
# → пустой экран или приветствие = порт открыт; ошибка = нет

# Несколько портов сразу (nc):
nc -zv example.ru 80 443 8080

Все три инструмента делают одно и то же: пытаются установить TCP-соединение. Ответ приходит за секунды — и вот как его читать:

Результат Что это значит Типовая причина
Открыт (succeeded / True) Сервис слушает и принимает соединения Всё штатно — или порт открыт зря (см. про безопасность ниже)
Закрыт (Connection refused) Хост жив и мгновенно отказал: на порту никто не слушает Сервис не запущен или слушает другой порт/интерфейс — сценарии из статьи про CONNECTION_REFUSED
Фильтруется (timed out) Ответа нет вовсе: пакеты молча отбрасываются Файрвол в режиме DROP по пути — родня TIMED_OUT

Изнутри и снаружи — две разные проверки

Самая частая путаница: на сервере ss -tlnp показывает, что порт слушается, а у клиентов соединение не проходит. Противоречия нет — это два разных вопроса. Изнутри вы спрашиваете «запущен ли сервис», снаружи — «пропускает ли к нему мир»: между сервисом и миром стоят файрвол сервера, файрвол хостинга/панели, иногда сетевые фильтры провайдера. Поэтому полная проверка всегда парная:

# 1. НА сервере: слушается ли порт вообще
ss -tlnp | grep :443

# 2. С ДРУГОЙ машины/сети: доходит ли до него мир
nc -zv example.ru 443

# Слушается, но снаружи timeout → ищите правило в файрволе:
iptables -L -n | grep 443     # или nft list ruleset, или панель хостинга

И ещё тоньше: «снаружи» бывает разным. Порт может быть открыт для вашего офиса и закрыт для остального мира (белые списки), открыт из России и фильтроваться из-за рубежа, или наоборот. Если результат проверки зависит от того, откуда проверяют, — вы имеете дело с выборочными правилами, и проверять нужно из нескольких сетей.

Шпаргалка: какие порты обычно проверяют

Порт Сервис Когда проверять
80 / 443 HTTP / HTTPS Сайт не открывается; после настройки SSL (80 нужен и для продления сертификатов)
22 SSH Не подключается терминал; после смены правил файрвола (не отрежьте себя!)
25 / 465 / 587 SMTP (отправка почты) Письма не уходят; 25-й у многих провайдеров закрыт по умолчанию от спама
3306 / 5432 MySQL / PostgreSQL Проверять, что они ЗАКРЫТЫ снаружи: базы наружу не смотрят
3389 RDP Тоже из списка «должен быть закрыт или за VPN» — любимая дверь для перебора
Проверка «наоборот» не менее важна

Половина пользы от умения проверять порты — проверять, что лишние ЗАКРЫТЫ. Открытые наружу базы, панели и RDP сканеры находят за минуты после появления сервера в сети. Ритуал после любых работ с сервером: пройтись nc по списку служебных портов снаружи и убедиться, что мир видит только 80, 443 и (в идеале — с ограничением по IP) SSH.

Полная инвентаризация: что вообще открыто у вашего сервера

Проверка одного порта отвечает на точечный вопрос. Иногда нужен ответ пошире — «что мой сервер вообще показывает миру». Изнутри полный список слушающих портов даёт ss -tlnp: по каждой строке спросите себя, зачем этот сервис слушает внешний адрес, а не 127.0.0.1. Снаружи полную картину даёт сканер nmap с другой машины: nmap -Pn example.ru покажет всё, что реально доступно из интернета, вместе с угаданными сервисами. Два списка должны сходиться с вашими ожиданиями; каждый «сюрприз» в выводе nmap — либо забытый сервис, либо дыра в файрволе. Важная оговорка: сканируйте только собственные серверы — сканирование чужих без разрешения как минимум неэтично, а во многих случаях и наказуемо.

Разовая проверка против постоянной

Команды выше отвечают «как сейчас». Но порты имеют свойство меняться без спроса: обновление панели переписало файрвол, хостер сменил политику, сервис после ребута не поднялся — и порт, который «точно был открыт», молча закрылся (или наоборот — открылся лишний). Для портов, на которых держится бизнес — сайт, почта, API, — правильный режим не «проверил и забыл», а постоянный контроль с уведомлением при изменении статуса. Это ровно та проверка, которую бессмысленно делать руками: она интересна только в момент, когда что-то изменилось.

Как это устроено в Пруфене

Пруфен выполняет проверку порта по расписанию от 2 минут из 13 точек в разных сетях — видно и полный отказ, и выборочную фильтрацию «для части мира». В паре с HTTP-проверкой это разводит диагнозы «порт закрыт» и «порт открыт, но сайт отвечает ошибкой» автоматически.

Частые вопросы

Чем проверить порт без терминала? Онлайн-чекерами портов: вводите хост и номер порта — сервис пробует соединиться со своей стороны. Для разовой проверки «снаружи» это даже честнее локальной команды: вы видите картину из чужой сети.

Почему telnet «ничего не показывает» при успехе? Пустой чёрный экран — это и есть успех: соединение установлено, telnet ждёт ввода. Выход — Ctrl+] и quit. Ошибка соединения, наоборот, пишется явно.

Можно ли проверить UDP-порт так же? Сложнее: UDP не подтверждает соединение, поэтому «тишина» может означать и «открыт», и «фильтруется». nc -zuv даёт грубую оценку, но для UDP-сервисов надёжнее проверять сам сервис его протоколом (например, DNS — запросом dig).

Порт открыт, но сайт всё равно не работает. Что дальше? Значит, TCP-уровень в порядке, и проблема выше: TLS-рукопожатие или сам сайт. Дальше по нашим разборам: ошибки рукопожатия и коды ответов HTTP.

Была ли статья полезна?

Начните мониторинг прямо сейчас

Бесплатный тариф — до 5 проверок. 150 ₽ на баланс при регистрации.

Создать аккаунт