Вопрос или проблема
У меня есть встроенная система с Ubuntu 24.04. Она будет развернута удаленно с возможность подключения по сотовой и спутниковой связи. Я планирую направить весь сетевой трафик через сотовый/спутниковый модем через интерфейс PPP. Перед этим мне нужно устранить весь ненужный сетевой трафик, но я не могу определить, какие процессы передают/принимают данные. Для тестирования я подключен к плате через UART, чтобы соединение SSH не влияло на мои тесты. Устройство подключено к локальной сети WiFi.
Я использую nethogs
(https://linux.die.net/man/8/nethogs), чтобы увидеть объем/пропускную способность данных. После завершения работы моих процессов, использующих сеть, nethogs
показывает следующее:
NetHogs version 0.8.7-2build2
PID USER PROGRAM DEV SENT RECEIVED
? root unknown TCP 0.000 0.000 KB
TOTAL 0.000 0.000 KB
Также, вывод команды
netstat -tupn
не показывает соединений.
Таким образом, похоже, что сетевой активности нет. Но если я непрерывно выполняю
cat /proc/net/dev
я легко вижу, как количество байт, полученных (и в меньшей степени переданных) на wlan0
, увеличивается. Как я могу определить, какой(-ие) процесс(-ы) принимает(-ют)/передает(-ют) данные?
Если я отключу соединение WiFi, вывод команды
cat /proc/net/dev
действительно перестает увеличиваться, как и ожидалось.
Если cat /proc/net/dev
не является надежным способом увидеть объем передачи сетевых данных, что является таковым?
.
Ответ или решение
Для определения объема передаваемых данных через сетевые интерфейсы по процессам в вашей системе, используемой в удаленных подключениях через сотовую или спутниковую связь, необходимо более детально проанализировать сетевую активность на уровне процессов. Давайте рассмотрим несколько теоретических аспектов и практических методов, которые помогут вам в этом вопросе.
Теория
Основной задачей является определение, какие процессы в системе генерируют сетевой трафик. Для этого требуется инструментирование системы для мониторинга активности на уровне процессов и сетевых интерфейсов. Стандартные утилиты, такие как nethogs
, иногда могут не дать полную картину, особенно если процессы используют необычные протоколы или порты, не охваченные простыми инструментами.
Пример
В вашем случае nethogs
и netstat
не выявляют активных соединений, однако /proc/net/dev
показывает, что на интерфейсе wlan0
происходит обмен данными. Это может быть вызвано сложными сетевыми взаимодействиями или использованием протоколов, которые не учитываются этими утилитами. Так как проблема связана с проверкой активных процессов, которые используют сеть, рассмотри использование более специализированных инструментов.
Применение
-
Использование
iftop
иiptraf-ng
: Эти утилиты предоставляет более детализированное представление о сетевом трафике на уровне IP-адресов и портов, что может выявить процессы, обрабатывающие данные на уровне сети. -
Использование
tcpdump
:tcpdump
позволяет собрать полный дамп сетевого трафика для детального анализа. Вы можете фильтровать пакеты по интерфейсуwlan0
и изучать их в реальном времени или сохранять для последующего анализа с помощьюWireshark
. -
Мониторинг с использованием
ngrep
: Инструмент для анализа содержимого сетевых пакетов. Это может помочь выявить специфические паттерны в данных и определить, какие процессы их генерируют. -
Использование
ss -p
: Современная альтернативаnetstat
, может показать активные соединения и их привязку к процессам с более надежной детализацией. -
Анализ
/proc/<pid>/net
: Просмотр сетевой активности конкретного процесса, заменяя<pid>
на идентификатор процесса, может предоставить вам представление о том, как конкретные процессы взаимодействуют с сетью.
Применив эти инструменты, вы сможете получить более детальное понимание того, какие процессы действительно генерируют сетевой трафик в вашей системе и принять решение о их оптимизации или отключении для снижения ненужной нагрузки на сотовую или спутниковую сеть.