У меня есть коробка CentOS, настроенная как шлюз с IPTables (среди многих вещей, таких как прокси-кеш с использованием Squid). Моя локальная сеть состоит из ~ 30 машин, все из которых подключены к Интернету через eth0 шлюза (это единственный компьютер, подключенный к модему DSL - через eth1).
Столкнувшись с месячной квотой загрузки, я установил пропускную способность на шлюзе, чтобы отслеживать использование пропускной способности ПК, и настроил мониторинг eth0.
Весь сетевой трафик, поступающий на шлюз, пересылается на порт 3128 для обработки Squid, но на полосе пропускания он не кажется точным. Например, загрузка 3,3 МБ на один из компьютеров после запуска состояния пропускной способности 4,8 МБ для этого компьютера по протоколу HTTP. Я понимаю, что, отслеживая eth0, я отслеживаю всю сетевую активность, а не только использование Интернета (порт 80 и т. Д.), Но разве вкладка HTTP в полосе пропускания не имеет отношения к пакетам на порту 80 или использованию Интернета?
Мне нужно знать, какую часть квоты на загрузку из Интернета каждый IP-адрес использует ежедневно. Что делать :) ?
Также старым, но надежным инструментом будет iptraf. Он поставляется со всеми дистрибутивами, небольшой и быстро устанавливается. Приятно, что он основан на ncursed, поэтому вы можете быстро запустить его из командной строки, чтобы в реальном времени получать информацию о потоке трафика на этом поле.
Проблема, с которой я сталкиваюсь со счетными приложениями, заключается в том, что, если у вас есть счетчики или графики использования, неизбежно возникает вопрос: «Что такое который"(при указании суммы или пика на графике).
Я считаю, что лучший способ исследовать эти вещи - использовать netflows и nfsen. Сетевой поток - это запись разговора: источник, пункт назначения, порты, байтовые счетчики, время. Подумайте о захвате проводов, в котором вас не волнуют фактические передаваемые байты, а только совокупная информация. Используя что-то вроде nfsen для анализа коллекции netflow, вы можете увидеть, кто с кем разговаривает, и, посмотрев на порты, обычно можно хорошо догадываться о том, что они делают. И что лучше всего, вы можете вернуться в прошлое и посмотреть на старые разговоры.
Вероятно, вы могли бы установить конкретное разрешающее правило iptables для порта 3128, так как это весь ваш исходящий трафик, а затем использовать "/ sbin / iptables -L -v", и он показывает вам пропускную способность и количество пакетов, которые прошли через каждое правило .
Вы можете использовать пару очень простых iptables
правила для подсчета всего IP-сетевого трафика на входе / выходе вашего шлюза CentOS. Если eth0
это ваш сетевой интерфейс с выходом в Интернет, правила могут быть такими:
iptables -I 1 INPUT -i eth0
iptables -I 1 OUTPUT -o eth0
Первое правило соответствует всему входящему трафику; во-вторых, весь трафик уходит. Ни одно из правил не выполняет никаких действий, поэтому сетевой трафик никак не будет изменен. Также обратите внимание, что -I 1
option поместил правила в начало соответствующих цепочек, гарантируя, что все пакеты попадут в них.
iptables
ведет подсчет пакетов и байтов для всех пакетов, соответствующих всем правилам. Вы можете запросить правила и их счетчики следующим образом:
iptables -L -n -v
Вы также можете просмотреть счетчики и сбросить их до нуля следующим образом:
iptables -L -n -v -Z
Пропускная способность доверия. Файл размером 3,3 МБ МОЖЕТ использовать 4,8 МБ полосы пропускания. Я не думаю, что вы учитываете накладные расходы. К каждому пакету или биту данных из этого файла прикреплена информация, которая помогает ему добраться до места назначения.
Я не знаю, как рассчитать накладные расходы, которые вы должны увидеть. Надеюсь, кто-то сможет присоединиться к этому и добавить к этому ответу.
Я решил использовать ntop, его довольно просто установить с очень богатым веб-интерфейсом. он, скорее всего, сработает :)
изменить: моя проблема решена. под HTTP с ntop, отслеживая eth0, на который направляется весь трафик, я могу точно видеть размер всего, что я загружаю на каждый ip.