Linux에서 어떤 프로세스가 SCTP 포트를 열었는지 확인하세요.

Linux에서 어떤 프로세스가 SCTP 포트를 열었는지 확인하세요.

Ubuntu Server 16 사용. 내 컴퓨터의 어떤 항목에 SCTP 포트가 열려 있고 이를 찾아서 종료해야 합니다(재부팅하지 않고).

lsofSCTP 소켓은 표시되지 않고 TCP 및 UDP만 표시됩니다.

나는 이러한 모든 네트워크 유틸리티를 살펴보고 있는데 SCTP 지원은 그러한 오래된 표준에 비해 놀라울 정도로 부족합니다. 저는 netstat최첨단 네트 툴을 구축하여 SCTP와 협력하게 되었습니다.여기에서. sudo netstat --sctp -tulpn일부 열려 있는 SCTP 연결을 표시하지만 어떤 프로세스에 해당 연결이 있는지는 표시하지 않습니다. UDP 및 TCP 소켓의 PID만 표시됩니다.

답변1

일종의 우회적인 방법이지만 나에게는 효과가 있는 것 같습니다. 누군가가 더 나은 방법을 찾길 바라지만, 내 첫 생각(ss/netstat)은 SCTP를 인정하지 않는 것 같습니다.

먼저 procfssctp 연결의 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]

보시다시피 저는 socat123/sctp에서 수신 대기하는 소켓을 만드는 데 사용했습니다. 8697은 PID입니다.

관련 정보