Столкнулся тут с необходимости поснифать на DEV среде трафик между контейнерами докера... Некоторое количество командных строк на память.
Для начала с помощью
docker network ls надо выяснить id нужного интерфейса (далее этот id написан как INTERFACE), 8000 - это exposed port моего контейнера.
Дампы пакетов в ASCII ( -A ):
tcpdump -i INTERFACE 'tcp dst port 8000' -A
Тоже самое + поиск по подстроке 'Sec-WebSocket-Key':
tcpdump -i INTERFACE 'tcp dst port 8000' -A | grep 'Sec-WebSocket-Key:'
Фильтрация только с флагом SYN (например для того чтобы посмотреть установку входящих соединений):
tcpdump -i INTERFACE 'tcp dst port 8000 and (tcp[tcpflags] & (tcp-syn) != 0)' -A
Мониторинг keep-alive пакетов
tcpdump -i INTERFACE 'tcp dst port 8000 and (tcp[tcpflags] == tcp-ack and less 1)' -A
Отображение заголовков http-пакетов GET/POST/HEAD
tcpdump -i INTERFACE 'tcp dst port 8000' -A | egrep --line-buffered "^........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: " | sed -r 's/^........(GET |HTTP\/|POST |HEAD )/\n\1/g'
Ну а потом я вспомнил, что есть такой инструмент как nast, который позволяет дампить более простой строкой как заголовки так и тело входящего запроса:
nast -i INTERFACE -d -f 'tcp dst port 8000'
#tools #docker #tcpdump