Как проверить открытые порты в 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 LocalPortLinux
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 или [::] означает все сетевые интерфейсы — именно это открывает её для сети.

Шаг 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 либо фильтрация на стороне провайдера могут блокировать порт.
Порты и прокси
Прокси-сервер — такая же служба, как любая другая, и слушает свой порт:
| Порт | Обычное назначение |
|---|---|
| 1080 | SOCKS-прокси по традиции |
| 3128 | Squid и многие 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 и остановите или удалите её: порт без слушающей службы закрыт по определению.
- Если служба нужна только локально, привяжите её к
127.0.0.1в настройках. - Добавьте правило файрвола, которое блокирует входящий трафик на этот порт или разрешает его только с доверенных адресов.
- Удалите неиспользуемые правила проброса портов на роутере.
- Повторите проверки из шагов 2–4.
Фильтрующий слой перед службами — ещё один барьер; как работает фильтрация на уровне приложений, показано в статье о прокси-файрволе. Командам, которые регулярно проверяют собственный периметр, пригодится материал о прокси в задачах кибербезопасности.
Частые вопросы об открытых портах
Как проверить, открыт ли порт в Windows?
Выполните netstat -ano | findstr LISTENING, чтобы увидеть локальные службы, или Test-NetConnection с адресом и параметром -Port в PowerShell, чтобы проверить доступность конкретного порта.
Законно ли сканировать порты?
Сканировать свои системы или те, на проверку которых есть письменное разрешение, законно. Сканирование чужих сетей без согласия может нарушать законы о компьютерной информации и условия провайдера, поэтому сначала получите разрешение.
Почему порт открыт локально, но закрыт из интернета?
Роутер не пробрасывает порт, провайдер использует CGNAT или файрвол блокирует входящий трафик. Проверяйте слои по очереди — от компьютера наружу.
Что означает filtered в nmap?
Nmap не получил ответа — как правило, потому что файрвол отбрасывает пакеты. Работает ли за этим фильтром служба, он определить не может.
Какой порт использует прокси?
Единого порта нет. SOCKS часто работает на 1080, HTTP-прокси — на 3128 или 8080, но провайдеры назначают свои номера, поэтому берите порт из личного кабинета.


