Compruebe qué proceso tiene el puerto SCTP abierto en Linux

Compruebe qué proceso tiene el puerto SCTP abierto en Linux

Usando Ubuntu Server 16. Algo en mi máquina tiene un puerto SCTP abierto y necesito encontrarlo y eliminarlo (sin reiniciar).

lsofno muestra sockets SCTP, solo TCP y UDP.

Estoy revisando todas estas utilidades de red y el soporte SCTP es sorprendentemente escaso para un estándar tan antiguo. Me puse netstata trabajar con SCTP creando las herramientas de red de última generación.de aquí. sudo netstat --sctp -tulpnmuestra algunas conexiones SCTP abiertas pero no dice qué proceso las tiene. Solo muestra los PID para sockets UDP y TCP.

Respuesta1

Una especie de indirecta, pero parece funcionar para mí. Espero que alguien encuentre una mejor manera, pero mis primeros pensamientos (ss/netstat) no parecen reconocer SCTP.

Primero, use procfspara encontrar el inodo de la conexión 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 ese inodo (1895802 en mi ejemplo) y utilícelo lsofpara encontrar quién es el propietario:

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

Como puede ver, estaba usando socatpara hacer un socket escuchando en 123/sctp. 8697 es el pid.

información relacionada