Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

CONTAINER_NET_PACKET_DROP Linux / DevOps

Траблшутинг трафика Docker с помощью nsenter и tcpdump: сетевой анализ

Обновлено: 21.08.2026
  • Сетевые сбои, обрывы соединений или задержки внутри минималистичных контейнеров (scratch/alpine), где нет tcpdump, curl или netstat.
  • Подозрение на потерю пакетов (Packet Drop), сбросы RST или сбои TLS Handshake между микросервисами.
  • Необходимость захвата трафика в .pcap файл для анализа в Wireshark.

1. Определение целевого PID процесса контейнера на хосте

CONTAINER_NAME="my_api_service"
PID=$(docker inspect --format '{{.State.Pid}}' $CONTAINER_NAME)
echo "Container PID: $PID"

2. Вход в сетевой неймспейс (Network Namespace) через nsenter

# Просмотр сетевых интерфейсов и сокетов внутри неймспейса контейнера
nsenter -t $PID -n ip addr
nsenter -t $PID -n ss -tulnp
nsenter -t $PID -n ip route

3. Захват сетевого трафика утилитой tcpdump с хоста

# Прослушивание интерфейса eth0 внутри контейнера
nsenter -t $PID -n tcpdump -nnvv -i eth0 port 80 or port 443

# Запись трафика в файл pcap для Wireshark
nsenter -t $PID -n tcpdump -i any -w /tmp/container_traffic.pcap

4. Альтернатива: Запуск диагностического контейнера с подключением к сети целевого

docker run -it --rm --net=container:$CONTAINER_NAME nicolaka/netshoot tcpdump -nn -i any
💡 Практика специалистов: Использование nicolaka/netshoot через флаг --net=container: — самый безопасный метод диагностики в production: он не требует установки сетевых утилит на сам хост и не модифицирует продакшн-образы.

Частые вопросы (FAQ)

Что такое утилита nsenter?

nsenter (Namespace Enter) — стандартная системная утилита Linux, позволяющая выполнять команды внутри выбранных пространств имен (IPC, UTS, Network, PID, Mount) любого запущенного процесса хоста.

Можно ли перехватывать трафик, если контейнер запущен в сети host?

В режиме --net=host контейнер разделяет сетевой стек с хостом, поэтому tcpdump запускается прямо на интерфейсах хоста (eth0, bond0) без необходимости использования nsenter.

Полезные материалы
Рекомендуем