Skip to content
EN
← Все статьи

Как проверить открытые порты: онлайн, Windows, Linux

Проверить открытые проверку портов можно тремя способами: локально — командой netstat -ano в Windows или ss -tlnp в Linux, извне — утилитами nc и telnet с другого хоста, а также онлайн-сканером портов. Локальная проверка показывает, какие службы слушают порты, внешняя — какие из них реально видны из интернета. Для полной картины нужны обе.

В этом руководстве разберём каждый способ по шагам: встроенные команды Windows и Linux, проверку конкретного порта у сайта или сервера, типичные причины, по которым порт открыт локально, но недоступен снаружи (NAT, файрвол хоста, блокировки провайдера), а также таблицу частых портов с пояснением, что означает их видимость из интернета.

Что такое открытый порт: LISTEN и доступность извне

Порт — это число от 0 до 65535, по которому операционная система направляет входящее соединение конкретной программе. Когда служба — веб-сервер, СУБД, SSH-демон — запускается, она привязывается к порту и переходит в состояние LISTEN: начинает слушать входящие подключения. Как это устроено на уровне протоколов и чем отличаются TCP-порты от UDP, мы разбирали в статье о разнице между TCP и UDP.

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

Как проверить порты на Windows

netstat -ano: классический способ

Откройте командную строку (cmd) от имени администратора и выполните:

netstat -ano | findstr LISTEN

Вывод содержит протокол, локальный адрес с портом, состояние и PID процесса. Чтобы узнать, какая программа стоит за конкретным PID, выполните tasklist | findstr 4712, подставив свой номер. Обратите внимание на локальный адрес: 0.0.0.0:3306 означает, что служба слушает все сетевые интерфейсы, а 127.0.0.1:3306 — только локальную петлю, и снаружи такой порт недоступен в принципе.

Get-NetTCPConnection: способ для PowerShell

В современных версиях Windows у netstat есть более удобная альтернатива — командлет PowerShell, который возвращает объекты, а не текст, и легко фильтруется:

Get-NetTCPConnection -State Listen | Sort-Object LocalPort | Format-Table LocalAddress, LocalPort, OwningProcess

Имя процесса, занявшего конкретный порт, получают одной строкой: Get-Process -Id (Get-NetTCPConnection -LocalPort 443 -State Listen).OwningProcess. Такой подход удобен в скриптах: результат можно передать по конвейеру дальше, выгрузить в CSV или сравнить с эталонным списком разрешённых портов.

Как проверить порты на Linux

ss -tlnp: основной инструмент

sudo ss -tlnp

Флаги расшифровываются так: -t — TCP, -l — только слушающие сокеты, -n — числовые порты вместо имён служб, -p — показать процесс. Утилита ss из пакета iproute2 давно заменила устаревший netstat и работает заметно быстрее на системах с тысячами соединений. Для UDP-сокетов используйте ss -ulnp.

lsof -i: взгляд со стороны процессов

sudo lsof -i -P -n | grep LISTEN

lsof показывает открытые сокеты в разрезе процессов и особенно удобен, когда нужно быстро ответить на вопрос «кто занял порт»: команда sudo lsof -i :8080 сразу выведет процесс, который держит порт 8080, с его PID, пользователем и полным именем.

Как проверить порт снаружи

Все команды выше отвечают только на вопрос «что слушается на этой машине». Главный же вопрос — виден ли порт из интернета — требует проверки с другого хоста.

nc и telnet с другого хоста

nc -vz example.com 443
telnet example.com 22

Флаг -z у netcat означает «только проверить соединение, данные не передавать», -v — подробный вывод. Возможны три исхода. «Succeeded» или установленное telnet-соединение — порт открыт и за ним есть служба. «Connection refused» — хост доступен, но на порту никто не слушает либо файрвол явно отвечает отказом (REJECT). Таймаут — пакеты молча отбрасываются правилом DROP или хост недостижим.

Онлайн-проверка открытых портов

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

Почему порт открыт локально, но не виден извне

Это самая частая ситуация в практике: ss показывает LISTEN, а внешний сканер — «closed» или «filtered». Между процессом и интернетом стоит несколько барьеров, и любой из них может резать трафик:

  • Привязка к 127.0.0.1. Служба слушает только локальную петлю. Это видно прямо в выводе ss или netstat — и снаружи такой порт не откроется никогда, пока вы не поменяете адрес привязки на 0.0.0.0 или конкретный внешний интерфейс.
  • Файрвол хоста. Брандмауэр Windows, iptables, nftables, ufw или firewalld по умолчанию блокируют входящие соединения на нестандартные порты. Проверьте правила: sudo ufw status или sudo iptables -L -n.
  • NAT на роутере. Домашний или офисный роутер не пробрасывает входящие соединения на машину в локальной сети, пока вы явно не настроите port forwarding.
  • Security groups облака. В AWS, Yandex Cloud и других облаках весь входящий трафик по умолчанию запрещён — порт нужно открыть в настройках группы безопасности, файрвол внутри виртуальной машины тут ни при чём.
  • Блокировки провайдера. Многие интернет-провайдеры режут порт 25 (борьба со спамом), а также 445 и 139 (защита от эксплуатации SMB). Такой порт не откроется, как бы правильно ни был настроен сервер.

Диагностируйте по цепочке: сначала подтвердите LISTEN локально, затем проверьте порт с соседней машины в той же сети, затем извне. Звено, на котором соединение пропадает, и есть место блокировки.

Как проверить конкретный порт у сайта или сервера

Типовой сценарий — убедиться, что у сайта открыт 443, а у почтового сервера 25. С любого хоста с netcat это одна команда:

nc -vz mail.example.com 25

Для веба быстрее сделать запрос напрямую: curl -I https://example.com — если пришёл ответ с заголовками, порт 443 открыт и TLS работает. Почтовые порты — отдельная история: 25, 465 и 587 предназначены для разных задач и по-разному блокируются провайдерами, подробный разбор — в статье о портах 25, 465 и 587.

Сравнение способов проверки

СпособЧто показываетКогда использовать
netstat -ano (Windows)Слушающие порты и PID процессовЛокальная диагностика Windows без PowerShell
Get-NetTCPConnectionТе же данные в виде объектов PowerShellСкрипты, автоматизация, выгрузки
ss -tlnp (Linux)Слушающие сокеты, процессы, адреса привязкиЛокальная диагностика любого Linux-сервера
lsof -i :портКакой процесс занял конкретный портКонфликт портов, поиск «кто держит 8080»
nc -vz / telnetДоступность порта с другого хостаПроверка извне, когда есть вторая машина
Онлайн-сканер портовВидимость портов из интернетаНет второго хоста; взгляд глазами атакующего

Частые порты: что означает их видимость

ПортСлужбаВидимость из интернета
22SSHНорма для серверов; желательно ограничить доступ по IP или сменить порт
80 / 443HTTP / SSL/TLS проверкуНорма для любого веб-сервера
25SMTPОправдано только для почтового сервера
3306MySQL / MariaDBНе должен быть виден: доступ только с приложения или через туннель
6379RedisНе должен быть виден: Redis без пароля извне — классический вектор взлома

Что именно закрывать, чем опасен каждый лишний открытый порт и как минимизировать поверхность атаки — в отдельной статье об открытых портах и безопасности.

Источники

FAQ: проверка открытых портов

Чем LISTEN отличается от «порт открыт»?

LISTEN — состояние сокета на самой машине: процесс готов принимать соединения. «Порт открыт» в бытовом смысле означает, что до этого процесса можно достучаться извне. Между ними стоят файрвол, NAT и провайдер, поэтому порт в LISTEN нередко остаётся невидимым из интернета — и это нормально для внутренних служб.

Как узнать, какая программа заняла порт?

В Linux — sudo lsof -i :8080 или sudo ss -tlnp | grep 8080: обе команды покажут PID и имя процесса. В Windows — netstat -ano | findstr :8080, затем tasklist | findstr PID. После этого конфликт решается остановкой лишней службы или сменой порта в её конфигурации.

Безопасно ли проверять порты онлайн-сканером?

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

Почему nc показывает таймаут, а не connection refused?

«Connection refused» приходит, когда хост активно отвечает RST-пакетом: порт закрыт, но трафик доходит. Таймаут означает, что пакеты молча отбрасываются — обычно правилом DROP на файрволе или потому, что хост недостижим. Для диагностики это важный сигнал: refused указывает на службу, таймаут — на сетевой фильтр по пути.

Нужно ли закрывать все открытые порты?

Нет — закрывать нужно всё, что не используется публично. Веб-серверу нужны 80 и 443, серверу с удалённым доступом — 22. А вот базы данных, Redis, панели управления и служебные порты должны быть доступны только из внутренней сети или через VPN. Принцип простой: снаружи видно только то, что обязано быть видно.

Проверьте ваш сайт прямо сейчас

Проверить доступность сайта →
Другие статьи: Сети
Сети
Лучшие онлайн-сканеры портов 2026
15.06.2026 · 61 просм.
Сети
ERR_ADDRESS_UNREACHABLE: причины и как исправить
13.07.2026 · 97 просм.
Сети
Как Роскомнадзор блокирует сайты: реестр, ТСПУ, DPI
13.07.2026 · 128 просм.
Сети
TCP vs UDP: различия, применение и производительность
16.03.2026 · 145 просм.