К основному содержимому

Диагностика сети Linux: ping, traceroute, ss, tcpdump

VDS / VPS · 19.04.2026 · 4 мин чтения
Иллюстрация к статье «Диагностика сети Linux: ping, traceroute, netstat, ss и tcpdump»

Когда сервер недоступен или работает медленно — нужно знать, где искать проблему. Вот полный арсенал команд для диагностики сети на VPS.

1. ping — базовая проверка доступности

# Проверить доступность хоста
ping google.com

# IPv6 ping
ping6 google.com

# Отправить 5 пакетов и остановить
ping -c 5 8.8.8.8

# Пинг с размером пакета 1400 байт (проверка MTU)
ping -s 1400 -c 3 google.com

2. traceroute / tracepath — маршрут пакетов

# Стандартный traceroute
traceroute google.com

# Использовать ICMP (как ping)
traceroute -I google.com

# Traceroute по IPv6
traceroute6 google.com

# tracepath — без прав root
tracepath google.com

3. mtr — лучший инструмент для диагностики потерь

# Установка
sudo apt install mtr -y

# Интерактивный режим (обновляется в реальном времени)
mtr google.com

# Отчёт в одну страницу (удобно для тикетов в поддержку)
mtr --report google.com

# 100 пакетов, только числа
mtr -r -c 100 -n google.com

4. ss и netstat — открытые порты и соединения

# Все открытые TCP-порты (слушающие)
ss -tlnp

# Все соединения (TCP + UDP)
ss -tunap

# Устаревший netstat (аналог)
netstat -tlnp

# Посмотреть кто слушает порт 80
ss -tlnp | grep :80
# или
lsof -i :80

5. nmap — сканирование портов

# Установка
sudo apt install nmap -y

# Сканировать свои открытые порты
sudo nmap -sS -O localhost

# Проверить доступность порта на удалённом хосте
nmap -p 80,443,22 192.168.1.1

# UDP-сканирование
sudo nmap -sU -p 53,123 google.com

6. tcpdump — перехват пакетов

# Весь трафик на интерфейсе eth0
sudo tcpdump -i eth0

# Только HTTP-трафик на порту 80
sudo tcpdump -i eth0 port 80

# Трафик от конкретного IP
sudo tcpdump -i eth0 src 192.168.1.100

# Сохранить в файл для анализа в Wireshark
sudo tcpdump -i eth0 -w /tmp/capture.pcap

Шпаргалка: что когда использовать

ПроблемаИнструмент
Сайт недоступенping → traceroute → mtr
Порт не слушаетss -tlnp, lsof -i
Пакеты теряютсяmtr --report google.com
Нужно знать маршрутtraceroute / ip route
Открытые порты сервераnmap localhost
Отладка конкретного сервисаtcpdump port N
💡 mtr для поддержки: Когда пишете тикет о проблемах с сетью — всегда прикладывайте вывод mtr --report google.com и mtr --report YOUR_SERVER_IP (обе стороны). Это даёт полную картину.

Типичные ошибки и что они означают

СообщениеПричина
ping: connect: Network is unreachableНа сервере нет маршрута по умолчанию — обычно после ручной правки таблицы маршрутизации или сбоя DHCP на интерфейсе
traceroute: command not foundПакет traceroute не входит в минимальный образ Debian/Ubuntu по умолчанию — нужно установить его отдельно
bind: Address already in useПорт уже занят другим процессом; какой именно — покажет ss -tlnp | grep :PORT, а не nmap
tcpdump: You don't have permission to capture on that deviceКоманда запущена без sudo — захват пакетов требует прав CAP_NET_RAW, обычного пользователя недостаточно
nmap изнутри показывает порт открытым, а снаружи — закрытымФайрвол (ufw/iptables) блокирует входящие соединения снаружи, но разрешает трафик с localhost — типичная путаница при самодиагностике
mtr показывает 100% loss только на одном из промежуточных хоповМногие роутеры провайдера намеренно депрайоритизируют ICMP на транзитных узлах — это не реальная потеря пакетов, ориентируйтесь на loss у последнего хопа (цели)

Когда этих инструментов недостаточно

  • Нужен непрерывный мониторинг с историей и алертами, а не разовый снимок — эти команды дают срез момента, для истории нужен отдельный сервис вроде Zabbix или Prometheus
  • Проблема на уровне приложения, а не сети (медленный SQL-запрос, утечка памяти) — сетевые утилиты покажут связность и открытый порт, но не причину задержки внутри бэкенда
  • Нужно содержательно анализировать зашифрованный TLS-трафик — tcpdump перехватит пакеты, но без приватного ключа сервера содержимое HTTPS так и останется зашифрованным
  • Диагностика нужна для сети клиента, а не сервера — с сервера видна только его сторона маршрута, а проблема часто лежит в сети провайдера самого клиента

Собираем диагностику в один отчёт

Для тикета в поддержку удобнее приложить один файл со всеми результатами сразу, а не пересказывать симптомы словами в свободной форме. Постоянный мониторинг вместо разовых снимков разбирают статьи про Netdata и про связку Grafana и Prometheus.

# Собрать базовую диагностику в один файл одной командой
{
  echo "--- ping ---"; ping -c 4 8.8.8.8
  echo "--- route ---"; ip route show
  echo "--- listening ports ---"; ss -tlnp
  echo "--- mtr ---"; mtr --report -c 20 8.8.8.8
} > /tmp/netdiag-$(date +%Y%m%d-%H%M).txt
Статья помогла?
← Назад в базу знаний Задать вопрос поддержке