Количество байтов на основе сокетов

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам