Колисниченко Д.Н. - Linux-сервер своими руками (1077324), страница 51
Текст из файла (страница 51)
Чтобы глубже понимать, о чемпойдет речь, я рекомендую прочитать сначала гл. 14, а потом вернуться кэтой главе. Думаю, читатель меня простит за это неудобство -- так ужполучилось. Впрочем, я постараюсь объяснить все как можно подробнее и вэтом разделе, во всяком случае, все должно быть понятно, а за разъяснениями опций ipchains читатель может обратиться к гл.
14.Предлагаемый мною способ является не самым лучшим, но с его помощью я надеюсь подтолкнуть читателя на создание своего фундаментальногопродукта для подсчета трафика. Для того чтобы данный способ работал,необходимо включить опцию IP: accounting в конфигураторе ядра и перекомпилировать его. В большинстве случаев эта опция уже включена.Затем нужно установить IpChains. Когда все будет готово, установите следующее правило IpChains:ipchains -A output -d A A A . А А А . А Д А . А А А -j ACCEPTДанное правило нужно установить для каждого адреса, учет которого выхотите вести. А просмотреть статистику можно с помощью команды:ipchains -L -vChain input (policy ACCEPT: 4195746 packets, 1765818402 b y t e s ) :Chain f o r w a r d ( p o l i c y ACCEPT: 1 4 2 9 9 9 packets, 2 9 9 4 1 5 1 6 b y t e s ) :Chain output (policy ACCEPT: 4 1 8 2 5 9 7 packets, 1309541595 b y t e s ) :pkts bytes target prot opttosa tosx ifname source destination4308 ACCEPT allOxFF 0x00 anyanywhere 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.gz209Конфигурирование сервераОчень полезна также программа useripacct. Она позволяет узнать о трафике каждого пользователя.Считать трафик можно также программой trafshow, которую вы найдете на прилагаемом компакт-диске. Эта программа считает только локальный трафик (сколько байтов принял и передал данный компьютер иот кого он принял и кому передал). Поэтому, установив ее на шлюзе,можно вполне контролировать трафик всей сети (см.
рис. 8.8). Крометого, немного изменив исходный код trafshow, можно заставить ее отображать не только IP-адреса или доменные имена компьютеров вашейсети, но и МАС-адреса. Исходный код этой программки вы также найдете на компакт-диске.Как я уже писал,можно привести сотниспособов учета трафика,«here is the tcp or udp packets contained data? It is exactly uhat I uant! Noui!а пользоваться вы всеравно будете одним.Причем, в большинствеслучаев, это будет способ, который вы «изобретете» сами, написав(winet) TCP pkts: 0UUP pkts: 0KEatas; 0Page 1 of 1сценарий для обработкиРис. 8.8. Программа trafshowданных статистики.К другим способам учета трафика можно отнести учет с использованием протокола SNMP. Именно по этому протоколу работает программаMRTG (http://www.switch.ch/misc/leinen/snmp/perl/).
Программа MRTG предоставляет очень удобные средства для подсчета трафика: подсчет для всейсети и для отдельного узла, генерирование отчетов и диаграмм в форматеHTML и многое другое.Программа MRTG (The Multi Router Traffic Grapher) предназначена длямониторинга загрузки канала за сутки, неделю, месяц и год. ПрограммаMRTG умеет рисовать красивые картинки в формате PNG, которые отображают состояние канала за определенный период времени.Пример использования вы можете увидеть на сайте:http://www.stat.ee.ethz.ch/mrtg/Для работы mrtg нам потребуется маршрутизатор, поддерживающийпротокол SNMP. В этой же главе будет рассмотрен пример, позволяющийобойтись без маршрутизатора и вообще не использовать протокол SNMP.Общая конфигурация сети должна выглядеть примерно как на рис 8.9.Локальная се гьMRTGРис. 8.9.
Конфигурация сети210SNMPRouterКонфигурирование сервераИз рисунка видно, что наша сеть получает доступ к Internet черезSNMP-маршрутизатор. Компьютер MRTG — это узел локальной сети, накотором установлена программа MRTG. Программа MRTG будет периодически запускаться на узле MRTG, обновляя информацию о трафике.Пользователи локальной сети могут ознакомиться с этой информациейпо протоколу HTTP. Естественно, на узле MRTG должен быть установлен Web-сервер.Перед установкой программы убедитесь в наличии следующих библиотек:1. gd (http://www.boutell.com/gd/);2.
libpng (http://www.libpng.org/pub/png/);3. zlib (http://www.info-zip.org/pub/infozip/zlib/).Загрузить последнюю версию MRTG можно по адресу:http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/pubЕсли вы используете операционную систему RedHat версии 7 или выше,программа MRTG, скорее всего, будет уже у вас установлена. Мы не будемскачивать исходные тексты программы, а сразу воспользуемся уже собранным пакетом rpm. Установим mrtg командой:rprn' -ih mrtg*После установки нужно подготовить программу к первому запуску, тоесть указать, откуда получать сведения о трафике.Программа MRTG состоит из трех частей:1.
cfgmakerутилита для создания конфигурационного файла.2. indexmaker ... утилита для создания файла index. html — страницы краткогообзора, дающую вам общее представление о всех целях, которые вы контролируете. О целях мы поговорим немного позже.3. mrtgсам mrtg.Первый конфигурационный файл удобно создать с помощью программыcfgmaker, а потом добавить в него дополнительные параметры.Введите команду:c f g m a k e r —global ' W o r k D i r : / v a r / w w w / h t m l / m r t g '—global ' O p t i o n s [ _ ] : b i t s , g r o w r i g h t ' \—output / v a r / w w w / h t m l / m r t g / m r t g . c f g\community^router\Теперь разберемся, что все это означает.
Прежде всего, напомню, чтоозначает наклонная черта: это просто перенос строки. Когда вы будетевводить команду, вместо наклонной черты используйте пробел как разделитель параметров. Наклонная черта используется, когда команда не помещается в командной строке.Параметр WorkDir задает рабочий каталог. В этот каталог будут помещены html-файлы и рисунки — отчеты о трафике. Каталог / v a r / w w w / h t m l / ,как вы уже успели заметить, является корневым каталогом нашего Webсервера, поэтому для просмотра статистики нужно ввести следующий URL вокне браузера: http://host/mrtg/211Конфигурирование сервераКроме параметра WorkDir имеются также параметры HtmlDir и ImageDir.В эти каталоги будут помещены html-файлы и картинки.
При определенииэтих параметров нужно учитывать, что параметр WorkDir имеет приоритетнад параметрами HtmlDir и ImageDir и поэтому, если указан параметрWorkDir, mrtg поместит отчеты и картинки именно в этот каталог, а значения параметров HtmlDir и ImageDir будут проигнорированы.Группа глобальных параметров Options управляет построением изображения.
Параметр bits означает, что мы измеряем трафик в битах, поэтомувсе числа нужно умножить на 8. Второй параметр, growright, указываетнаправление оси времени. Позже мы рассмотрим все параметры подробнее.Параметр output программы cfgmaker задает имя конфигурационногофайла, который будет создан.Примечание.Параметры WorkDir и Options являются параметрами программы mrtg, а параметрыglobal и output — параметрами программы cfgmaker.Параметр community@router указывает имя сообщества SNMP-устройства. В нашем случае — это наш SNMP-маршрутизатор. Обычно используется имя сообщества public. За более точной информацией обратитесь к администратору SNMP-маршрутизатора.
Вместо имени узла в этом параметреможно указать IP-адрес, например, public@192.168.1.1.Параметр community@router как раз и является целью, которую мы будемконтролировать.После выполнения этой команды будет сгенерирован такой файл mrtg.cfg:WorkDir: /var/www/html/mrtgOptions[_]: b i t s , g r o w r i g h tT a r g e t [ r l ] : community@routerИмя цели (rl) пишется в квадратных скобках. Для разных целей можнозадавать разные параметры, например:T a r g e t [ r l ] : 1:communitySrouterT a r g e t [ r 2 ] : 2:community@routerM a x B y t e s [ r l ] : 1250000MaxBytes[r2]: 2500000T i t l e [ r l ] : T r a f f i c Analysis for f i r s t interfaceP a g e T o p f r l ] : <Hl>Stats f o r o u r i n t e r f a c e #1</H1>T i t l e [ r 2 ] : T r a f f i c A n a l y s i s f o r second i n t e r f a c ePageTop[r2] : <Hl>Stats for our interface #2</Hl>Параметр MaxBytes определяет максимальное число байт для цели.