Попробовать
Назад к блогу

Как проверить открытые порты в Windows, Linux и macOS

Как проверить открытые порты в Windows, Linux и macOS

Чтобы проверить открытые порты на своём компьютере, выведите список прослушиваемых сокетов: в Windows — netstat -ano или Get-NetTCPConnection, в Linux — ss -tulpn, в macOS — lsof -nP -iTCP -sTCP:LISTEN. Чтобы узнать, доступен ли порт с другой машины, проверьте его через Test-NetConnection, nc или nmap на хосте, которым вы владеете или управляете, либо через онлайн-сервис, который стучится на ваш внешний IP снаружи.

Больше всего путаницы возникает из-за смешения двух вопросов — «что слушает на этом компьютере» и «что видно из интернета», — поэтому в инструкции они разделены. Ещё разберём, как читать состояния портов в nmap, почему порт открыт локально и закрыт снаружи и какие порты обычно используют прокси. Важное ограничение до начала: сканируйте только свои системы или те, на проверку которых есть письменное разрешение. Сканирование чужих серверов без согласия во многих странах может быть незаконным и нарушает условия большинства провайдеров.

SOCKS5-прокси

Готовые прокси с авторизацией — не нужно открывать наружу собственный сервер

Попробовать

Порты в двух словах

IP-адрес указывает на машину, а номер порта (0–65535) — на службу на ней. Веб-серверы ждут подключений на 80 и 443, SSH — на 22, удалённый рабочий стол — на 3389, а прокси-серверы — на том порту, который выбрал их владелец. Порт «открыт», когда на нём слушает какая-то программа и файрвол пропускает пакеты. Освежить, как связаны хосты и адреса, поможет статья об имени хоста прокси.

Шаг 1. Список прослушиваемых портов на своём компьютере

Windows

В командной строке:

netstat -ano | findstr LISTENING

В последнем столбце — идентификатор процесса. Чтобы узнать, какой программе он принадлежит, выполните tasklist /FI "PID eq 4312", подставив свой PID. В PowerShell та же проверка нагляднее:

Get-NetTCPConnection -State Listen |
  Select-Object LocalAddress, LocalPort, OwningProcess,
    @{n='Program'; e={(Get-Process -Id $_.OwningProcess).ProcessName}} |
  Sort-Object LocalPort

Linux

sudo ss -tulpn

Флаги означают: TCP, UDP, только слушающие, показать процесс, номера портов цифрами. На системах без ss похожую картину даёт sudo lsof -i -P -n | grep LISTEN.

macOS

sudo lsof -nP -iTCP -sTCP:LISTEN

Смотрите на столбец локального адреса. Служба, привязанная к 127.0.0.1, принимает подключения только с этого же компьютера, а 0.0.0.0 или [::] означает все сетевые интерфейсы — именно это открывает её для сети.

Список слушающих портов в PowerShell: локальный адрес, порт, ID и имя процесса
По адресу видно, кому доступен порт: 127.0.0.1 только локально, 0.0.0.0 на всех интерфейсах

Шаг 2. Проверка одного порта с другой машины

Убедившись, что служба слушает порт, проверьте, могут ли до неё достучаться клиенты.

# Windows PowerShell: ищите строку TcpTestSucceeded : True
Test-NetConnection 192.0.2.40 -Port 3128
# Linux / macOS: -z только проверяет, -v печатает результат
nc -zv 192.0.2.40 3128

Отказ в подключении (refused) значит, что хост ответил, но на порту никто не слушает. Таймаут обычно означает, что файрвол молча отбрасывает пакеты. Для пользователя оба случая выглядят как «закрыто», но лечатся по-разному.

Шаг 3. Сканирование своего хоста через nmap

Nmap проверяет много портов сразу и сообщает их состояние. Установите его с официального сайта или из менеджера пакетов и запустите против своего сервера или тестовой машины:

# 100 самых распространённых TCP-портов
nmap --top-ports 100 192.0.2.40

# конкретный диапазон с определением служб и версий
nmap -p 1-1024 -sV 192.0.2.40

# UDP требует прав root и работает медленнее
sudo nmap -sU -p 53,123,161 192.0.2.40

Как читать результат:

СостояниеЗначениеЧто делать
openСлужба принимает подключенияУбедиться, что она должна быть публичной; иначе остановить или ограничить доступ
closedХост отвечает, но никто не слушаетНормально, если служба там не нужна
filteredОтвета нет, файрвол отбрасывает пробыОжидаемо для заблокированных портов; проверить правила, если служба должна работать
open или filtered (выводится через вертикальную черту)Nmap не может определить, какой из двух вариантов (частая ситуация с UDP)Проверить службу её собственным клиентом

Если хост не отвечает на ping, добавьте -Pn, чтобы nmap пропустил обнаружение хоста и всё равно просканировал порты. Запускайте сканирование из сети, где вам это разрешено: облачные провайдеры нередко требуют уведомления даже для проверки собственных серверов.

Сканер отправляет пробы на сервер с тремя дверями: открытая отвечает, закрытая отбивает запрос, третья за стеной молчит
Открытый, закрытый и фильтруемый порты по-разному отвечают на пробу

Шаг 4. Что видно из интернета

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

  • NAT роутера. Входящий трафик не знает, к какому домашнему компьютеру идти, пока на роутере не настроен проброс порта.
  • CGNAT провайдера. Многие мобильные и часть домашних провайдеров держат абонентов за общим адресом; входящие подключения невозможны без «белого» IP от провайдера.
  • Файрволы. Брандмауэр Защитника Windows, ufw или firewalld в Linux либо фильтрация на стороне провайдера могут блокировать порт.

Порты и прокси

Прокси-сервер — такая же служба, как любая другая, и слушает свой порт:

ПортОбычное назначение
1080SOCKS-прокси по традиции
3128Squid и многие HTTP-прокси
8080, 8888Альтернативные HTTP-порты, часто для прокси и dev-серверов
9050Локальный SOCKS-порт Tor
Ноутбук входит в прокси-сервер через одну открытую дверь среди закрытых, а сервер передаёт трафик на несколько сайтов
Прокси принимает клиентов на одном прослушиваемом порту и пересылает запросы дальше

Коммерческие провайдеры часто используют нестандартные высокие порты, поэтому номер всегда берите из личного кабинета, а не угадывайте. Если подключение к прокси не работает, проверка порта из шага 2 сразу покажет, доступен ли он вообще, — до того, как вы начнёте разбираться с логином. Затем отправьте через него настоящий запрос:

curl -x socks5h://user-7f3k:Pw55x@192.0.2.40:1080 https://api.ipify.org

Если вы поднимаете собственный прокси, следите, чтобы он слушал только нужные интерфейсы и требовал авторизацию: открытый прокси на публичном порту сканеры найдут и начнут использовать за считаные часы. Чем отличаются протоколы на этих портах, объясняет статья SOCKS5 и HTTP прокси, а готовые SOCKS5-прокси избавляют от необходимости открывать наружу свой сервер.

Как закрыть ненужный порт

  1. Найдите программу из шага 1 и остановите или удалите её: порт без слушающей службы закрыт по определению.
  2. Если служба нужна только локально, привяжите её к 127.0.0.1 в настройках.
  3. Добавьте правило файрвола, которое блокирует входящий трафик на этот порт или разрешает его только с доверенных адресов.
  4. Удалите неиспользуемые правила проброса портов на роутере.
  5. Повторите проверки из шагов 2–4.

Фильтрующий слой перед службами — ещё один барьер; как работает фильтрация на уровне приложений, показано в статье о прокси-файрволе. Командам, которые регулярно проверяют собственный периметр, пригодится материал о прокси в задачах кибербезопасности.

Частые вопросы об открытых портах

Как проверить, открыт ли порт в Windows?

Выполните netstat -ano | findstr LISTENING, чтобы увидеть локальные службы, или Test-NetConnection с адресом и параметром -Port в PowerShell, чтобы проверить доступность конкретного порта.

Законно ли сканировать порты?

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

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

Роутер не пробрасывает порт, провайдер использует CGNAT или файрвол блокирует входящий трафик. Проверяйте слои по очереди — от компьютера наружу.

Что означает filtered в nmap?

Nmap не получил ответа — как правило, потому что файрвол отбрасывает пакеты. Работает ли за этим фильтром служба, он определить не может.

Какой порт использует прокси?

Единого порта нет. SOCKS часто работает на 1080, HTTP-прокси — на 3128 или 8080, но провайдеры назначают свои номера, поэтому берите порт из личного кабинета.