Компьютерные сети
Анализ пакетов: Wireshark
"Не работает" - самый бесполезный баг репорт. Что именно не работает? DNS не резолвится? TCP не соединяется? TLS handshake падает? Сервер не отвечает? Packet capture - единственный способ увидеть правду без гипотез и догадок.
- **Cloudflare** использует packet capture для анализа DDoS атак в реальном времени. Видят паттерны атаки на уровне пакетов
- **Netflix** анализирует TCP behaviour для оптимизации стриминга. Каждая миллисекунда latency - потенциальный buffer
- **Security teams** ловят malware через packet analysis: C2 beacons, DNS tunneling, data exfiltration - всё видно в трафике
Предварительные знания
Wireshark: сетевой микроскоп
**Wireshark** - анализатор сетевых протоколов с GUI. Захватывает пакеты с интерфейса и разбирает их по слоям: Ethernet → IP → TCP → HTTP. Видишь каждый байт, каждый флаг, каждый timestamp. Это strace для сети.
**Display Filters** - язык запросов Wireshark. `tcp.port == 80` (HTTP), `http.request.method == "POST"`, `tcp.analysis.retransmission` (потери), `frame.time_delta > 0.1` (медленные). Фильтры помогают найти иголку в стоге сена.
Как найти TCP retransmissions в Wireshark?
tcpdump: CLI для захвата
**tcpdump** - консольный packet sniffer. Работает на серверах без GUI. Синтаксис BPF (Berkeley Packet Filter) - тот же что и в Wireshark capture filters. Часто используется для захвата на сервере с последующим анализом в Wireshark.
**BPF (Berkeley Packet Filter)** - язык фильтрации в ядре. Фильтр компилируется в байткод и выполняется до копирования пакета в userspace. Это эффективнее чем фильтрация после захвата - меньше CPU и память.
Зачем использовать tcpdump -w вместо анализа в реальном времени?
Capture: как захватить правильно
**Packet Capture** - искусство захватить нужный трафик. На свитче видишь только свой трафик. Нужен SPAN порт (port mirroring), TAP устройство, или захват на самом сервере. Неправильная точка захвата = не тот трафик.
**Promiscuous mode** - режим сетевой карты, при котором она принимает все пакеты, не только адресованные ей. Нужен для захвата чужого трафика на shared medium (hub, WiFi). На свитче не поможет - свитч не шлёт чужой трафик.
Почему на современном свитче не видишь чужой трафик даже в promiscuous mode?
Анализ протоколов
**Protocol Analysis** - разбор захваченного трафика. Цели: найти проблему (почему медленно?), понять протокол (что передаётся?), обнаружить аномалии (атака?). Wireshark показывает статистику: Conversations, IO Graph, Flow Graph.
**Expert Info** в Wireshark (Analyze → Expert Information) - автоматический анализ проблем. Показывает: Errors (checksums), Warnings (retransmissions, out-of-order), Notes (window updates), Chats (connection setup). Первое место для начала troubleshooting.
HTTPS трафик нельзя анализировать в Wireshark
Можно видеть метаданные (IP, порты, размеры) и TLS handshake. С ключами - можно расшифровать
TLS шифрует payload, но не скрывает: кто с кем общается, размеры пакетов, timing. Для troubleshooting этого часто достаточно. С SSLKEYLOGFILE можно расшифровать весь трафик (если есть доступ к клиенту)
Запрос HTTP занимает 5 секунд. Как определить где задержка - в сети или на сервере?
Итоги
- **Wireshark** = GUI анализатор с развитыми display filters и protocol dissectors
- **tcpdump** = CLI захват на серверах. Workflow: tcpdump -w → scp → Wireshark
- **Точка захвата** критична: на сервере, SPAN port, или TAP. Свитч не покажет чужой трафик
- **BPF filters** работают в ядре - эффективная фильтрация до userspace
- **Expert Info** - первое место для troubleshooting. Retransmissions, resets, latency
Связанные темы
Packet analysis требует понимания протоколов:
- TCP Basics — Понимание handshake, sequence numbers, флагов для анализа TCP проблем
- Network Monitoring — Метрики показывают проблему, packet capture объясняет причину
- Ethernet Frame — L2 заголовки видны в захвате - MAC адреса, VLAN tags
Вопросы для размышления
- Как бы вы захватили трафик между двумя виртуальными машинами на одном гипервизоре?
- В каких случаях packet capture может нарушить privacy или compliance (GDPR)?
- Как анализировать QUIC трафик, который шифрует больше метаданных чем TLS?