IP-адрес указывает, на какой сервер идёт запрос, но одного адреса недостаточно: на одном сервере одновременно работают веб-сайт, почта и панель управления. За разделение между ними отвечают порт, сокет и служба — три понятия, которые часто путают между собой, хотя за ними стоит совсем разная логика работы.
Что такое порт, сокет и служба
Порт — числовой идентификатор от 1 до 65535, который указывает конкретное приложение на сервере. Служба — это сама программа, которая слушает определённый порт и обрабатывает входящие подключения, например nginx или sshd. Сокет — комбинация IP-адреса и порта, которая однозначно описывает конечную точку одного конкретного соединения. На сервере одновременно может существовать множество сокетов с одним и тем же локальным портом, если отличается адрес или порт на другой стороне соединения.
Чем порт отличается от IP-адреса
Разница становится понятнее при сравнении этих двух идентификаторов рядом.
| Признак | IP-адрес | Порт |
|---|---|---|
| Что определяет | Конкретный сервер в сети | Конкретную службу на сервере |
| Диапазон значений | Четыре числа 0-255 | Число от 1 до 65535 |
| Аналогия | Адрес дома | Номер квартиры в доме |
Как формируется сокет
Когда браузер открывает страницу, операционная система соединяет IP-адрес сервера и порт службы в единый сокет — именно его видно в выводе сетевых утилит на стороне сервера.
Локальный адрес Иностранный адрес Состояние
203.0.113.10:80 198.51.100.20:52344 ESTABLISHED
203.0.113.10:22 198.51.100.21:49871 ESTABLISHED
Какие порты заняты стандартными службами
Часть портов закреплена за известными службами по соглашению и редко используется для чего-то другого, что упрощает настройку веб-сервера и файрвола.
- 22 — служба SSH, удалённое управление сервером.
- 80 — служба HTTP, обычные веб-страницы без шифрования.
- 443 — служба HTTPS, веб-страницы с шифрованием TLS.
- 3306 — служба MySQL, подключение к базе данных.
Подробная настройка веб-сервера, который слушает порты 80 и 443, разобрана в статье про настройку nginx, а базовые понятия адресации — в материале об IPv4-адресах.
Как закрыть или открыть порт
Доступность порта снаружи регулирует файрвол: даже если служба слушает порт локально, файрвол может блокировать входящие подключения к нему из интернета. Настройка типичного файрвола на VDS подробно описана в статье про ufw на VPS — там же разобрано, почему открытый порт без запущенной службы совершенно безопасен сам по себе. На практике закрывают доступ к портам управления и баз данных, оставляя снаружи только то, что действительно должно принимать публичные подключения.
Что делать: как проверить открытые порты на сервере
Перед тем как менять правила файрвола, полезно увидеть реальную картину занятых портов.
- Выполните команду ss -tlnp, чтобы увидеть список портов, которые слушают локальные службы.
- Сопоставьте список с ожидаемым набором служб — лишний открытый порт может означать забытый сервис или уязвимость.
- Проверьте текущие правила файрвола и сверьте их с реально нужными портами из предыдущего шага.
- Закройте в файрволе порты служб, которые не должны быть доступны снаружи, оставив доступ только туда, где он необходим.
Частые вопросы
Может ли один порт обслуживать сразу две разные службы?
Нет, один и тот же порт на одном IP-адресе в один момент времени может слушать только одна служба — попытка запустить вторую программу на занятом порту завершится ошибкой. Разные службы для одного порта разводят через разные IP-адреса или через прокси-сервер перед ними.
Почему некоторые порты называют «привилегированными»?
Порты от 1 до 1023, включая 22 и 80, в Linux традиционно может открыть только процесс с правами root, что исторически снижало риск подмены системных служб обычным пользователем. Порты выше этого диапазона такого ограничения не имеют.
Нужно ли менять порт SSH с 22 на нестандартный?
Смена порта не делает сервер неуязвимым, но заметно снижает число автоматических попыток подбора пароля ботами, которые сканируют именно порт 22. Это дополнительная мера, а не замена нормальной настройке доступа и файрвола.