← Назад к вопросам

На какие диапазоны делятся порты

1.0 Junior🔥 111 комментариев
#Сети и протоколы

Комментарии (1)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Классификация портов TCP и UDP

В компьютерных сетях порты TCP (Transmission Control Protocol) и UDP (User Datagram Protocol) делятся на три основных диапазона, определенных IANA (Internet Assigned Numbers Authority). Эта классификация критически важна для DevOps-инженеров при настройке фаерволов, балансировщиков нагрузки, сервисов и обеспечении сетевой безопасности.

1. Well-Known Ports (Системные или Привилегированные порты)

Диапазон: 0–1023 Эти порты зарезервированы для общеизвестных и критических системных служб. Как правило, для их прослушивания требуются права суперпользователя (root) на Unix-системах.

  • Примеры:
    *   `20, 21` – FTP (File Transfer Protocol)
    *   `22` – SSH (Secure Shell) – **ключевой порт для управления серверами**
    *   `25` – SMTP (Simple Mail Transfer Protocol)
    *   `53` – DNS (Domain Name System)
    *   `80` – HTTP (Hypertext Transfer Protocol)
    *   `443` – HTTPS (HTTP Secure)
    *   `3306` – MySQL Database
    *   `5432` – PostgreSQL Database

# Пример в netstat: просмотр служб, слушающих Well-Known порты
sudo netstat -tulpn | grep :22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd

2. Registered Ports (Зарегистрированные порты)

Диапазон: 1024–49151 Эти порты используются прикладными программами и сервисами пользовательского уровня. Производители программного обеспечения могут регистрировать их в IANA для своего ПО, но это не является строго обязательным. Именно в этом диапазоне работает большинство пользовательских и корпоративных приложений.

  • Примеры:
    *   `1433` – Microsoft SQL Server
    *   `27017` – MongoDB
    *   `8080` – HTTP-прокси или альтернативный веб-сервер
    *   `9000` – PHP-FPM, Portainer
    *   `11211` – Memcached
    *   `6379` – Redis

# Пример в Docker Compose: назначение порта из зарегистрированного диапазона
version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "8080:80"  # Публикуем внутренний порт 80 на хост-порту 8080
  app:
    image: my-custom-app
    ports:
      - "9000:9000"

3. Dynamic/Private/Ephemeral Ports (Динамические или Эфемерные порты)

Диапазон: 49152–65535 Этот диапазон не предназначен для фиксированных служб. Операционная система динамически выделяет порты из этого пула для исходящих соединений клиентов. Например, когда ваш браузер соединяется с веб-сервером на порту 443, он использует для себя случайный эфемерный порт из этого диапазона.

  • Важность для DevOps: Правила фаервола часто должны учитывать трафик с эфемерных портов. В Kubernetes и Docker сетевые политики и маршрутизация также активно работают с ними.
# Пример: просмотр установленных соединений с эфемерными портами
netstat -an | grep ESTABLISHED
tcp        0      0 192.168.1.10:54322     93.184.216.34:443      ESTABLISHED
# Клиент с IP 192.168.1.10 использует эфемерный порт 54322 для HTTPS-соединения.

Практическое значение для DevOps

  1. Безопасность и фаерволы: Знание диапазонов позволяет создавать точные политики безопасности (например, в iptables, AWS Security Groups, cloud-native firewall). Например, часто разрешают входящий трафик только на Well-Known и Registered порты определенных служб, а исходящий — с любых Ephemeral портов.

    # Пример iptables правила: разрешить SSH только с доверенной сети
    iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/24 -j ACCEPT
    iptables -A INPUT -p tcp --dport 22 -j DROP
    
  2. Конфигурация сервисов: При развертывании приложений (например, через Ansible, Terraform или Kubernetes Helm) вы явно указываете порты в манифестах, выбирая подходящий диапазон.

    # Kubernetes Service манифест
    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
        - protocol: TCP
          port: 80        # Порт сервиса (внутри кластера)
          targetPort: 8080 # Порт контейнера (зарегистрированный диапазон)
    
  3. Диагностика сетевых проблем: Умение быстро идентифицировать порт по его номеру (системный, сервисный или клиентский) ускоряет анализ логов (netstat, ss, tcpdump) и поиск узких мест или аномалий.

  4. Планирование архитектуры: Чтобы избежать конфликтов, в организации часто создают внутренний реестр, регламентирующий, какие Registered Ports каким командам и сервисам назначены.

Важное замечание: Границы, особенно верхняя для эфемерных портов, могут варьироваться в разных ОС. Например, в некоторых дистрибутивах Linux по умолчанию эфемерный диапазон — 32768-60999. Это проверяется через sysctl.

# Проверка диапазона эфемерных портов в Linux
cat /proc/sys/net/ipv4/ip_local_port_range
32768   60999

Таким образом, глубокое понимание классификации портов является фундаментальным для проектирования отказоустойчивой, безопасной и легко управляемой сетевой инфраструктуры в парадигме DevOps.

На какие диапазоны делятся порты | PrepBro