tcpdump - como rastrear a origem de solicitações feitas com portas efêmeras / dinâmicas

1

Estou tentando identificar o tráfego de rede entre vários microsserviços de back-end em execução no mesmo servidor. (eles fazem algumas chamadas http para o outro)

Infelizmente, quando eu uso o tcpdump, as linhas que eu vejo para cada chamada, apenas me permitem identificar o 'serviço de destino' para a chamada.

tcpdump -nn -i lo 
14:03:52.612985 IP6 ::1.31822 > ::1.9093: Flags [P.], seq 2474698995:2474699366, ack 4107952262, win 697, options [nop,nop,TS val 3238273 ecr 3231488], length 371
14:03:52.616946 IP6 ::1.9093 > ::1.31822: Flags [P.], seq 1:875, ack 371, win 568, options [nop,nop,TS val 3238274 ecr 3238273], length 874

A porta de destino (aqui 9093) é estável e é aquela na qual um dos meus microservices é executado. Mas a porta de origem (31822) é uma dessas 'portas efêmeras / dinâmicas' alocadas aleatoriamente pelo sistema operacional, portanto, não sei qual aplicativo fez a chamada.

Existe uma maneira fácil de rastrear qual microsserviço é a origem dessa chamada? Uma maneira de vincular a porta dinâmica de origem a um PID de aplicativo em execução?

(sem modificar o aplicativo em execução, eu não tenho controle sobre todos eles)

coisas que eu tentei como netstat, lsof me levou a lugar nenhum. Obrigado

    
por MikaelW 11.10.2017 / 00:01

1 resposta

0

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

Isto irá registrar todas as conexões iniciadas pelo microserviço com o pid 1234 usando um prefixo MSX para que você possa distinguir suas conexões de outros microsserviços.

Você pode integrar o gerenciamento dessas regras no script de inicialização do microsserviço. Por exemplo, para systemd, adicione isso como um comando ExecStartPost usando $MAINPID e tenha um comando ExecStopPost correspondente que remova essa regra.

    
por 11.10.2017 / 19:18