• BGP (Border Gateway Protocol — пограничный шлюзовый протокол) широко используется в Internet. Для поддержки данного протокола предназначен сервер bgpd
.
Общее управление работой пакета осуществляет программа zebra
. Серверы, входящие в состав пакета, используют ее для обновления таблицы маршрутизации. zebra
выполняется как сервер; обратиться к ней можно с помощью клиентской программы telnet
.
Каждый из демонов маршрутизации выполняется независимо от других. Например, если вам нужно обеспечить поддержку RIP или RIPv2, вы можете запустить только программы zebra
и ripd
. Работой каждого сервера управляет отдельный конфигурационный файл, расположенный в каталоге /etc
или /etc/zebra
. Имя файла совпадает с именем соответствующего демона. Например, содержимое файла /etc/zebra/ospfd.conf
определяет конфигурацию сервера ospfd
. Все конфигурационные файлы строятся по единому принципу. Символы !
и #
являются признаками комментариев. Опции, используемые для определения конфигурации, перечислены ниже.
• hostname
. В качестве значения данной опции задается имя узла, выполняющего функции маршрутизатора.
• password
. Программа zebra
использует пароль для управления доступом других систем и серверов. Пароль необходимо задать в каждом конфигурационном файле. Этот пароль предоставляет ограниченный доступ к серверу.
• enable password
. Данная опция позволяет задать специальный административный пароль, используемый программой zebra
. Этот пароль надо задать в, том случае, если вам необходимо изменить конфигурацию сервера.
• router
. Конфигурационные файлы серверов требуют указания протокола. Так, в файле ripd.conf
указывается router rip
, в файле ospfd.conf
— router ospf
, а в файле bgpd.conf
— router bgp
. (Номера автономных систем назначаются подобно IP-адресам. Если вы хотите применить BGP только в своей локальной сети, вам надо использовать номер автономной системы в диапазоне 64512-65535.)
В процессе работы программы zebra
вы можете изменить ее конфигурацию, обратившись к ней с помощью клиентской программы telnet
. При обращении указывается порт 2601. Пример вызова telnet
приведен ниже.
$ telnet localhost 2601
После ввода пароля надо задать одну из следующих команд: enable
(получение доступа к командам настройки), configure
(изменение конфигурации) или show
(отображение сведений о текущей конфигурации). На каждом этапе работы вы можете получить информацию о доступных командах и опциях; для этого надо ввести символ ?
. Если вы работали с маршрутизаторами Cisco, то команды Zebra знакомы вам.
Резюме
На каждом компьютере, подключенном к сети, в том числе и на рабочей станции, должна содержаться таблица маршрутизации, которая дает возможность направлять сетевой трафик по требуемому маршруту. Стандартные сетевые утилиты Linux, например ifconfig
и route
, подходят для заполнения таблицы маршрутизации на рабочей станции, сервере и даже на низкоуровневом маршрутизаторе. Если же маршрутизатор выполняет сложные действия по управлению пакетами, на компьютере должны присутствовать расширенные средства маршрутизации. Linux поддерживает подобные средства на нескольких уровнях. Поскольку за маршрутизацию отвечает ядро Linux, ряд инструментов, предназначенных для настройки маршрутизатора, требуют, чтобы некоторые опции ядра, ответственные за маршрутизацию, были активны. Популярный пакет iproute2
предоставляет инструменты маршрутизации, в частности, позволяет работать с несколькими таблицами маршрутизации или сформировать схему QoS с тем, чтобы обеспечить некоторому пользователю или сети возможность использовать определенную часть пропускной способности линии. Протоколы маршрутизации обеспечивают взаимодействие маршрутизаторов, позволяют обмениваться информацией о маршрутах и определять на основании полученных данных оптимальный путь к целевой сети.
Глава 25
Настройка средств обработки пакетов с помощью iptables
Средства ядра Linux, реализующие стек протоколов TCP/IP, получают данные от приложения, оформляют их в виде информационных пакетов и передают по сети. Из принимаемых пакетов извлекается содержащаяся в них информация и передается приложению. Считается, что ядро не должно изменять данные, за исключением тех преобразований, которые предусмотрены протоколами TCP/IP, однако это правило не всегда выполняется. Утилита iptables
позволяет сконфигурировать ядро Linux так, что оно будет фильтровать и даже преобразовывать пакеты данных на основании различных критериев. Такими критериями могут быть адрес источника и адрес назначения, указанные в пакете. Способность организовать процесс фильтрации пакетов позволяет использовать iptables
для реализации брандмауэров и преобразователей NAT (Network Address Translation — преобразование сетевых адресов). В данной главе рассматриваются создание брандмауэров и NAT-преобразователей, а также вопросы перенаправления портов и протоколирования хода обработки пакетов. Все решения, о которых идет речь в этой главе, в основном направлены на обеспечение безопасности локальных сетей или отдельных компьютеров.
Средства iptables
позволяют реализовать простые брандмауэры и другие инструменты фильтрации пакетов. Если же брандмауэр, предназначенный для защиты вашей сети, должен выполнять сложные функции, то для его создания вам понадобится дополнительная информация. Необходимые сведения вы можете получить в книге Зиглера (Ziegler) ipchains
, который использовался для создания брандмауэров до появления iptables
.
Что такое iptables
Для обработки сетевых пакетов ядро 2.4.x использует процедуру, подобную той, которая условно изображена на рис. 25.1. В начале обработки ядро выясняет, предназначен ли пакет для локального компьютера или должен быть перенаправлен на другой узел сети. В зависимости от ответа на этот вопрос, пакет передается одной из двух INPUT
или FORWARD
. Эти цепочки могут обрабатывать информацию различными способами, но по умолчанию они не изменяют данные. Цепочка INPUT
передает информацию локальным процессам. В роли telnet
и др.) или серверы (Apache, telnetd
и др.). В