В Linux существует несколько способов проверить, открыт ли порт на локальной системе или на удаленном сервере. Вот самые распространенные и полезные методы:
1. Использование Netstat или Ss (рекомендуется):
Netstat — устаревшая, но все еще часто используемая утилита. ss — её современная замена и предоставляет более полную информацию.
- Проверка, прослушивает ли порт локально (LISTEN):
· sudo netstat — tulnp | grep <номер_порта>
Или (более современный вариант):
Sudo ss — tulnp | grep <номер_порта>
- — t: Отображает только TCP соединения. — u: Отображает только UDP соединения. — l: Отображает только прослушиваемые сокеты (listening sockets). — n: Отображает числовые адреса и порты (не пытается разрешить имена хостов и служб). Это ускоряет выполнение команды. — p: Отображает PID и имя программы, прослушивающей порт (требует прав суперпользователя).
Замените <номер_порта> на номер порта, который хотите проверить (например, 80, 443, 22).
Пример:
Sudo ss — tulnp | grep 80
Если порт прослушивается, вы увидите строку, содержащую информацию о процессе, прослушивающем этот порт. Если ничего не отображается, значит, порт не прослушивается.
- Проверка всех соединений с определенным портом (ESTABLISHED, TIME_WAIT и т. д.):
· netstat — an | grep <номер_порта>
Или:
Ss — an | grep <номер_порта>
- — a: Отображает все сокеты (и прослушиваемые, и подключенные). — n: Отображает числовые адреса и порты.
Эта команда покажет все соединения, использующие указанный порт, включая установленные соединения (ESTABLISHED), соединения в состоянии ожидания (TIME_WAIT) и т. д.
2. Использование Nmap:
Nmap — мощный сканер портов, который можно использовать для проверки как локальных, так и удаленных портов.
- Проверка локального порта:
· nmap — p <номер_порта> localhost
- — p <номер_порта>: Указывает порт, который нужно проверить.
Пример:
Nmap — p 80 localhost
Результат покажет состояние порта: open (открыт), closed (закрыт) или filtered (отфильтрован).
- Проверка удаленного порта:
· nmap — p <номер_порта> <адрес_сервера>
- <адрес_сервера>: IP-адрес или доменное имя удаленного сервера.
Пример:
Nmap — p 80 example. com
Примечание: nmap может потребовать установки. Установите его с помощью: sudo apt install nmap (Debian/Ubuntu) или sudo yum install nmap (CentOS/RHEL). При сканировании удаленных серверов убедитесь, что у вас есть разрешение на сканирование, так как это может быть расценено как враждебное действие.
3. Использование Telnet (для TCP):
Telnet можно использовать для проверки доступности TCP-портов.
Telnet <адрес_сервера> <номер_порта>
- Если соединение установлено, вы увидите сообщение, похожее на: Connected to <адрес_сервера>. Если соединение не установлено, вы увидите сообщение об ошибке, например: telnet: Unable to connect to remote host: Connection refused.
Пример:
Telnet example. com 80
4. Использование Nc (netcat):
Nc (netcat) — универсальная утилита для работы с сетевыми соединениями.
- Проверка TCP порта:
· nc — zv <адрес_сервера> <номер_порта>
- — z: Только сканировать, не отправлять данные. — v: Подробный вывод.
Пример:
Nc — zv example. com 80
- Проверка UDP порта:
· nc — zvu <адрес_сервера> <номер_порта>
- — u: Использовать UDP.
Пример:
Nc — zvu example. com 53
5. Использование Lsof (только для локальных портов):
Lsof (list open files) может использоваться для поиска процессов, открывших определенный порт.
Sudo lsof — i :<номер_порта>
- — i :<номер_порта>: Указывает порт, который нужно проверить.
Пример:
Sudo lsof — i :80
Если порт открыт, вы увидите информацию о процессе, его открывшем.
Какой способ выбрать?
- Для быстрой проверки локально прослушиваемого порта: ss — tulnp | grep <номер_порта> или netstat — tulnp | grep <номер_порта>. Для сканирования портов на удаленном сервере: nmap. Для простой проверки доступности TCP-порта: telnet или nc. Для получения информации о процессе, открывшем локальный порт: lsof.
При выборе способа учитывайте свои потребности и доступные инструменты. nmap является наиболее мощным и гибким инструментом, но требует установки. netstat и ss часто предустановлены в большинстве дистрибутивов Linux.