Сетевые порты
Порт — число от 0 до 65535, по которому операционная система определяет, какому приложению отдать пришедший пакет.
Что такое Сетевые порты
Порт — 16-битное число (0–65535), которое адресует не машину, а конкретное приложение на ней. IP-адрес доводит пакет до сервера, порт — до нужной программы.
Аналогия: IP-адрес — дом, порт — номер квартиры. Без него почтальон знает здание, но не знает, кому отдать письмо.
Именно порты позволяют одному серверу одновременно держать сайт, базу и SSH: у каждого сервиса свой номер. Соединение однозначно определяется четвёркой «IP источника, порт источника, IP назначения, порт назначения» — поэтому тысячи клиентов подключаются к порту 443 одновременно и не путаются: у каждого свой порт на своей стороне.
Пространства портов у TCP и UDP независимы: TCP/53 и UDP/53 — разные сокеты, которые могут занимать разные программы.
Три диапазона
| Диапазон | Название | Кто занимает |
|---|---|---|
| 0–1023 | системные, well-known | стандартные сервисы; в Linux нужны права root |
| 1024–49151 | зарегистрированные | БД, приложения, всё прикладное |
| 49152–65535 | динамические, эфемерные | исходящие соединения клиентов |
Порог 1024 — причина, по которой веб-приложение обычно слушает 8080, а наружу его выставляет nginx. Запускать сервис от root ради порта 80 не нужно.
Эфемерные порты система выдаёт сама при исходящем соединении. В Linux диапазон по умолчанию — 32768–60999 (net.ipv4.ip_local_port_range); на очень нагруженном прокси он способен закончиться, и это одна из причин ошибок вида «cannot assign requested address».
Порты, которые надо знать наизусть
| Порт | Сервис | Комментарий |
|---|---|---|
| 22 | SSH | удалённый доступ и SFTP |
| 25 | SMTP | между серверами, у провайдеров обычно закрыт |
| 53 | DNS | UDP, при больших ответах TCP |
| 80 | HTTP | обычно только редирект на 443 |
| 443 | HTTPS | он же QUIC/HTTP-3 по UDP |
| 123 | NTP | UDP |
| 161 | SNMP | UDP, наружу не выставлять |
| 587 | SMTP submission | отправка почты клиентом |
| 993 | IMAPS | приём почты |
| 3306 | MySQL | только внутренняя сеть |
| 5432 | PostgreSQL | только внутренняя сеть |
| 6379 | Redis | без пароля — мгновенный взлом |
22 порт — SSH, главная дверь в сервер. Его сканируют непрерывно, и в логах свежей машины перебор паролей появляется в первые же часы. Защита — не перенос на нестандартный номер (это лишь снижает шум в логах), а вход по ключу с PasswordAuthentication no.
25 порт — SMTP между почтовыми серверами. Хостеры и домашние провайдеры блокируют его исходящим по умолчанию для борьбы со спамом. Именно поэтому «почта не отправляется с нового VPS» — чаще всего не ошибка конфига, а закрытый 25-й, и открывают его по заявке.
Как посмотреть, что открыто
$ ss -tlnp
State Recv-Q Send-Q Local Address:Port Process
LISTEN 0 128 0.0.0.0:22 users:(("sshd",pid=812,fd=3))
LISTEN 0 511 0.0.0.0:80 users:(("nginx",pid=1104,fd=6))
LISTEN 0 244 127.0.0.1:5432 users:(("postgres",pid=980,fd=5))
Самое важное в выводе — адрес слева от порта. 127.0.0.1:5432 означает, что PostgreSQL доступен только с самой машины: это правильно. 0.0.0.0:5432 — база слушает все интерфейсы, и если файрвол её не закрывает, она открыта интернету. Проверка «что у меня торчит наружу» начинается именно с этой колонки.
$ ss -tn state established | wc -l # сколько активных соединений
$ nc -zv example.com 443 # доступен ли порт снаружи
$ sudo lsof -i :80 # кто занял порт
Ошибка Address already in use при старте сервиса означает, что порт занят — последняя команда покажет, кем.
Правила гигиены
- Наружу — только то, что обязано быть снаружи. Обычно это 22, 80 и 443. Базы, кеши и мониторинг слушают внутренний интерфейс или закрыты правилами iptables/UFW.
- Открытый порт без пароля находят за часы. Redis, Elasticsearch и MongoDB, выставленные в интернет с настройками по умолчанию, — классический сценарий утечки.
- Проверяйте снаружи, а не изнутри.
ssпоказывает, что слушает сервис, но не что пропускает файрвол и security group облака.
Связанные термины
- TCP и UDP — у каждого протокола своё пространство портов
- IP-адрес — адресует машину, порт адресует приложение
- Адрес сервера — хост вместе с портом
- NAT — различает клиентов по портам и пробрасывает их внутрь
- iptables / UFW — чем порты закрывают
- Сетевая диагностика — ss, nc и проверка доступности
Готовы запустить GPU-задачу?
Запустить GPU-сервер