Usando Ubuntu Server 16. Algo en mi máquina tiene un puerto SCTP abierto y necesito encontrarlo y eliminarlo (sin reiniciar).
lsof
no 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 netstat
a trabajar con SCTP creando las herramientas de red de última generación.de aquí. sudo netstat --sctp -tulpn
muestra 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 procfs
para 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 lsof
para 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 socat
para hacer un socket escuchando en 123/sctp. 8697 es el pid.