Planetahost VPS
Перейти к основному контенту

Проверка и поиск занятых портов в Linux

intro-Checking-and-finding-occupied-ports-Linux-planetahost.png

Подробности урока
Уровень сложности Лёгкий
Права root Требуются
Требования Терминал Linux
Категория Установка ПО
Совместимость с ОС Debian, RHEL
Примерное время чтения 15 мин

Введение

Во время настройки серверов и сетевых служб часто возникает необходимость проверить, какие порты открыты, какие приложения их используют и прослушивает ли необходимый сервис нужный порт.

В Linux для этого существует несколько встроенных утилит, позволяющих быстро получить необходимую информацию.

В этой статье рассмотрим наиболее распространенные способы работы с портами.

Что такое порт

Порт - это логический идентификатор, используемый операционной системой для обмена данными по сети. Каждое сетевое приложение использует один или несколько портов для приема входящих соединений.

Служба Порт Протокол Назначение
HTTP 80 TCP Передача веб-страниц без шифрования
HTTPS 443 TCP Защищенное HTTPS-соединение
SSH 22 TCP Удаленное управление сервером
DNS 53 TCP/UDP Разрешение доменных имен
MySQL 3306 TCP Подключение к серверу MySQL
PostgreSQL 5432 TCP Подключение к серверу PostgreSQL

Всего доступно 65535 TCP- и UDP-портов.


Проверка открытых портов

Самая современная утилита для просмотра открытых портов - ss.

sudo apt update
sudo apt install iproute2

Показать все прослушиваемые TCP- и UDP-порты:

ss -tuln

Параметры команды:

  • -t - TCP;

  • -u - UDP;

  • -l - только прослушиваемые порты;

  • -n - отображать номера портов без преобразования имен.

Пример вывода:

изображение.png


Определение процесса, использующего порт

Чтобы увидеть, какой процесс использует конкретный порт, выполните:

sudo ss -tulpn

Пример:

изображение.png

В выводе отображаются:

  • имя процесса;

  • PID процесса;

  • файловый дескриптор.


Проверка конкретного порта

Например, необходимо узнать, используется ли порт 10050.

sudo ss -tulpn | grep :10050

изображение.png

Если команда ничего не вернула, значит данный порт в настоящий момент не используется.


Использование lsof

Еще один популярный способ определить владельца порта - это  утилита lsof.

sudo apt update
sudo apt install lsof

Например:

sudo lsof -i :10050

Пример вывода:

изображение.png


Использование netstat

На старых системах можно воспользоваться командой:

netstat -tulpn

изображение.png

Следует учитывать, что netstat считается устаревшей утилитой и в современных дистрибутивах Linux рекомендуется использовать ss.


Проверка доступности порта

Проверить, отвечает ли удаленный сервер на определенном порту, можно с помощью nc (Netcat).

sudo apt update
sudo apt install netcat-openbsd

Например:

nc -zv 192.168.1.100 443

или

nc -zv example.com 80

изображение.png

При успешном подключении будет выведено сообщение об успешном соединении.


Проверка нескольких портов

Проверить диапазон портов:

nc -zv 192.168.1.100 20-100

изображение.png


Поиск процесса по PID

Если известен PID процесса:

ps -fp 732

изображение.png

Это позволит определить, какое приложение использует порт.


Освобождение занятого порта

Если приложение больше не требуется, его можно завершить.

Например:

sudo kill 732

или более принудительно:

sudo kill -9 732

Использовать принудительное завершение рекомендуется только в случае необходимости.


Проверка правил брандмауэра

Если порт открыт приложением, но подключение невозможно, проверьте настройки межсетевого экрана.

Для UFW:

sudo ufw status

Для firewalld:

sudo firewall-cmd --list-ports

Для iptables:

sudo iptables -L -n

изображение.png


Полезные команды

Показать открытые порты:

ss -tuln

Показать процессы:

sudo ss -tulpn

Проверить порт:

sudo ss -tulpn | grep :80

Узнать владельца порта:

sudo lsof -i :80

Проверить удаленный порт:

nc -zv host 443

Заключение

Для большинства задач достаточно утилиты ss, которая позволяет быстро определить открытые порты и процессы, использующие их. При необходимости дополнительную информацию можно получить с помощью lsof, а проверить доступность удаленного порта с помощью nc.

Знание этих инструментов значительно упрощает диагностику сетевых служб и помогает быстро выявлять конфликты портов при настройке серверов и приложений.