Добавить в корзинуПозвонить
Найти в Дзене

Linux проверить доступность порта

В Linux есть несколько способов проверить доступность порта как локально (на вашей машине), так и удаленно (на другом сервере). Доступность порта означает, что на этом порту работает служба (например, веб-сервер, SSH-сервер), и он открыт в брандмауэре. Локальная проверка (проверка на вашей машине): Удаленная проверка (проверка с вашей машины на другом сервере): Пояснения о статусах портов (для nmap): Какой способ выбрать? Дополнительные советы: Используя эти инструменты и советы, вы сможете эффективно проверять доступность портов в Linux как локально, так и удаленно.

В Linux есть несколько способов проверить доступность порта как локально (на вашей машине), так и удаленно (на другом сервере). Доступность порта означает, что на этом порту работает служба (например, веб-сервер, SSH-сервер), и он открыт в брандмауэре.

Локальная проверка (проверка на вашей машине):

  1. netstat (устаревший, но часто предустановлен):
    Описание:
    netstat показывает информацию о сетевых соединениях, таблицах маршрутизации, статистике интерфейсов и т. д.
    Синтаксис:netstat -tulnp | grep <номер_порта>

    Опции:-t: Отображать TCP соединения.
    -u: Отображать UDP соединения.
    -l: Отображать прослушиваемые сокеты (listening).
    -n: Отображать адреса и номера портов в числовом формате (не пытаться разрешать имена хостов и служб).
    -p: Отображать PID и имя процесса, использующего сокет (требуются права root).

    Пример:netstat -tulnp | grep 80
    Если порт 80 прослушивается, вы увидите что-то вроде:tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1234/apache2
    Это означает, что процесс с PID 1234 (в данном случае, apache2) прослушивает порт 80 на всех интерфейсах (0.0.0.0).
  2. ss (socket statistics) (рекомендуемый способ):
    Описание:
    ss - это более новая и быстрая альтернатива netstat. Она предоставляет более подробную информацию о сокетах.
    Синтаксис:ss -tulnp | grep <номер_порта>

    Опции: Те же, что и для netstat.
    Пример:ss -tulnp | grep 22
    Если порт 22 прослушивается, вы увидите что-то вроде:tcp LISTEN 0 4096 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
    Это означает, что процесс sshd с PID 1234 прослушивает порт 22.
  3. lsof (list open files):
    Описание:
    lsof показывает список всех открытых файлов, включая сетевые сокеты.
    Синтаксис:sudo lsof -i :<номер_порта>

    Пример:sudo lsof -i :443
    Если порт 443 прослушивается, вы увидите что-то вроде:COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
    nginx 1234 root 6u IPv4 56789 0t0 TCP *:https (LISTEN)
  4. nmap (network mapper) (для более подробной информации):
    Описание:
    nmap - это мощный сканер портов, который может предоставлять информацию о службах, работающих на порту, и о версии программного обеспечения.
    Установка:sudo apt install nmap # Debian/Ubuntu
    sudo dnf install nmap
    # Fedora/RHEL/CentOS
    sudo pacman -S nmap
    # Arch Linux

    Синтаксис:nmap -p <номер_порта> localhost

    Пример:nmap -p 80 localhost
    Вывод может быть примерно таким:Starting Nmap 7.91 ( https://nmap.org ) at 2023-10-27 10:00 MSK
    Nmap scan report for localhost (127.0.0.1)
    Host is up (0.00016s latency).

    PORT STATE SERVICE
    80/tcp open http

    Nmap done: 1 IP address (1 host up) scanned in 0.03s
    STATE показывает статус порта (open, closed, filtered). SERVICE показывает название службы, работающей на порту.

Удаленная проверка (проверка с вашей машины на другом сервере):

  1. telnet (простой способ, но часто не установлен по умолчанию):
    Описание:
    telnet пытается установить соединение с указанным хостом и портом.
    Установка (если не установлен):sudo apt install telnet # Debian/Ubuntu
    sudo dnf install telnet
    # Fedora/RHEL/CentOS
    sudo pacman -S telnet
    # Arch Linux

    Синтаксис:telnet <IP_адрес_или_имя_хоста> <номер_порта>

    Пример:telnet example.com 80
    Если соединение установлено, вы увидите пустой экран или приветственное сообщение от службы. Если соединение не установлено, вы увидите сообщение об ошибке “Connection refused” или “Connection timed out”.
    Примечание: telnet не шифрует трафик, поэтому не используйте его для передачи конфиденциальных данных.
  2. nc (netcat) (более гибкий, чем telnet):
    Описание:
    nc - это универсальный инструмент для работы с сетевыми соединениями.
    Установка:sudo apt install netcat # Debian/Ubuntu (обычно netcat-traditional)
    sudo dnf install nc
    # Fedora/RHEL/CentOS (ncat)
    sudo pacman -S netcat
    # Arch Linux (обычно ncat)

    Синтаксис:nc -zv <IP_адрес_или_имя_хоста> <номер_порта>

    Опции:-z: Только сканировать порты, не отправлять данные.
    -v: Подробный вывод (verbose).

    Пример:nc -zv example.com 443
    Вывод может быть примерно таким:Connection to example.com 443 port [tcp/https] succeeded!
    Если порт открыт, вы увидите сообщение “succeeded”. Если порт закрыт, вы увидите сообщение “Connection refused”.
  3. nmap (network mapper) (рекомендуемый способ):
    Как и для локальной проверки, nmap является мощным инструментом для удаленной проверки.
    Синтаксис:nmap -p <номер_порта> <IP_адрес_или_имя_хоста>

    Пример:nmap -p 22 192.168.1.100
    Вывод может быть примерно таким:Starting Nmap 7.91 ( https://nmap.org ) at 2023-10-27 10:05 MSK
    Nmap scan report for 192.168.1.100 (192.168.1.100)
    Host is up (0.00020s latency).

    PORT STATE SERVICE
    22/tcp open ssh

    Nmap done: 1 IP address (1 host up) scanned in 0.02s
    STATE показывает статус порта (open, closed, filtered). SERVICE показывает название службы, работающей на порту.

Пояснения о статусах портов (для nmap):

  • open: Порт открыт и служба прослушивает соединения.
  • closed: Порт закрыт, но хост доступен. Нет службы, прослушивающей этот порт.
  • filtered: Nmap не может определить, открыт или закрыт порт, поскольку брандмауэр блокирует соединение.
  • unfiltered: Порт доступен, но Nmap не может определить, открыт он или закрыт. Часто используется в сочетании с другими техниками сканирования.

Какой способ выбрать?

  • Локальная проверка: ss (рекомендуется) или netstat (если ss недоступен). Для более подробной информации - nmap.
  • Удаленная проверка: nmap (рекомендуется). telnet или nc для быстрой проверки соединения, но nmap предоставляет больше информации.

Дополнительные советы:

  • Брандмауэр: Если вы не можете подключиться к порту, убедитесь, что брандмауэр на удаленном сервере не блокирует соединение.
  • DNS: Убедитесь, что вы правильно разрешаете имя хоста (если используете имя хоста, а не IP-адрес).
  • Маршрутизация: Убедитесь, что между вашей машиной и удаленным сервером есть маршрут. Используйте traceroute или tracepath для отладки проблем с маршрутизацией.
  • Проверьте службу: Если вы обнаружили, что порт открыт, но не получаете ответа от службы, возможно, служба не работает или настроена неправильно. Проверьте логи службы на удаленном сервере.

Используя эти инструменты и советы, вы сможете эффективно проверять доступность портов в Linux как локально, так и удаленно.