ss
Статистика сокетов. Быстрее и информативнее netstat, работает через netlink.
# Все TCP-соединения с процессами
ss -tnp
# Слушающие порты
ss -tlnp
# Сокеты в состоянии TIME-WAIT (с подсчётом)
ss -t state time-wait | wc -l
# Подробная информация о TCP-сокете (congestion window, RTT, retrans)
ss -ti dst 10.0.0.1
# Фильтр по порту
ss -tn dport = :443
nstat
Счётчики сетевой статистики ядра. Показывает дельту (инкремент) между вызовами.
# Все ненулевые счётчики (дельта с прошлого вызова, история обновляется)
nstat
# То же, но без обновления истории (-s): базовая точка не сдвигается
nstat -s
# Абсолютные значения с момента загрузки (-a), без обновления истории
nstat -as
# Конкретный счётчик (например, ретрансмиты)
nstat -s | grep -i retrans
gethostlatency
eBPF: задержки DNS-резолвинга (getaddrinfo, gethostbyname). Ловит медленный DNS.
# Все DNS-запросы в реальном времени с задержками
gethostlatency
# Только для конкретного PID
gethostlatency -p 1234
tcplife
eBPF: время жизни TCP-соединений, объём переданных данных, PID процесса.
# Все TCP-соединения с временем жизни
tcplife
# Фильтр по локальному порту
tcplife -L 443
# Фильтр по удалённому порту (-D — именно порты, а не длительность)
tcplife -D 5432
tcpretrans
eBPF: трассировка повторных передач TCP в реальном времени. Первый инструмент при подозрении на сетевые потери.
# Все ретрансмиты
tcpretrans
# С подсчётом по потокам (summary)
tcpretrans -c
# Включить TLP (Tail Loss Probe) кроме обычных ретрансмитов
tcpretrans -l
udpconnect
eBPF: трассировка UDP-соединений (connect() для UDP-сокетов).
# Все UDP connect() в системе
udpconnect
# Ключей у скрипта нет, фильтровать приходится по выводу
udpconnect | grep nginx
tcpdump
Захват пакетов. Тяжёлый, но незаменимый для анализа «на проводе».
# Трафик на конкретном интерфейсе и порту
tcpdump -i eth0 port 443 -nn
# Первые 200 байт каждого пакета, запись в файл
tcpdump -i any -s 200 -w /tmp/capture.pcap
# Только SYN-пакеты (новые соединения)
tcpdump -i eth0 'tcp[tcpflags] & tcp-syn != 0' -nn
# Трафик между двумя хостами
tcpdump -i eth0 host 10.0.0.1 and host 10.0.0.2 -nn
# Чтение pcap-файла с фильтром
tcpdump -r /tmp/capture.pcap port 80
ip
Швейцарский нож для сетевой конфигурации и статистики (iproute2).
# Все интерфейсы с адресами
ip -br addr
# Статистика по интерфейсу (ошибки, dropped, overruns)
ip -s link show eth0
# Таблица маршрутизации
ip route
# Соседи (ARP-таблица)
ip neigh
# Мониторинг сетевых событий в реальном времени
ip monitor
nicstat
Статистика сетевых интерфейсов в стиле iostat: утилизация и насыщенность.
# Все интерфейсы, обновление каждую секунду
nicstat 1
# Расширенная статистика интерфейса: ошибки, коллизии, defer
nicstat -x 1
# Статистика TCP, включая долю ретрансмитов (%ReTX)
nicstat -t 1
ethtool
Настройки и диагностика драйвера NIC.
# Состояние линка, скорость, дуплекс
ethtool eth0
# Статистика драйвера (ring buffer drops, tx errors)
ethtool -S eth0
# Информация о драйвере и firmware
ethtool -i eth0
# Проверить и настроить offloading
ethtool -k eth0
ethtool -K eth0 tso on gro on
pwru 🟢
eBPF: «packet-where-are-you» — трассировка пути пакета через все подсистемы ядра.
# Трассировка пакетов к конкретному хосту
# Фильтр — позиционный аргумент в синтаксисе pcap-filter (man 7 pcap-filter)
pwru 'host 10.0.0.1'
# С фильтром по порту и протоколу
pwru 'host 10.0.0.1 and tcp port 443'
# Показать стек ядра для каждой точки прохождения
pwru --output-stack 'host 10.0.0.1'
# Не терять пакет после NAT или снятия инкапсуляции
pwru --filter-track-skb 'host 10.0.0.1'
# Захватить заодно BPF-программы TC и XDP
pwru --filter-trace-tc --filter-trace-xdp 'host 10.0.0.1'
retis 🟢
Трассировка пакетов через сетевой стек с привязкой к контексту подсистем. Набор коллекторов закрытый: skb, skb-drop, skb-tracking, ovs, nft, ct, dev, ns. Комплементарен pwru.
# Без -c поднимаются все коллекторы, чьи требования выполнены
retis collect
# Контекст правил nftables
retis collect -c nft
# Пакеты и причины отбрасывания (drop reason)
retis collect -c skb,skb-drop
# Фильтр в синтаксисе pcap-filter, как у tcpdump
retis collect -c skb,nft -f "ip dst 10.0.0.1"
# Готовый профиль для разбора дропов в netfilter
retis -p nft-dropmon collect --allow-system-changes
Связанные заметки
- Linux — средства диагностики производительности — обзорная карта инструментов
- Linux — сеть: стек, конфигурация, firewall — архитектура сетевого стека и nftables
- Linux — справочник команд: контейнеры и Kubernetes — сеть контейнеров
Из библиотеки института уносят только знания. Читателей здесь не считают: посещение не регистрируется, отметок в издании не остаётся, счётчиков нет ни у одного издания фонда.
Издание пополняется и пересверяется. Текст доступен на условиях CC BY-SA 4.0 — унесённое можно передавать дальше на тех же условиях.