tcpdump - как отслеживать источник запросов, сделанных с помощью эфемерных / динамических портов

Я пытаюсь определить сетевой трафик между несколькими внутренними микросервисами, работающими на одном сервере. (они делают несколько HTTP-вызовов друг другу)

К сожалению, когда я использую tcpdump, строки, которые я вижу для каждого вызова, позволяют мне определить только «службу назначения» для вызова. Но исходный порт (31822) является одним из тех «эфемерных / динамических портов», которые произвольно выделяются ОС, поэтому я не знаю, какое приложение сделало вызов.

Есть ли простой способ отследить, какая микрослужба является источником этого вызова. Способ связать исходный динамический порт с PID запущенного приложения?

(без изменения самого запущенного приложения, я не могу контролировать их все)

вещи, которые я пробовал, такие как netstat, lsof ни к чему не привели. Спасибо

1
задан 11 October 2017 в 01:01
1 ответ

iptables -I OUTPUT -m owner --pid-owner 1234 -m state --state NEW -j LOG --log-prefix MSX

Это будет регистрировать каждое соединение, инициированное микросервис с pid 1234 с использованием префикса MSX, чтобы вы могли отличать его соединения от других микросервисов.

Вы можете интегрировать управление этими правилами в сценарий инициализации микросервиса. Например, для systemd добавьте это как команду ExecStartPost , используя $ MAINPID , и получите соответствующую команду ExecStopPost , которая удаляет это правило.

0
ответ дан 4 December 2019 в 04:34

Теги

Похожие вопросы