Проверка открытых портов: ss, netstat, nmap и telnet
Открытые порты проверяют двумя сторонами: локально — какие службы слушают (ss -tulpn, netstat -tulpn), и снаружи — какие реально доступны через фаервол (nmap, telnet). Разница важна: порт может слушаться на сервере, но быть закрыт фаерволом. Ниже — точные команды для обеих проверок.
Локальная проверка: что слушает сервер
ss — современный инструмент
Показать все слушающие TCP и UDP порты с процессами:
ss -tulpn
Расшифровка флагов:
| Флаг | Значение |
|---|---|
-t |
TCP-сокеты |
-u |
UDP-сокеты |
-l |
только слушающие (listening) |
-p |
показать процесс |
-n |
числовые порты без резолва имён |
Найти, кто занял конкретный порт:
ss -tulpn | grep :443
netstat — классический вариант
Если установлен пакет net-tools:
netstat -tulpn
Внешняя проверка: что доступно снаружи
Локальная проверка не учитывает фаервол. Чтобы узнать, доступен ли порт из интернета, сканируйте сервер с другого хоста.
nmap
Проверить набор популярных портов:
nmap 203.0.113.10
Проверить конкретный порт:
nmap -p 443 203.0.113.10
Сканировать диапазон и определить сервисы:
nmap -p 1-1000 -sV 203.0.113.10
Состояния портов в выводе nmap:
| Состояние | Что означает |
|---|---|
| open | порт слушает и доступен |
| closed | доступен, но никто не слушает |
| filtered | пакеты блокирует фаервол |
telnet — быстрая проверка одного порта
telnet 203.0.113.10 443
Если соединение установлено — порт открыт. Если «Connection refused» — закрыт/не слушает, а зависание — обычно блокировка фаерволом.
Аналог в PowerShell без telnet:
Test-NetConnection -ComputerName 203.0.113.10 -Port 443
Проверка через nc (netcat):
nc -zv 203.0.113.10 443
Кто и куда подключён: активные соединения
Кроме слушающих портов, полезно видеть установленные соединения — например, чтобы понять, кто подключён к серверу прямо сейчас:
ss -tnp state established
Подсчитать число соединений по каждому удалённому IP (простая защита от аномалий):
ss -tn state established | awk '{print $4}' | cut -d: -f1 | sort | uniq -c | sort -rn
В Windows аналогичную картину даёт:
Get-NetTCPConnection -State Established | Sort-Object RemoteAddress
Стандартные порты популярных служб
При диагностике полезно помнить, какие порты за какими сервисами закреплены по умолчанию:
| Порт | Служба |
|---|---|
| 22 | SSH |
| 80 | HTTP |
| 443 | HTTPS |
| 3306 | MySQL/MariaDB |
| 5432 | PostgreSQL |
| 3389 | RDP |
Если на порту слушает не та служба, что ожидается, — это повод разобраться в конфигурации или проверить систему на посторонние процессы.
Типовой порядок диагностики
- На сервере:
ss -tulpn | grep :ПОРТ— служба слушает? - Если не слушает — запустите/настройте службу.
- Если слушает, но снаружи недоступен — проверьте фаервол (
ufw status,iptables -L). - Снаружи:
nmap -p ПОРТ IP— состояниеfilteredуказывает на фаервол.
Частые вопросы
ss показывает порт, а снаружи он недоступен — почему?
Служба слушает, но входящий трафик режет фаервол. Проверьте ufw status или правила iptables и откройте нужный порт.
Чем ss лучше netstat?
ss быстрее и входит в актуальный пакет iproute2. netstat устарел и часто не установлен по умолчанию.
nmap показывает filtered — что это? Пакеты до порта не доходят из-за фаервола (на сервере или в сети провайдера). Порт не «закрыт», а отфильтрован.
Можно ли сканировать чужой сервер? Сканируйте только свои системы или с явного разрешения владельца — иначе это может нарушать правила и закон.
Как проверить порт без установки nmap?
Используйте telnet IP ПОРТ, nc -zv IP ПОРТ или Test-NetConnection в PowerShell.
Нужен сервер с полным контролем над портами и фаерволом? Разверните VPS на Linux в разделе аренда VPS или закажите Администрирование серверов.
