Подсчет байтов на основе сокетов

Подсчет байтов на основе сокетов

Я вижу много инструментов для получения количества байт RX и TX для передачи на интерфейсах. Есть ли какой-либо инструмент/программа, которую я могу использовать для получения общего количества переданных байт для одного указанного сокета?

Я пытаюсь ограничить использование сервиса пользователями, например, пользователь номер 23 купил 20 GiB передачи, и он только что загрузил linux .iso размером 1 GiB. Теперь у него должно быть на 1 GiB меньше оставшейся передачи.

Проблема в том, что я использую облачное решение... У меня есть общий интерфейс, который будет использовать каждый пользователь, и я не знаю, смогу ли я использовать SNMP, потому что не знаю особенностей оборудования. (Я также не совсем понимаю, что такое SNMP и нужно ли для него какое-то определенное оборудование)

Я просто хочу отслеживать передачи по пользователю, может быть, по сокету или адресу, или это невозможно. Есть что-то близкое к тому, что я ищу?

решение1

Нет счетчиков для каждого сокета, которые можно было бы запросить, тем более, что после закрытия сокета опрашивать больше нечего.

Одна из вещей, которую вы можете сделать, это установить кучу iptablesправил с разными --uid-ownerопциями и -j ACCEPTцелью. Эти правила ничего не блокируют, но счетчики в каждом правиле (отображаются с iptables -L -n -v) будут подсчитывать пакеты и байты на основе пользователя. Обратите внимание, что это будет подсчитывать только исходящий трафик (потому что входящий трафик не исходит от пользователя, он исходит из сети).

Связанный контент