檢查Linux中哪個程序開啟了SCTP端口

檢查Linux中哪個程序開啟了SCTP端口

使用 Ubuntu Server 16。

lsof不顯示 SCTP 套接字,僅顯示 TCP 和 UDP。

我正在查看所有這些網路實用程序,對於這樣一個舊標準來說,SCTP 支援非常少。我netstat透過建構最先進的網路工具來使用 SCTP從這裡sudo netstat --sctp -tulpn顯示一些開啟的 SCTP 連接,但沒有說明哪個程序擁有這些連接。它僅顯示 UDP 和 TCP 套接字的 PID。

答案1

有點迂迴的方式,但它似乎對我有用。希望有人能找到更好的方法,但我的第一個想法(ss/netstat)似乎不承認 SCTP。

首先,使用procfs尋找 sctp 連接的 inode:

$ 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

獲取該 inode(在我的示例中為 1895802)並用於lsof查找誰擁有它:

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

正如你所看到的,我用來socat在 123/sctp 上建立一個套接字。 8697 是 pid。

相關內容