Проверка и поиск занятых портов в Linux
| Подробности урока | |
|---|---|
| Уровень сложности | Лёгкий |
| Права 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- отображать номера портов без преобразования имен.
Пример вывода:
Определение процесса, использующего порт
Чтобы увидеть, какой процесс использует конкретный порт, выполните:
sudo ss -tulpn
Пример:
В выводе отображаются:
-
имя процесса;
-
PID процесса;
-
файловый дескриптор.
Проверка конкретного порта
Например, необходимо узнать, используется ли порт 10050.
sudo ss -tulpn | grep :10050
Если команда ничего не вернула, значит данный порт в настоящий момент не используется.
Использование lsof
Еще один популярный способ определить владельца порта - это утилита lsof.
sudo apt update
sudo apt install lsof
Например:
sudo lsof -i :10050
Пример вывода:
Использование netstat
На старых системах можно воспользоваться командой:
netstat -tulpn
Следует учитывать, что 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
При успешном подключении будет выведено сообщение об успешном соединении.
Проверка нескольких портов
Проверить диапазон портов:
nc -zv 192.168.1.100 20-100
Поиск процесса по PID
Если известен PID процесса:
ps -fp 732
Это позволит определить, какое приложение использует порт.
Освобождение занятого порта
Если приложение больше не требуется, его можно завершить.
Например:
sudo kill 732
или более принудительно:
sudo kill -9 732
Использовать принудительное завершение рекомендуется только в случае необходимости.
Проверка правил брандмауэра
Если порт открыт приложением, но подключение невозможно, проверьте настройки межсетевого экрана.
Для UFW:
sudo ufw status
Для firewalld:
sudo firewall-cmd --list-ports
Для iptables:
sudo iptables -L -n
Полезные команды
Показать открытые порты:
ss -tuln
Показать процессы:
sudo ss -tulpn
Проверить порт:
sudo ss -tulpn | grep :80
Узнать владельца порта:
sudo lsof -i :80
Проверить удаленный порт:
nc -zv host 443
Заключение
Для большинства задач достаточно утилиты ss, которая позволяет быстро определить открытые порты и процессы, использующие их. При необходимости дополнительную информацию можно получить с помощью lsof, а проверить доступность удаленного порта с помощью nc.
Знание этих инструментов значительно упрощает диагностику сетевых служб и помогает быстро выявлять конфликты портов при настройке серверов и приложений.









