Самым простым способом является подсчет с помощью программы ifconfig .Чтобы понять как все работает, введите команду:
cat /proc/net/dev
В результате вы увидите строки, изображенные на рис. 8.7. Для наглядности я ввел эту команду в ОС Linux со старым ядром, так как в новом ядре появились новые опции учета и они не умещаются в окне терминала, а при переносе строк теряется наглядность примера.
Рис. 8.7. Команда cat /proc/net/dev
Файл /proc/net/dev содержит информацию о работе сетевых устройств. На этом и основывается данный метод подсчета трафика. Для самого же подсчета удобнее использовать нижеприведенный сценарий stat:
#!/bin/sh
/bin/grep "$1" /proc/net/dev | /bin/awk –F ":" '{ print $2 }' | \
/bin/awk '{ print "In: " $1 "\nOut: " $9 ; }'
Символ \ используется как перенос в обычном тексте. Его обычно используют для повышения удобочитаемости сценариев. Интерпретатором он будет воспринят как пустой символ.
Скопируйте данный сценарий в каталог /usr/bin и сделайте его выполнимым:
ср ./stat /usr/bin
chmod 755 /bin/stat
Использовать данный сценарий можно так:
/bin/stat eth0
где eth0 — это нужный вам интерфейс.
Можно было бы добавить проверку на правильность указания сценариев, но это не касается самого подсчета трафика. Попробуйте пропинговать интерфейс eth0 по его IP-адресу и снова выполните сценарий.
Честно говоря, это самый простой способ и, скорее всего, для вас он окажется совершенно бесполезным. Я привел его лишь в демонстрационных целях — это как своеобразная программка "Hello, world!".
Теперь перейдем к более традиционному методу. В данном методе для подсчета трафика используется IpChains. Чтобы глубже понимать, о чем пойдет речь, я рекомендую прочитать сначала гл. 14, а потом вернуться к этой главе. Думаю, читатель меня простит за это неудобство — так уж получилось. Впрочем, я постараюсь объяснить все как можно подробнее и в этом разделе, во всяком случае, все должно быть понятно, а за разъяснениями опций ipchains читатель может обратиться к гл. 14.
Предлагаемый мною способ является не самым лучшим, но с его помощью я надеюсь подтолкнуть читателя на создание своего фундаментального продукта для подсчета трафика. Для того чтобы данный способ работал, необходимо включить опцию IP: accounting в конфигураторе ядра и перекомпилировать его. В большинстве случаев эта опция уже включена. Затем нужно установить IpChains. Когда все будет готово, установите следующее правило IpChains:
ipchains –A output –d AAA.ААА.АAА.ААА –j ACCEPT
Данное правило нужно установить для каждого адреса, учет которого вы хотите вести. А просмотреть статистику можно с помощью команды:
ipchains –L –v
Chain input (policy ACCEPT: 4195746 packets, 1765818402 bytes):
Chain forward (policy ACCEPT: 142999 packets, 29941516 bytes) :
Chain output (policy ACCEPT: 4182597 packets, 1309541595 bytes) :
pkts bytes target prot opt tosa tosx ifname source destination
4 308 ACCEPT all 0xFF 0x00 any anywhere AAA.AAA.AAA.AAA
Как вы заметили, это не полный листинг. Я выбрал основное, пропустив поля mark, outsize и ports, которые не представляют для нас интереса.
Здесь видно, что клиент ААА.ААА.ААА.ААА получил 308 байт или 4 пакета. В данном случае в качестве пакетов вступали пакеты протокола ICMP. Правило установлено таким образом, что учет ведется по всем интерфейсам (ifname=any), из любого источника, то есть адреса (source=anywhere) и учитываются все протоколы (prot=all). Аналогично можно установить правило для учета данных, полученных от клиента. Только в этом случае необходимо будет использовать цепочку input. Вам нужно установить это правило, потому что обычно считается не только исходящий, но и входящий трафик клиента, если ваш сервер, например, выступает в роли шлюза.
Можно также использовать данные, взятые из аппаратного маршрутизатора Cisco. Кстати, через Cisco работает популярная программа tacacs+. Эта программа используется для учета времени работы пользователей в системе. И именно эта программа используется рядом провайдеров при организации dialin-доступа. Программа доступна по адресу ftp.vsu.ru/pub/hardware/cisco/tacacs/tac+ia-0.96pre9.3.tar.gz
Очень полезна также программа useripacct. Она позволяет узнать о трафике каждого пользователя.
Считать трафик можно также программой trafshow, которую вы найдете на прилагаемом компакт-диске. Эта программа считает только локальный трафик (сколько байтов принял и передал данный компьютер и от кого он принял и кому передал). Поэтому, установив ее на шлюзе, можно вполне контролировать трафик всей сети (см. рис. 8.8). Кроме того, немного изменив исходный код trafshow, можно заставить ее отображать не только IP-адреса или доменные имена компьютеров вашей сети, но и МАС-адреса. Исходный код этой программки вы также найдете на компакт-диске.
Читать дальше
Конец ознакомительного отрывка
Купить книгу