Как определить объем передачи данных на сетевых интерфейсах по процессу?

Вопрос или проблема

У меня есть встроенная система с 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 происходит обмен данными. Это может быть вызвано сложными сетевыми взаимодействиями или использованием протоколов, которые не учитываются этими утилитами. Так как проблема связана с проверкой активных процессов, которые используют сеть, рассмотри использование более специализированных инструментов.

Применение

  1. Использование iftop и iptraf-ng: Эти утилиты предоставляет более детализированное представление о сетевом трафике на уровне IP-адресов и портов, что может выявить процессы, обрабатывающие данные на уровне сети.

  2. Использование tcpdump: tcpdump позволяет собрать полный дамп сетевого трафика для детального анализа. Вы можете фильтровать пакеты по интерфейсу wlan0 и изучать их в реальном времени или сохранять для последующего анализа с помощью Wireshark.

  3. Мониторинг с использованием ngrep: Инструмент для анализа содержимого сетевых пакетов. Это может помочь выявить специфические паттерны в данных и определить, какие процессы их генерируют.

  4. Использование ss -p: Современная альтернатива netstat, может показать активные соединения и их привязку к процессам с более надежной детализацией.

  5. Анализ /proc/<pid>/net: Просмотр сетевой активности конкретного процесса, заменяя <pid> на идентификатор процесса, может предоставить вам представление о том, как конкретные процессы взаимодействуют с сетью.

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

Оцените материал
Добавить комментарий

Капча загружается...