1

Я попробовал Wireshark. Он показывает IP-адрес источника и назначения, номер порта и содержимое пакета, но ничего не говорит о том, какое приложение использует пакеты.

По-видимому, tcpdump похож; данные сети, но нет информации о том, какое приложение.

Wireshark демонстрировал гораздо большую активность, чем я ожидал (включая IP-адреса назначения за пределами моей домашней сети), когда браузер, электронная почта и другие известные программы, связанные с Интернетом, были закрыты, а другие компьютеры выключены. Но не зная, какая программа отправляет или получает, с этим трудно что-либо сделать.

Я использую Ubuntu 11.04.

Я не ищу общий анализатор сети; Я только хочу увидеть, что входит и выходит из той же машины, на которой работает анализатор.

Есть ли что-нибудь подобное в Linux? Даже если это стоит денег? Или я не знаю, как и где искать имя приложения в Wireshark?

2 ответа2

3

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

Он основывается на деталях (как вы заметили), что нет необходимости перехватывать весь трафик - вам нужно посмотреть на connection table и идентификатор связанной программы.

netstat -npt

Вот как работают варианты,

-n - показывает простые сетевые адреса без разрешения имен (ускоряет работу)
-p - дает PID для связанной программы
-t - ограничивает просмотр TCP-соединений

Это работает довольно быстро и может проходить через скрипт, чтобы вести журнал данных (подключен к cron?).
Вы можете отфильтровать эти данные, чтобы получить базу данных

{имя программы, идентификатор программы, IP 5-кортеж, временное окно}

Недостатком является то, что в связи с отсутствием записи о соединении UDP (из тех, которые поддерживает TCP), для приложений UDP действительно потребуется сниффинг.

Мне бы очень хотелось узнать, есть ли существующий инструмент, делающий это :-) Это хороший проект.
Я думаю, что я написал Python-скрипт на этих строках некоторое время назад.

3

Я думаю, что большинство анализаторов не пытаются определить, является ли текущая машина, на которой они работают, конечной точкой для любого потока трафика, который они видят (в отличие, скажем, от просмотра кадров других машин через концентратор). или зеркальный порт на коммутаторе, или по беспроводному каналу, или видя кадры, которые текущая машина просто соединяет / маршрутизирует / NAT-шлюз). Таким образом, большинство анализаторов не заботятся о том, можно ли найти имя процесса или приложения, потому что это можно найти только в том случае, если локальная машина является конечной точкой трафика.

Это не так удобно, как использование сниффера для вас, но в любом случае вот обходной путь:
Поскольку вы знаете, какие адреса принадлежат вашему локальному компьютеру, как только вы найдете номер локального порта, вы можете найти имя процесса, используя этот номер порта, с помощью lsof например так:

sudo lsof +c15 -i :$PORT

... где "$ PORT" - это номер порта, который вам нужен.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .