Как я могу найти, какой процесс отправляет данные в определенный порт?

alister и rss67 в этой статье представляют самый стабильный, совместимый и самый легкий путь. Я никогда замечаемый лучший путь, чем это прежде.

RELPATH=./../
cd $RELPATH
ABSPATH=`pwd`

Если Вы хотите вернуться к исходному местоположению,

ORGPATH=`pwd`
RELPATH=./../
cd $RELPATH
ABSPATH=`pwd`
cd $ORGPATH

или

RELPATH=./../
cd $RELPATH
ABSPATH=`pwd`
cd -

Я желаю, чтобы это помогло. Это было самым большим решением для меня.

21
29.11.2012, 01:30
4 ответа

Для TCP (хотя тот же подход работал бы на SCTP1 или любой транспортный протокол с установлением соединения), то же что касается поиска слушания:

lsof -nPi tcp:the-port

Сообщат процессы, которые имеют сокет TCP, открытый на том порте. Если Вы знаете исходный порт (Ваше серверное приложение может знать об этом и зарегистрировать его), можно использовать это вместо этого для точного определения клиента жулика.

Для UDP или Неструктурированных сокетов, это было бы более хитро, хотя я предполагаю, что это - куда что-то как systemtap или dtrace может прибыть удобное. Возможно auditd также.


1, Хотя SCTP поддерживают (только на Linux) был добавлен к lsof в версии 4.86 Вы не можете использовать -i попросить SCTP снабжает сокетом явно. Здесь может использовать lsof -nP | grep -w 'SCTP.*:the-port' как эвристика вместо этого.

24
27.01.2020, 19:43

В зависимости от типа соединения это устанавливает для отправки данных, один из этих подходов получит Вас где-нибудь.

  • Использовать tcpdump port 1234 получать данные, отправляемые в этот порт. Можно использовать программу как Wireshark для анализа его на другой машине (полученный в файл с помощью -w опция). С другой стороны, используйте Wireshark непосредственно.

  • В случае, если это устанавливает и сохраняет открытым tcp/udp соединение, Вы могли использовать netstat найти удаленный IP соединения.

  • Список открытые сокеты процесса как в ответе, предоставленном @StephaneChazelas.

2
27.01.2020, 19:43

Можно использовать sockstat управляйте для нахождения процесса, который инициировал соединение с сервисом на локальный хост.

DESCRIPTION
     The sockstat command lists open Internet or UNIX domain sockets.

Просто соответствуйте всем исходным соединениям со своим местом назначения. Это хорошо работает для TCP/UDP/UNIXsockets.

1
27.01.2020, 19:43

На Солярисе, работая pfiles на всех процессах должен показать, который имеют процессы, какие соединения открываются. Будет требоваться некоторый осторожный filering, вероятно, с помощью-A ggrep,-B опции...

На Linux, netstat -anp --inet будет работать, даже без установленного lsof. (отбросьте --inet получить сокеты домена Unix также)

0
27.01.2020, 19:43

Теги

Похожие вопросы