Linux Advanced Routing & Traffic Control HOWTO
Шрифт:
Предоставляемый Makefile, облегчит вам преобразование документа в форматы postscript, dvi, pdf, html и простой текст. Вам может потребоваться установить у себя docbook, docbook-utils, ghostscript и tetex, чтобы иметь возможность преобразования документа во все вышеперечисленные форматы.
Не тратьте ваши силы на файл 2.4routing.sgml — это устаревшая версия! Свежая версия находится в файле lartc.db.
2.6. Список рассылки
Поток писем к авторам
Там же вы найдете архив, который, в свое время, задумывался как, своего рода, база знаний. Авторы документа предпочли бы отвечать на вопросы, не задававшиеся ранее, поэтому, пожалуйста, прежде чем послать свой вопрос — загляните сначала в архив, возможно там вы найдете нужный ответ.
2.7. Структура документа.
В самом начале находятся разделы, представляющие наибольший интерес, но, к сожалению, менее точные и менее полные.
Маршрутизация и фильтрация — суть разные понятия. Фильтрация достаточно хорошо описана в HOWTO от Rusty Rassel, которые вы найдете по адресу http://netfilter.samba.org/unreliable-guides/.
Наше внимание главным образом будет сконцентрировано на связке netfilter – iproute2.
Глава 3. Введение в iproute2
3.1. Почему iproute2?
Большинство дистрибутивов Linux, как и большинство ОС UNIX, в настоящее время используют довольно древние утилиты arp, ifconfig и route. Пока что эти инструменты работают достаточно адекватно, но иногда, на ядрах Linux версии 2.2 и выше, они могут вести себя довольно неожиданно.
Сетевая подсистема, в ядрах 2.2 и выше, была полностью переписана. Новый сетевой код дал увеличение производительности и более высокие эксплуатационные характеристики, что делает Linux еще более привлекательным на рынке операционных систем.
Фактически, реализация сетевой подсистемы в Linux, выполняющая классификацию, маршрутизацию и фильтрацию, оказалась даже более полной, чем в специализированных маршрутизаторах, межсетевых экранах и других устройствах управления трафиком.
По мере появления новых разработок, они "наслаивались" поверх существующих реализаций в существующих операционных системах. Это постоянное наслаивание привело к тому, что код, решающий задачи управления сетевым трафиком, временами проявлял весьма странное поведение.
Эта, заново переписанная, реализация сетевой подсистемы позволила достичь таких характеристик, которые раньше были просто недоступны.
3.2. Краткий обзор iproute2
Linux обладает довольно сложной системой управления пропускной способностью, названной Traffic Control (Управление Трафиком). Она поддерживает различные методы классификации, деления по приоритетам, совместного использования, и ограничения как входящего, так и исходящего трафика.
Мы начнем обсуждение проблемы с краткого обзора iproute2 и ее возможностей.
3.3. Необходимые условия
Вам следует установить необходимый инструментарий — набор утилит командной строки. Этот пакет называется iproute,
по крайней мере в Red Hat и Debian. Если в вашем дистрибутиве его нет, то пакет можно скачать по адресу: ftp://ftp.inr.ac.ru/ip-routing/iproute2-2.2.4-now-ss??????.tar.gz.Можете попробовать взять самую последнюю версию.
Отдельные утилиты пакета требуют, чтобы в ядре были разрешены некоторые опции. Следует отметить, что все дистрибутивы Red Hat, до версии 6.2 включительно, поставляются с ядром, в котором по-умолчанию большинство необходимых опций отключено.
В Red Hat 7.2 такое положение вещей исправлено.
Кроме того, в ядре должна быть включена поддержка netlink, этого требует iproute2.
3.4. Текущая конфигурация
Для вас может оказаться сюрпризом, но iproute2 уже сконфигурирована! Существующие команды ifconfig и route уже используют расширенные системные вызовы, но главным образом с настройками, заданным по-умолчанию.
Утилита ip является основной в пакете. Попробуем с ее помощью исследовать имеющиеся в системе сетевые интерфейсы.
3.4.1. Просмотр списка сетевых интерфейсов с помощью утилиты ip
Здесь приведен результат работы команды ip link list на моем домашнем маршрутизаторе (с "поднятым" NAT), у вас он может несколько отличаться. Я поясню часть того, что вы видите, но не все, а только то, что нас интересует в данный момент.
Первым в списке находится локальный (loopback) интерфейс. В принципе, при крнфигурировании ядра, можно отключить поддержку этого интерфейса, но я бы не советовал этого делать. Размер максимального блока передачи данных (MTU — Maximum Transfer Unit) для этого интерфейса составляет 3924 октета, и для него отсутствует очередь, поскольку он не соответствует никакому физическому устройству и существует только в "воображении" ядра.
Я пропущу фиктивный (dummy) интерфейс, так как он может отсутствовать на вашем компьютере. Дальше у меня идут два физических сетевых интерфейса, один — со стороны модема, другой — обслуживает мою домашнюю локальную сеть. И наконец последним в списке стоит интерфейс ppp0.