Как с помощью SSH проверить наличие сетевых проблем?

«Как с помощью SSH проверить наличие сетевых проблем?» — вопрос из категории Сети, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

При диагностике проблем с сетью через SSH я использую комбинацию стандартных утилит, чтобы оценить latency, packet loss, throughput и маршрутизацию.

Базовый чек-лист диагностики:

  1. Базовая доступность и задержка (ICMP):

    ping -c 10 -i 0.2 <целевой_хост>
    # Ключевые метрики:
    # - packet loss (потеря пакетов). >1% в LAN — проблема.
    # - rtt min/avg/max (задержка). Резкие скачки (jitter) >30-50ms — проблема.

    Примечание: иногда ICMP блокируется, поэтому нужны TCP-тесты.

  2. Анализ маршрута:

    # Классический traceroute (UDP/ICMP)
    traceroute -n <целевой_хост>
    # Или лучше mtr (комбинирует ping и traceroute)
    mtr --report --report-cycles 10 <целевой_хост>

    mtr покажет, на каком конкретно хопе происходит потеря пакетов или рост задержки.

  3. Проверка доступности конкретного TCP-порта (например, 443 для HTTPS):

    timeout 5 nc -zv -w 3 <целевой_хост> 443
    # Или с помощью telnet (более наглядно)
    timeout 5 telnet <целевой_хост> 443

    Это подтверждает, что сервис слушает порт и firewall его пропускает.

  4. Проверка пропускной способности (если установлен iperf3):

    # На удалённом хосте должен быть запущен iperf3 в режиме сервера: `iperf3 -s`
    iperf3 -c <iperf_сервер> -t 10 -P 4
    # -t 10: длительность теста 10 сек.
    # -P 4: 4 параллельных потока для оценки реальной throughput.

    Сравниваем результат с ожидаемой пропускной способностью канала.

  5. Проверка DNS:

    dig <хост> A +short +time=2 +tries=2
    nslookup <хост>
    # Сравниваем время ответа и IP-адрес.

Типичные сценарии в DevOps:

  • Проблема с VPN/туннелем: Использую ip route get <ip_цели> чтобы проверить, идёт ли трафик через нужный интерфейс.
  • Проблема с MTU: Если большие пакеты не проходят, проверяю фрагментацию: ping -M do -s 1472 <цель> (1472 + 28 байт заголовков = 1500). Если не проходит — уменьшаю MTU на интерфейсе или в туннеле.
  • Для постоянного мониторинга настраиваю Blackbox Exporter в Prometheus, который изнутри кластера постоянно проверяет доступность и latency критичных эндпоинтов по HTTP, TCP, ICMP.