Проверьте, какой процесс открыл порт SCTP в Linux

Проверьте, какой процесс открыл порт SCTP в Linux

Использую Ubuntu Server 16. На моем компьютере открыт порт SCTP, и мне нужно его найти и закрыть (без перезагрузки).

lsofне отображает сокеты SCTP, только TCP и UDP.

Я просматриваю все эти сетевые утилиты, и поддержка SCTP удивительно скудна для такого старого стандарта. Я начал netstatработать с SCTP, создав новейшие сетевые инструментыотсюда. sudo netstat --sctp -tulpnпоказывает некоторые открытые соединения SCTP, но не говорит, какой процесс их имеет. Он показывает только PID для сокетов UDP и TCP.

решение1

Какой-то хакерский обходной путь, но, похоже, он работает для меня. Надеюсь, кто-то найдет лучший путь, но мои первые мысли (ss/netstat) не признают SCTP.

Сначала используйте procfsдля поиска inode соединения 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

Возьмите этот индексный дескриптор (в моем примере 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.

Связанный контент