Linux
Шрифт:
7: 2345: respawn: /usr/sbin/pppd file /etc/ppp/options.ttyS0 > /var/log/pppS0.log
Комплексное тестирование
Теперь настало время проверить – правильно ли настроено наше соединение по выделенному каналу. Для этого перезагрузите компьютер-шлюз для вступления в силу внесенных в файл inittab изменений и временно отключите все настройки брандмауэра (если вы, конечно, установили его). Затем необходимо попытаться выйти в Интернет. Быстрее всего – использовать программу ping:ping http://www.bhv.ru
Если все было настроено корректно, то вы увидите отклик от сайта www.bhv.ru.
Если у вас все прошло именно таким образом, значит, система работает как надо. В противном случае проанализируйте последние строки системного журнала (/var/log/messages).
Этим действием мы проверили корректную работу только с нашего компьютера-маршрутизатора. Однако нам надо сделать то же самое и с любого компьютера в локальной сети. Если что-то пошло не так, проверьте корректность настройки протокола TCP/IP на этой машине, в частности – настройки сетевого шлюза, которые должны указывать на наш компьютер-маршрутизатор.
Итак, вы получили вполне работоспособный шлюз в Интернет для вашей локальной сети. Однако это далеко не все. Система наша открыта для любого постороннего вмешательства, а шлюз должен обеспечить беззащитную локальную сеть защитой извне и изнутри, вести учет потребленного трафика (и причем зачастую – покомпьютерно), ограничить нас от информации нежелательной или сомнительной (например баннеров), обработать статистику и красиво ее подать – лучше всего графически. Как видите – задач много, и мы будем их решать постепенно.
Защита локальной сети
Защита локальной сети – понятие комплексное и многогранное. В данном случае мы имеем в виду правильную настройку брандмауэра на нашем компьютере-шлюзе. Процедура настройки брандмауэра была описана в гл. 29, и к этому вопросу добавить больше нечего.
Установка proxy-сервера
Следующее, что мы должны решить
Наиболее часто используемой программой proxy является программа Squid – высокопроизводительный кэширующий proxy-сервер, поддерживающий протоколы FTP, Gopher, и HTTP. Squid сохраняет часто запрашиваемые данные в оперативной памяти компьютера, что позволяет резко увеличить производительность proxy-сервера, кэширует DNS-запросы (это свойство интересно тем, кто не имеет своего DNS-сервера). Помимо вышеперечисленных возможностей, поддерживает SSL, расширенный контроль доступа и полную регистрацию запросов.
Программа Squid описана в гл. 22, однако мы позволим себе напомнить некоторые интересные моменты по ее использованию.
Transparent proxy
Transparent proxy – таким образом настроенный proxy-сервер, что его использование прозрачно для пользователей. Это имеет как хорошую, так и плохую стороны. С одной стороны, пользователям не придется настраивать соединение через proxy-сервер в своей системе, а трафик гарантированно проходит через proxy-сервер. С другой стороны, теряется свобода выбора пользователя – пользоваться или нет proxy-сервером. Кроме того, некоторые сайты некорректно обрабатываются proxy.
Для организации transparent proxy необходимо таким образом настроить маршрутизатор (брандмауэр), чтобы транзитные пакеты, предназначенные для 80 порта, попадали на вход proxy-сервера. Соответствующие настройки transparent proxy приведены в гл. 22.
Борьба с баннерами
Наверняка вам встречались Web-страницы, на которых рекламных баннеров было больше, чем нужной информации. В этом случае можно настроить локальный сервер Squid таким образом, чтобы не происходила закачка баннеров. Борьбу с баннерами можно производить разными методами:
• настроить отдельный proxy-сервер с ограничением баннеров: хочешь – используй, не хочешь – не используй;
• совместить ограничение баннеров с transparent proxy;
• организовать proxy на локальной системе для ограничения баннеров.
Соответствующие настройки программы Squid для борьбы с баннерами приведены в гл. 22.
Разделение внешнего канала (ограничение трафика)
Часто бывает так, что у вас есть внешний канал – скажем, 128 Кбит, и несколько групп пользователей с определенным приоритетом.
И надо, чтобы одна группа имела фиксированную ширину наружного канала (скажем, 64 Кбит), а две другие – ширину наружного канала по 32 Кбит. Для решения этой непростой задачи мы также можем воспользоваться Squid. Соответствующие настройки программы Squid для разделения внешнего канала приведены в гл. 22.
Помимо Squid, для этого можно воспользоваться специализированными программами, называемыми traffic shaper. Существует несколько программ такого типа с различной функциональностью. В частности, есть traffic shaper, которая позволяет ограничить канал не по пропускной способности, а по полученным мегабайтам. Принцип действия ее оригинален и прост. Допустим, у вас выделенный канал, причем в арендную плату входит один гигабайт входящего трафика. В программе traffic shaper выставляется ограничение один гигабайт в месяц. Далее происходит следующее. В начале информация качается с той скоростью, с какой способен передавать информацию выделенный канал, но при приближении к заветной цифре – пропускная способность канала, ограниченного traffic shaper, все уменьшается и уменьшается, не позволяя вам выйти за рамки ограничения в один гигабайт в месяц. В результате, в последние дни месяца скорость канала может упасть до десятков байтов в секунду.
В качестве стабильной и хорошо конфигурируемой программы типа traffic shaper можно порекомендовать пакет CBQ. Ограничивать трафик можно и с помощью утилиты tc, входящей в пакет iproute2.
Мониторинг загрузки каналов
Для анализа загрузки интернет-канала необходимо использовать дополнительный пакет, поскольку разбираться самим в log-файлах системы – задача неблагодарная. Чтобы обеспечить требуемую наглядность, такой пакет должен выдавать информацию в графической форме, причем, желательно, с помощью Web-интерфейса. Все эти условия реализованы в программах MRTG (Multi Router Traffic Grapher) и RRDtool (Round Robin Database).
Программа MRTG
MRTG создает HTML-страницу с отображением загрузки канала за сутки, неделю, месяц и год. Для этого используется написанный на Perl скрипт, который опрашивает маршрутизатор через SNMP, а программа, написанная на С, обрабатывает получившийся результат и создает встроенные в HTML-страницу изображения в формате GIF/PNG. Помимо собранной самостоятельно информации пакет MRTG может обрабатывать информацию и из других источников (cpuinfo, df, squid и т. п.) и строить графики по полученной информации.
Большим преимуществом данной программы является постоянный размер журналов, в которых более старая информация хранится с меньшими подробностями.
Внешний вид получаемых графиков приведен на рис. 30.1.
Конфигурирование MRTG
Для конфигурирования программы MRTG используется файл mrtg.cfg, параметры которого и будут рассматриваться в данном разделе. Как обычно, будут приведены только ключевые параметры, с полным списком можно ознакомиться в документации, прилагаемой к этому программному пакету.
Правила записи параметров в конфигурационном файле:
• ключевое слово – в начале строки;
• двоеточие – разделитель, идущий сразу за ключевым словом;
• строка продолжения начинается с пробела;
• строки комментария начинаются с символа #.
Итак, файл mrtg.cfg может содержать следующие команды:
• Include: имя_файла – подключаемый файл;
• WorkDir: имя_каталога – задает размещение журнала, рабочих файлов и генерируемых страниц, имеет приоритет над HtmiDir, imageDir и LogDir;
• HtmiDir: имя_каталога – задает размещение генерируемых страниц;
• ImageDir: имя_каталога – задает размещение генерируемых изображений; обязательно находится под HtmiDir – страницы генерируются в этом предположении;
• LogDir: имя_каталога – задает размещение журнала;
• Refresh: – частота перерисовки графи ков в браузере;
• RunAsDaemon: no | yes – запуск MRTG в режиме демона;
• Interval: – предполагаемый интервал запуска MRTG;
• IconDir: – каталог, где хранятся значки;
• Forks: число – определяет, сколько запускать параллельных процессов опроса;
• WriteExpire: no | yes – создавать файлы. meta для apache;
• NoMib2: по | yes – не запрашивать sysUptime, sysName;
• Language: язык_отчетов – определяет язык отчетов, есть поддержка русского языка;
• LogFormat: rrdtooi – формат журналов для rrdtool – динамическое создание отчетов;
• LibAdd: адрес-библиотеки-rrdtool RRDs.pm – адрес библиотеки rrdtool;
• PathAdd: адрес-rrdtool – адрес rrdtool;
Для каждого контролируемого устройства – обозначается как target, буквы преобразуются к строчным, создается отдельная секция. При работе MRTG каждый target порождает файлы журнала (target.log и target.old), картинки с графиками (target-day.gif, target-week.gif, target-month.gif, target-year.gif) и HTML-страницу (target.html).
• Target [target]: порт:community@маршрутизатор
[:port[:timeout[:retries[:backoff[:2]]]]]
где:
– порт – номер интерфейса на маршрутизаторе;
– community – пароль на чтение;
– маршрутизатор – имя или IP-адрес;
– port – по умолчанию стандартный порт SNMP;
– timeout – время ожидания;
– retries – количество попыток;
– backoff – во сколько раз увеличивать timeout при каждом повторе;
– 2 – означает использование 64-битных счетчиков;
• Target[target]: внешняя-программа-с-параметрами-в-обратных-кавычках
Программа должна возвращать на стандартный вывод 4 строки:
– значение счетчика входных байтов;
– значение счетчика выходных байтов;
– текстовую строку, содержащую информацию о времени работы объекта после включения;
– строку, указывающую имя объекта;
• RouterUptime[target]: communitу@маршрутизатор – откуда брать информацию об имени маршрутизатора и его времени работы для составных target;
• MaxBytes[target]: число – значения переменных, которые больше этого числа, игнорируются;
• Title [target]: – заголовок для HTML-страницы;
• PageTop[target]: – текст, выдаваемый в верхней части HTML-страницы;
• PageFoot [target]: – текст, выдаваемый в нижней части HTML-страницы;
• AddHead[target]: – HTML-текст, вставляемый после title внутри head;
• MaxAbs[target]:
• Unsealed [target]: [d] [w] [m] [у] – подавить масштабирование по вертикали для соответствующего графика (d – день, w – неделя, m – месяц, у – год);
• WithPeak[target]: [w] [m] [у] – показывать в недельном, месячном и годовом графиках не только средние, но и пиковые значения (w – неделя, m – месяц, у – год);
• Supress [target]: [d] [w] [m] [у] – подавить генерацию части графиков (d – день, w – неделя, m – месяц, у – год);
• Directory [target]: имя-каталога – размещать в шипом каталоге все файлы, относящиеся к указанному target;
• Xsize [target]: число – число пикселов в графике по горизонтали;
• Ysize [target]: число – число пикселов в графике по вертикали;
• YTics[target]: число-вертикальных-делений;
• Step [target]: секунд – определяет шаг отображения в секундах;
• Options[target]: список-опций-через-запятую:
– growright – время движется вправо;
– bits – все числа умножать на 8 (измерять в битах);
– perminute – все числа умножать на 60 (измерять в единицах за минуту);
– perhour – все числа умножаются на 3600 (измерять в единицах за час);
– transparent – генерировать прозрачный фон картинки;
– gauge – интерпретировать полученные значения как абсолютные значения. Полезно для отображения таких параметров, как загрузка процессора, дискового пространства;
– unknaszero – трактовать неверные значения как 0, а не как повторение предыдущего значения;
• kilo [target]: число – что понимается под kilo. По умолчанию – 1000, можно установить 1024.
• kMG[target]: список-префиксов-множителей – какими буквами обозначать kilo, mega и т. п. По умолчанию: "К, М, G, Т, Р".
• Colours[target]:
Colouri#RRGGBB,Colouri#RRGGBB,Colouri#RRGGBB,Colouri#RRGGBB – Определение цветовой схемы, где colour – текстовое имя цвета, помещаемое в легенду графика, i = 1, 2, 3, 4 – номера цвета, RRGGBB – шестнадцатеричные значения, определяющие RGB-цвет;
• Background [target]: #RRGGBB – задает цвет фона;
• YLegend [target]: текстовая-строка – ПО умолчанию: "Bits per second";
• ShortLegend [target]: текстовая-строка – ПО умолчанию: "b/s".
Помимо MRTG, существует еще один пакет аналогичного назначения – RRDtool.
Программа RRDtool (Round Robin Database)
Этот программный пакет обеспечивает хранение и отображение данных мониторинга – загрузку каналов, температуру и любую другую зависящую от времени последовательность данных. Задумывалась как повторная, но более правильная реализация MRTG. Объем хранимых данных не увеличивается со временем – ячейки хранения используются циклически. В отличие от MRTG, программа не упаковывает старые данные самостоятельно, сбор информации и генерация HTML-кода также производятся с помощью внешних средств. Параметры передаются в командной строке или через утилиту stdin.
Подсчет трафика
Иногда необходимо подсчитать трафик по клиентам, особенно когда организуется подключение домовой локальной сети или несколько небольших фирм совместно покупают выделенную линию для подключения к провайдеру. К сожалению, стопроцентного совпадения подсчитанного трафика с данными провайдера добиться вряд ли удастся, поскольку приведенные ниже способы подсчета трафика дают разные результаты. Правда, погрешность подсчета обычно не превышает 5 %.
Есть несколько вариантов подсчета трафика:
• по данным, взятым из SNMP (OutOctets на интерфейсе);
• по данным, взятым из Cisco;
• по данным, взятым из /proc/tty/driver/serial;
• по данным, взятым из radacct (radius-accounting/ OutOctets);
• по ipchains;
• с помощью nacctd.
Ниже приведен достаточно простой способ подсчета трафика с использованием ipchains.
Смысл метода такой – ставим разрешительную цепочку для обсчитываемого IP-адреса, например:ipchains -A output -d AA.BB.CC.DD -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 mark outsize source destination ports 4 308 ACCEPT all – 0xFF 0x00 any anywhere AA.BB.CC.DD n/aИз примера видно, что клиенту ушло 308 байтов. Со временем в столбике bytes будет накапливаться статистика по байтам. Далее необходимо как-то обрабатывать эти данные и выводить себе и клиенту. Для этого можно воспользоваться программой на Perl, расположенной по адресу linux.uatel.net.ua/ipcount.perl.
Существует также пакет, предназначенный для подсчета IP-трафика через протокол SNMP. Он так и называется – "Универсальный счетчик IP-трафика через SNMP". Адрес пакета приведен в списке литературы и ссылок.
Помимо этих двух простых способов, есть большое количество программ для подсчета трафика, в частности IpTraf, useripacct, netacct, ipacct.
Ссылки
• www.linux.org.ru/books/gateway/ – Костарев Алексей Федорович. ОС Linux как мост между локальной сетью и Internet.
• lin-omts.airport.sakhalin.ru/departs/ccito/guidel.htm– как установить, настроить и запустить Web-узел UNIX не тратя лишних денег, сил и здоровья.
• people.ee.ethz.ch/~oetiker/webtools/mrtg/mrtg.html– описание MRTG.
• www.mrtg.org – официальный сайт пакета MRTG.
• rrdtool.eu.org – официальный сайт пакета rrdtool.
• www.geocities.com/SUiconValley/Pines/7895/PPP.DOC – В. Водолазкий. Установка РРР-соединения в Linux.
•– Сергей Богомолов. Мониторинг загрузки каналов (и не только) MRTG.
• www.bog.pp.ru/work/rrdtool.html – Сергей Богомолов. RRDtool – хранение и отображение данных мониторинга.
• linux.uatel.net.ua/ipcount.phtml – как оперативно подсчитать IP-трафик клиента.
• ftp://ftp.kiev.farlep.net/pub/os/linux/soft/trafficcounter-snmp – универсальный счетчик IP-трафика через SNMP.
• Соответствующие HOWTO (см. гл. 13):
– ISP-Hookup-HOWTO;
– FIREWALLINGANDPROXYSERVERHOWTO;
– THELINUXKERNELHOWTO.Глава 31 Настройка модемного соединения
Мы уже настраивали исходящее соединение, когда организовывали шлюз в Интернет для локальной сети. В этой главе мы более полно рассмотрим настройку модемного соединения. А начнем – с теории.
Протокол РРР
Последние года три протокол РРР стал стандартом de-facto для организации соединения по коммутируемым каналам и выделенным линиям. Поэтому для нормальной работы модемного соединения и извлечения из него максимальной пользы необходимо иметь понятие о протоколе РРР. Итак, РРР – это интернет-стандарт по передаче IP-пакетов по последовательным линиям. РРР поддерживает синхронные и асинхронные линии.
Общая информация
Point-to-Point Protocol (РРР, протокол «точка-точка») разработан для инкапсуляции протоколов вида «point-to-point IP». Помимо этого, целями создания протокола РРР было упрощение выдачи и управления IP-адресами, асинхронной и синхронной инкапсуляцией, смешиванием сетевых протоколов (network protocol multiplexing), конфигурированием и тестированием качества связи, обнаружением ошибок и опциями для установления таких особенностей сетевого уровня, как настройка адресов и установка сжатия данных. Для поддержки вышеперечисленных качеств РРР должен предоставлять управление по расширенному протоколу Link Control Protocol (LCP, протокол управления соединением) и семейству протоколов Network Control Protocols (NCPs, протоколы управления сетью), которые используются для установления параметров связи. На сегодняшний день РРР поддерживает не только IP, но и другие протоколы, включая IPX и DECNet.
Свойства протокола РРР
В табл. 31.1 приведены основные возможности, реализованные протоколом РРР. Однако следует учитывать, что программное обеспечение может не в полной мере воплощать эти возможности, а зачастую и привносит что-то свое, поэтому прежде чем пытаться реализовать то или иное свойство, заявленное в стандарте протокола РРР, рекомендуется предварительно ознакомиться с описанием используемых программ, особенно в гетерогенной среде.
Таблица 31.1. Основные возможности, реализуемые протоколом РРР
Как видите, возможности протокола богатые, и не удивительно, что некоторые возможности не реализованы в полной мере.
Составляющие РРР
РРР предоставляет возможность передачи датаграмм по последовательным point-to-point-линиям и имеет три составляющие:
• метод предоставления инкапсуляции датаграмм по последовательным РРР-линиям с использованием HDLC (High-Level Data Link Control, высокоуровневого управления данными соединения) – протокол для упаковки датаграмм по РРР средствами связи;
• расширенный протокол LCP для установления, конфигурирования и тестирования физического соединения;
• семейство протоколов NCP для установления и управления другими сетевыми протоколами, что позволяет протоколу РРР поддерживать одновременно несколько сетевых протоколов.
Функционирование протокола РРР
В момент установления связи через РРР-соединение РРР-демон вначале шлет пакеты LCP для конфигурирования и тестирования линии связи. После того как связь и дополнительные возможности будут установлены посредством протокола LCP, РРР-демон посылает NCP-фреймы для изменения и настройки одного или более сетевых протоколов. По окончании процесса настройки сетевые пакеты могут передаваться через установленное соединение. Оно будет оставаться активным до тех пор, пока специальные LCP– или NCP-пакеты не закроют соединение, или до тех пор, пока не произойдет какое-нибудь внешнее событие, которое приведет к потере соединения, например, сработает таймер отсутствия активности или разорвется модемное соединение.
Поддерживаемое оборудование
Протокол РРР адаптирован для работы с любым DTE/DCE интерфейсом, включая RS-232, RS-422, RS-423, CITT V.35. Помимо этих интерфейсов протокол может работать практически на любом оборудовании, единственное требование – наличие дуплексного режима.
Структура пакета протокола РРР
Протокол РРР использует принципы, терминологию и структуру пакетов, описанных в стандартах ISO, касающихся HDLC:
• ISO 3309–1984/PDAD1 "Addendum 1: Start/stop transmission";