Verifique qual processo tem porta SCTP aberta no Linux

Verifique qual processo tem porta SCTP aberta no Linux

Usando o Ubuntu Server 16. Algo na minha máquina está com uma porta SCTP aberta e preciso encontrá-la e eliminá-la (sem reinicializar).

lsofnão mostra soquetes SCTP, apenas TCP e UDP.

Estou examinando todos esses utilitários de rede e o suporte SCTP é surpreendentemente escasso para um padrão tão antigo. Eu comecei netstata trabalhar com SCTP construindo ferramentas de rede de última geraçãodaqui. sudo netstat --sctp -tulpnmostra algumas conexões SCTP abertas, mas não diz qual processo as possui. Mostra apenas os PIDs para soquetes UDP e TCP.

Responder1

Uma espécie de rotatória hacky, mas parece funcionar para mim. Esperando que alguém encontre uma maneira melhor, mas meus primeiros pensamentos (ss/netstat) não parecem reconhecer o SCTP.

Primeiro, use procfspara 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

Pegue esse inode (1895802 no meu exemplo) e use-o lsofpara descobrir quem o possui:

$ 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 socatpara fazer um soquete escutando em 123/sctp. 8697 é o pid.

informação relacionada