У меня есть служба, поддерживающая определенный порт открытым.
Я получаю данные, которые я не ожидаю и не хочу получать, и я пытаюсь точно определить источник этих данных. Итак, как я могу найти, какой процесс отправляет данные на определенный порт, а не какой процесс прослушивает.
источник
Попробуйте следующее:
Или:
Чтобы избежать локального результата:
Чтобы перечислить только УСТАНОВЛЕННЫЕ соединения:
источник
В зависимости от типа соединения, которое он устанавливает для отправки данных, один из этих подходов приведет вас куда-то.
Используйте
tcpdump port 1234
для получения данных, отправляемых на этот порт. Вы можете использовать такую программу, как Wireshark, чтобы проанализировать ее на другом компьютере (записывается в файл с помощью этой-w
опции). Кроме того, используйте Wireshark напрямую.В случае, если он устанавливает и сохраняет открытым соединение TCP / UDP, вы можете использовать,
netstat
чтобы найти удаленный IP-адрес соединения.Перечислите открытые сокеты процесса как в ответе, предоставленном @StephaneChazelas.
источник
Вы можете использовать
sockstat
команду, чтобы найти процесс, который инициировал подключение к вашей службе на локальном хосте.Просто сопоставьте все исходные соединения с вашим пунктом назначения. Это прекрасно работает для TCP / UDP / UNIXsockets.
источник
В Solaris при запуске pfiles на всех процессах должно быть показано, какие процессы имеют какие соединения открыты. Это потребует некоторой осторожности, возможно, с использованием опций -g, -B ggrep ...
На Linux
netstat -anp --inet
будет работать даже без установленного lsof. (сбросьте,--inet
чтобы получить доменные сокеты Unix, а также)источник