Ответ
При диагностике проблем с сетью через SSH я использую комбинацию стандартных утилит, чтобы оценить latency, packet loss, throughput и маршрутизацию.
Базовый чек-лист диагностики:
-
Базовая доступность и задержка (ICMP):
ping -c 10 -i 0.2 <целевой_хост> # Ключевые метрики: # - packet loss (потеря пакетов). >1% в LAN — проблема. # - rtt min/avg/max (задержка). Резкие скачки (jitter) >30-50ms — проблема.Примечание: иногда ICMP блокируется, поэтому нужны TCP-тесты.
-
Анализ маршрута:
# Классический traceroute (UDP/ICMP) traceroute -n <целевой_хост> # Или лучше mtr (комбинирует ping и traceroute) mtr --report --report-cycles 10 <целевой_хост>mtrпокажет, на каком конкретно хопе происходит потеря пакетов или рост задержки. -
Проверка доступности конкретного TCP-порта (например, 443 для HTTPS):
timeout 5 nc -zv -w 3 <целевой_хост> 443 # Или с помощью telnet (более наглядно) timeout 5 telnet <целевой_хост> 443Это подтверждает, что сервис слушает порт и firewall его пропускает.
-
Проверка пропускной способности (если установлен iperf3):
# На удалённом хосте должен быть запущен iperf3 в режиме сервера: `iperf3 -s` iperf3 -c <iperf_сервер> -t 10 -P 4 # -t 10: длительность теста 10 сек. # -P 4: 4 параллельных потока для оценки реальной throughput.Сравниваем результат с ожидаемой пропускной способностью канала.
-
Проверка 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.