9.1 Базовые команды
Протокол ICMP: основа диагностики сетей
ICMP (Internet Control Message Protocol) — это вспомогательный протокол сетевого уровня (L3), который используется для передачи сообщений об ошибках и диагностики сети. ICMP не передает пользовательские данные, но критически важен для работы сети.
Аналогия: Если IP — это "почтовая служба", то ICMP — это "служба оповещения о проблемах": "адрес не найден", "время доставки истекло", "маршрут недоступен".
Структура ICMP-сообщения
Формат ICMP-пакета:
- Type (8 бит) — тип сообщения (например, 8 = Echo Request, 0 = Echo Reply)
- Code (8 бит) — уточняет тип сообщения (дополнительная информация об ошибке)
- Checksum (16 бит) — контрольная сумма для проверки целостности
- Rest of Header (32 бита) — зависит от типа сообщения (может содержать ID, Sequence Number и т.д.)
- Data — данные сообщения (часто содержит копию заголовка IP-пакета, вызвавшего ошибку)
Типы ICMP-сообщений
Основные типы ICMP (для IPv4):
- Type 0 — Echo Reply — ответ на ping-запрос. Используется утилитой ping
- Type 3 — Destination Unreachable — адрес назначения недоступен. Имеет несколько кодов:
- Code 0 — сеть недоступна (Network Unreachable)
- Code 1 — хост недоступен (Host Unreachable)
- Code 2 — протокол недоступен (Protocol Unreachable)
- Code 3 — порт недоступен (Port Unreachable)
- Code 4 — требуется фрагментация, но установлен флаг DF (Don't Fragment)
- Code 13 — административно запрещено (Communication Administratively Prohibited)
- Type 4 — Source Quench — устарело, использовалось для уменьшения скорости отправки
- Type 5 — Redirect — перенаправление на другой маршрутизатор
- Type 8 — Echo Request — запрос ping. Используется утилитой ping
- Type 11 — Time Exceeded — время жизни пакета истекло. Имеет коды:
- Code 0 — TTL истекло в пути (используется в traceroute)
- Code 1 — время сборки фрагментов истекло
- Type 12 — Parameter Problem — проблема с заголовком IP-пакета
| Type | Code | Название | Описание |
|---|---|---|---|
| 0 | 0 | Echo Reply | Ответ на ping |
| 3 | 0 | Network Unreachable | Сеть недоступна |
| 3 | 1 | Host Unreachable | Хост недоступен |
| 3 | 3 | Port Unreachable | Порт недоступен |
| 3 | 4 | Fragmentation Needed | Нужна фрагментация, но DF=1 |
| 8 | 0 | Echo Request | Запрос ping |
| 11 | 0 | TTL Exceeded | TTL истекло (traceroute) |
| 11 | 1 | Fragment Reassembly Time Exceeded | Время сборки фрагментов истекло |
Как работает Ping: Echo Request/Reply
Процесс ping:
- Отправка Echo Request (Type 8): Утилита ping отправляет ICMP Echo Request с уникальным идентификатором и порядковым номером
- Получение Echo Reply (Type 0): Целевой хост отвечает ICMP Echo Reply с теми же идентификатором и номером
- Измерение RTT: Ping измеряет время между отправкой запроса и получением ответа (Round Trip Time)
- Проверка потерь: Если ответ не приходит, фиксируется потеря пакета
# Использование ping с различными ключами
# Windows
ping 8.8.8.8 # Простой ping (4 пакета)
ping 8.8.8.8 -n 10 # Отправить 10 пакетов
ping 8.8.8.8 -t # Непрерывный ping (до Ctrl+C)
ping 8.8.8.8 -l 1000 # Размер пакета 1000 байт
ping 8.8.8.8 -i 64 # TTL = 64
# Linux/macOS
ping 8.8.8.8 # Непрерывный ping (до Ctrl+C)
ping 8.8.8.8 -c 10 # Отправить 10 пакетов
ping 8.8.8.8 -s 1000 # Размер пакета 1000 байт
ping 8.8.8.8 -t 64 # TTL = 64
ping 8.8.8.8 -i 0.2 # Интервал 0.2 секунды
Как работает Traceroute: Time Exceeded
Traceroute (tracert в Windows) использует ICMP Type 11 (Time Exceeded) для отслеживания пути пакетов через маршрутизаторы.
Процесс traceroute:
- TTL = 1: Отправляется пакет с TTL = 1. Первый маршрутизатор уменьшает TTL до 0 и отправляет ICMP Time Exceeded
- TTL = 2: Отправляется пакет с TTL = 2. Второй маршрутизатор отправляет ICMP Time Exceeded
- Продолжение: TTL увеличивается до тех пор, пока пакет не достигнет целевого хоста
- Целевой хост: Отвечает ICMP Echo Reply (если используется ICMP) или Port Unreachable (если используется UDP)
Различия в реализации:
- Windows (tracert): Использует ICMP Echo Request
- Linux/Unix (traceroute): По умолчанию использует UDP (можно переключить на ICMP с ключом
-I)
# Использование traceroute
# Windows
tracert 1.1.1.1 # Трассировка маршрута
tracert -h 15 1.1.1.1 # Максимум 15 хопов
tracert -w 1000 1.1.1.1 # Таймаут 1000 мс
# Linux/macOS
traceroute 1.1.1.1 # Трассировка маршрута (UDP)
traceroute -I 1.1.1.1 # Использовать ICMP
traceroute -m 15 1.1.1.1 # Максимум 15 хопов
traceroute -w 1 1.1.1.1 # Таймаут 1 секунда
Path MTU Discovery (PMTUD)
PMTUD использует ICMP Type 3 Code 4 (Fragmentation Needed) для определения максимального размера пакета, который может пройти по пути без фрагментации.
Как работает PMTUD:
- Отправка с DF=1: Хост отправляет пакет с флагом Don't Fragment (DF)
- Маршрутизатор с меньшим MTU: Если MTU канала меньше размера пакета, маршрутизатор отправляет ICMP Fragmentation Needed с указанием максимального MTU
- Корректировка: Отправитель уменьшает размер пакета и повторяет отправку
- Оптимизация: Постепенно определяется максимальный размер пакета для данного пути
Проблема с блокировкой ICMP: Некоторые администраторы блокируют весь ICMP-трафик для "безопасности". Это нарушает работу PMTUD и может привести к проблемам с недоступностью сайтов или медленной работой.
Безопасность и ICMP
Рекомендации по фильтрации ICMP:
- Разрешайте: Echo Request/Reply (Type 0, 8) — для диагностики
- Разрешайте: Destination Unreachable (Type 3) — критично для PMTUD
- Разрешайте: Time Exceeded (Type 11) — для traceroute
- Блокируйте: Redirect (Type 5) — может использоваться для атак
- Ограничивайте: Rate-limiting для Echo Request — защита от ICMP flood
ICMP в атаках: ICMP может использоваться для:
- ICMP flood — отправка большого количества Echo Request для перегрузки
- Smurf attack — отправка Echo Request с подменой адреса источника на адрес жертвы
- ICMP tunneling — скрытая передача данных внутри ICMP-пакетов
Защита: rate-limiting, фильтрация broadcast ping, мониторинг необычного ICMP-трафика.
Базовые команды диагностики
# Проверка связи
ping 8.8.8.8
tracert 1.1.1.1 # Windows
traceroute 1.1.1.1 # Linux/macOS
# Конфигурация и таблицы
ipconfig /all # Windows
ifconfig || ip addr # Linux/macOS
netstat -ano # Windows
ss -tulpen # Linux/macOS
# DNS
nslookup example.com # Windows
dig example.com ANY # Linux/macOS
Резюме по ICMP
Ключевые моменты:
- ICMP — протокол для передачи сообщений об ошибках и диагностики сети
- Основные типы: Echo Request/Reply (ping), Destination Unreachable, Time Exceeded (traceroute)
- Ping — использует Echo Request (Type 8) и Echo Reply (Type 0)
- Traceroute — использует Time Exceeded (Type 11) для отслеживания маршрута
- PMTUD — использует Fragmentation Needed (Type 3 Code 4) для определения MTU
- Безопасность: Не блокируйте весь ICMP, разрешайте критичные типы с rate-limiting
Цель: ICMP обеспечивает критически важную обратную связь о состоянии сети и является основой большинства утилит диагностики.
Методология диагностики
- Модель слоёв: поднимайтесь снизу вверх — физика → L2 → L3 → L4 → L7.
- Разделяй и властвуй: локализуйте границы (клиент/сеть/сервер) и проверяйте каждый участок.
- Базовые паттерны: нет IP → DHCP/статический; есть IP, но нет DNS → проверить резолв; высокий RTT/потери → трассировка/серии ICMP с повышенной частотой/размером пакета.
- Traceroute: в Windows — ICMP, в Linux/macOS — обычно UDP/ICMP; фильтрация по пути и асимметрия маршрутов искажают вывод.
Алгоритмы и принципы
- Гипотезы → проверки: формулируйте простую гипотезу, подтверждайте минимальным набором тестов.
- Изменение одного параметра: меняйте одну переменную за раз для чистого вывода.
- Сравнение эталонов: рабочее vs нерабочее место/путь; контрольные трассировки/pcap.
- Время и корреляция: сопоставляйте симптомы с изменениями/релизами/инцидентами.
- Документирование: фиксируйте шаги/выводы/команды; уменьшает цикл возврата.
Типовые категории проблем
- L1/L2: дуплекс/скорость/ошибки, VLAN/Trunk, STP‑блокировки.
- L3: адресация/шлюз/маршруты, асимметрия, PMTUD/MSS.
- L4: порты/состояния TCP, перезаполнение окон, алгоритмы перегрузок.
- L7: DNS/HTTP/TLS ошибки, таймауты приложений.
9.2 Расширенные утилиты
Используйте nmap для сканирования, iperf для измерения пропускной способности, mtr для комбинированной трассировки/пинга. Анализируйте pcap‑файлы в Wireshark или через tshark/tcpdump.
Практические сценарии
- Падение Throughput: iperf в обе стороны (TCP/UDP), MTU/fragmentation/Window Scaling.
- Подозрение на фильтрацию: nmap (SYN/ACK/UDP/версионный скан), сопоставление с правилами.
- Анализ задержек: mtr по времени/направлениям, проверка QoS/очередей на участках.
9.3 Анализ трафика
Что такое Wireshark?
Wireshark — это анализатор сетевых протоколов, который позволяет "видеть" весь трафик, проходящий через сетевой интерфейс. Это как "рентген" для сети — показывает, что происходит на самом деле.
Аналогия: Если ping — это "позвонить и спросить, дома ли", то Wireshark — это "подслушать все телефонные разговоры" и проанализировать их.
Захват трафика
Как захватить трафик:
- Выбор интерфейса: Выберите сетевой интерфейс (Ethernet, Wi-Fi)
- Promiscuous режим: Захват всего трафика в сегменте сети (не только адресованного вам)
- Фильтры захвата: Можно сразу фильтровать при захвате (например, только HTTP)
- Сохранение: Сохраняйте захваченный трафик в файл для последующего анализа
# Перехват трафика через tcpdump (командная строка)
tcpdump -i eth0 -nn tcp port 80 # Захват HTTP-трафика
tcpdump -i wlan0 -vv icmp # Захват ICMP с подробным выводом
# Сохранение в файл
tcpdump -i eth0 -w capture.pcap # Сохранить в файл для анализа в Wireshark
Фильтры в Wireshark
Display фильтры (отображение):
- По протоколу:
tcp,udp,http,dns - По адресу:
ip.addr == 1.1.1.1 - По порту:
tcp.port == 443 - Комбинации:
dns && !tcp(DNS, но не TCP)
Анализ трафика
Полезные функции:
- Follow TCP Stream: Просмотр всего диалога между клиентом и сервером, восстановление потока данных
- Графики: Визуализация RTT (Round Trip Time), пропускной способности (Throughput)
- Статистика: Анализ протоколов, разговоров, потоков
- Экспорт объектов: Извлечение файлов из HTTP-трафика
Диагностика проблем
Что искать в Wireshark:
- ICMP/TTL: Диагностика недоступности хостов, проблем с маршрутизацией
- PMTUD: Проблемы с размером пакетов (Fragmentation needed)
- Retransmissions: Повторные передачи пакетов — признак потерь
- Высокие задержки: Большое время между запросом и ответом
- Ошибки протоколов: Неправильно сформированные пакеты
Этично и законно: Используйте Wireshark только в своей сети или с разрешения. Захват трафика в чужих сетях без разрешения незаконен.
Резюме
Ключевые моменты:
- Wireshark — анализатор сетевых протоколов для захвата и анализа трафика
- Захват: Выбор интерфейса, promiscuous режим, фильтры захвата
- Фильтры: По протоколам, адресам, портам, комбинации условий
- Анализ: Follow TCP Stream, статистика, графики RTT/Throughput
- Диагностика: Поиск проблем с ICMP/TTL, PMTUD, retransmissions
Цель: Глубокий анализ сетевого трафика для диагностики проблем и понимания работы протоколов.
9.4 Мониторинг и телеметрия
- NTP: синхронизация времени — база для логов/корреляции.
- SNMP: сбор метрик/траппов; версии v2c/v3, безопасность.
- Syslog: централизованные логи, уровни, ретеншн.
- NetFlow/sFlow/IPFIX: телеметрия потоков, топ‑токены и аномалии.
Построение наблюдаемости
- База: NTP + Syslog + метрики (SNMP/Exporter) + flow‑данные.
- Алертинг: пороговые/поведенческие; корреляция с логами и трассировками.
- Хранение: ретеншн/архивация, приватность и доступы.
9.5 Для профессионалов
- ss: современная альтернатива netstat.
- dig: гибкая диагностика DNS.
- nmap: инвентаризация сети и аудит безопасности.