Überprüfen Sie, welcher Prozess in Linux den SCTP-Port geöffnet hat

Überprüfen Sie, welcher Prozess in Linux den SCTP-Port geöffnet hat

Ich verwende Ubuntu Server 16. Irgendwas auf meinem Rechner hat einen offenen SCTP-Port und ich muss ihn finden und beenden (ohne Neustart).

lsofzeigt keine SCTP-Sockets an, nur TCP und UDP.

Ich habe mir alle diese Netzwerk-Dienstprogramme angesehen und die SCTP-Unterstützung ist für einen so alten Standard überraschend spärlich. Ich habe netstatmit SCTP gearbeitet, indem ich die neuesten Netzwerk-Tools erstellt habe .von hier. sudo netstat --sctp -tulpnzeigt einige offene SCTP-Verbindungen an, sagt aber nicht, welcher Prozess sie hat. Es werden nur die PIDs für UDP- und TCP-Sockets angezeigt.

Antwort1

Das ist ein ziemlich umständlicher Umweg, aber bei mir scheint es zu funktionieren. Ich hoffe, dass jemand einen besseren Weg findet, aber meine ersten Gedanken (ss/netstat) scheinen SCTP nicht zu berücksichtigen.

Verwenden Sie zunächst, procfsum den Inode der SCTP-Verbindung zu finden:

$ 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

Nehmen Sie diesen Inode (1895802 in meinem Beispiel) und verwenden Sie ihn, lsofum herauszufinden, wem er gehört:

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

Wie Sie sehen, habe ich socateinen Socket erstellt, der auf 123/sctp lauscht. 8697 ist die PID.

verwandte Informationen