Verifique qual processo tem porta SCTP aberta no Linux

6

Usando o Ubuntu Server 16. O que o título diz. Algo na minha máquina tem uma porta SCTP aberta, e eu preciso encontrá-lo e matá-lo (sem reiniciar).

lsof não mostra sockets SCTP, apenas TCP e UDP.

Estou procurando em todos esses utilitários de rede, e o suporte ao SCTP é surpreendentemente escasso para um padrão tão antigo. Eu obtive netstat para trabalhar com o SCTP construindo as ferramentas de ponta aqui . sudo netstat --sctp -tulpn mostra algumas conexões SCTP abertas, mas não diz qual processo as possui. Ele mostra apenas os PIDs para soquetes UDP e TCP.

    
por sudo 25.05.2017 / 04:47

1 resposta

6

Classifique uma rota indireta mas parece funcionar para mim. Esperando que alguém encontre um caminho melhor, mas meus primeiros pensamentos (ss / netstat) não parecem reconhecer o SCTP.

Primeiro, use procfs para encontrar o inode da conexão sctp:

$ cat /proc/net/sctp/eps
 ENDPT     SOCK   STY SST HBKT LPORT   UID INODE LADDRS
b6d72780 a8903800 2   10  48   123       0 1895802 0.0.0.0

Tome esse inode (1895802 no meu exemplo) e use lsof para descobrir quem é o proprietário:

$ lsof -R | grep 1895802
socat      8697        2045             root    5u     sock    1895802      0t0       SCTP ENDPT: b6d72780 0.0.0.0[123]

Como você pode ver, eu estava usando socat para fazer um soquete escutando no 123 / sctp. 8697 é o pid.

    
por 25.05.2017 / 05:08