lab.MIT.06
.pdfРисунок 3.
Таблица маршрутизации RouterA:
% netstat -nr Routing tables
Internet: |
Gateway |
Flags |
Refs |
Use |
Netif Expire |
Destination |
|||||
default |
10.0.0.1 |
UGS |
0 |
49378 |
fxp0 |
127.0.0.1 |
127.0.0.1 |
UH |
0 |
6 |
lo0 |
10.0.0/24 |
link#1 |
UC |
0 |
0 |
fxp0 |
192.168.1/24 |
link#2 |
UC |
0 |
0 |
fxp1 |
С текущей таблицей маршрутизации RouterA не сможет отправлять пакеты во внутреннюю сеть 2 (Internal Net 2). Один из способов обхода этой проблемы – добавление маршрута вручную. Следующая команда добавляет внутреннюю сеть 2 к таблице маршрутизации RouterA с 192.168.1.2 в качестве следующего узла:
# route add -net 192.168.2.0/24 192.168.1.2
Теперь RouterA сможет отправлять пакеты на любой узел в сети 192.168.2.0/24.
Предыдущий пример прекрасно подходит для настройки статического маршрута в работающей системе. Однако, проблема заключается в том, что маршрутная информация не сохранится после перезагрузки FreeBSD. Способ сохранения добавленного маршрута заключается в добавлении его в файл /etc/rc.conf:
# Добавление статического маршрута в Internal Net 2 static_routes="internalnet2" route_internalnet2="-net 192.168.2.0/24 192.168.1.2"
В переменной static_routes находятся строки, разделенные пробелами. Каждая строка означает имя маршрута. В примере выше в static_routes есть только одна строка, это internalnet2. Затем добавляется переменная route_internalnet2, куда помещены все параметры, которые необходимо передать команде route(8).
Впримере выше была использована команда:
#route add -net 192.168.2.0/24 192.168.1.2
поэтому потребуется "-net 192.168.2.0/24 192.168.1.2".
Можно добавить в static_routes более чем одну строку. Это позволит создать несколько статических маршрутов. В следующем примере показано добавление маршрутов для сетей 192.168.0.0/24 и 192.168.1.0/24:
static_routes="net1 net2"
route_net1="-net 192.168.0.0/24 192.168.0.1" route_net2="-net 192.168.1.0/24 192.168.1.1"
11
Реализация маршрутизатора (quagga) на базе ОС FreeBSD UNIX
Quagga – пакет программ, реализующих протоколы маршрутизации, основанных на TCP/IP и поддерживает такие протоколы как RIPv1, RIPv2, RIPng, OSPFv2, OSPFv3, BGP-4 и BGP-4+. Quagga также поддерживает BGP Route Reflector
и Route Server behavior. В дополнение к традиционному протоколу IPv4 Quagga также поддерживает протоколы маршрутизации для IPv6. Совместно с демоном SNMP, который поддерживает SMUX протокол, Quagga обеспечивает протокол маршрутизации MIBs.
Традиционное программное обеспечение маршрутизации сделано как одна программа, которая обеспечивает все функциональные возможности протокола маршрутизации. Quagga использует несколько другой подход. Каждый протокол маршрутизации обслуживается отдельным демоном, с последующим формированием таблиц маршрутизации. Одновременно работать могут несколько разных демонов в сообществе с управляющим демоном zebra.
ripd демон обрабатывает протокол RIP, в то время как ospfd - демон, который поддерживает OSPFv2. bgpd поддерживает протокол BGP-4. Демон zebra служит для формирования таблицы маршрутизации и перераспределения маршрутов между различными протоколами. Совсем необязательно, чтобы демоны выполнялись на одной машине. Можно даже запустить несколько одинаковых демонов на одной машине, что открывает большие перспективы. Архитектура Quagga представлена на рисунке 4.
bgpd |
|
ripd |
|
ospfd |
|
zebra |
Таблица маршрутизации ядра Unix
Рисунок 4.
Благодаря разделяемой архитектуре повышается расширяемость, модульность и ремонтопригодность. В тоже время возникает проблема большого числа файлов конфигурации. Каждый демон имеет свой собственный файл конфигурации и терминальный интерфейс. Когда конфигурируется статический маршрут, это должно быть сделано в файле конфигурации zebra, а при конфигурировании маршрутов RIP – в файле конфигурации ripd.
Установка и настройка приложения.
1.Загрузить дистрибутив quagga-0.99.12.tar.gz в каталог /usr/local/src.
2.Распаковать архив:
#tar -xvf quagga-0.99.12.tar.gz
3. Перейти в созданный каталог:
#cd quagga-0.99.12
4. Собрать и установить приложение:
#./configure --datarootdir=/usr/share
#make
#make install
5. При необходимости добавить пользователя quagga:
# adduser Username: quagga
Full name: Quagga Daemon
Uid (Leave empty for default): 101 Login group [quagga]:
Login group is quagga. Invite nobody into other groups? []: Login class [default]:
Shell (sh csh tcsh nologin) [sh]: nologin
Home directory [/home/quagga]: /usr/local/etc/quagga Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]: Use a random password? (yes/no) [no]: Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username |
: quagga |
Password |
: ***** |
Full Name |
: Quagga Daemon |
Uid |
: 101 |
Class |
: |
Groups |
: quagga |
Home |
: /usr/local/etc/quagga |
Shell |
: /usr/sbin/nologin |
12
Locked : no OK? (yes/no): yes
adduser: INFO: Successfully added (nobody) to the user database. Add another user? (yes/no): no
Goodbye!
6.При необходимости создать каталог /var/run/quagga и сделать владельцем этого каталога пользователя
quagga:
# mkdir /var/run/quagga
# chown quagga /var/run/quagga
7.Скопировать конфигурационные файлы:
#cp /usr/local/etc/zebra.conf.sample /usr/local/etc/zebra.conf
#cp /usr/local/etc/ripd.conf.sample /usr/local/etc/ripd.conf
#cp /usr/local/etc/ospfd.conf.sample /usr/local/etc/ospfd.conf
8. Отредактировать конфигурационные файлы.
9. Запустить сервисы:
#zebra -d -i /var/run/quagga/zebra.pid
#ripd -d -i /var/run/quagga/ripd.pid
#ospfd -d -i /var/run/quagga/ospfd.pid
Задание на работу
1.Установить и настроить в соответствии с вариантом маршрутизатор для протокола IPv4 на базе quagga. Маршрутизатор должен распространять информацию о непосредственно присоединенных сетях.
2.Объединить маршрутизаторы по схеме, представленной на рисунке 5. Каждый маршрутизатор может быть реализован на базе рабочей станции с одним сетевым интерфейсом, подключенным к коммутатору, которые поддерживают технологию VLAN. Для этого необходимо создать виртуальные интерфейсы, каждый из которых будет подключен к виртуальной сети с определенным VLAN ID. В таблице вариантов заданий указаны VLAN ID для первого и второго интерфейсов маршрутизатора соответственно. В качестве третьего интерфейса может использоваться реальный интерфейс узла. Для создания виртуальных интерфейсов IF1 и IF2 маршрутизатора R1 варианта №1 необходимо выполнить следующие действия:
# ifconfig vlan2 create
#ifconfig vlan2 inet 192.168.1.1/24 vlan 2 vlandev fxp0
#ifconfig vlan4 create
#ifconfig vlan4 inet 192.168.3.2/24 vlan 4 vlandev fxp0
3.Проверить правильность функционирования маршрутизаторов, включенных по схеме, представленной на рисунке 5.
4.Проверить правильность функционирования маршрутизаторов, когда один из них отключается от сети. Для этого можно выключить один из виртуальных интерфейсов на любом маршрутизаторе.
Рисунок 5.
13
Варианты заданий.
№ |
Протокол |
Маршрутизатор |
IF1 |
IF2 |
IF3 |
VLAN ID |
варианта |
||||||
1 |
RIPv1 |
R1 |
192.168.1.1/24 |
192.168.3.2/24 |
172.20.0.3/16 |
2,4 |
2 |
RIPv1 |
R2 |
192.168.2.1/24 |
192.168.1.2/24 |
172.21.0.3/16 |
3,2 |
3 |
RIPv1 |
R3 |
192.168.3.1/24 |
192.168.2.2/24 |
172.22.0.3/16 |
4,3 |
4 |
RIPv2 |
R1 |
10.18.51.65/26 |
10.18.51.194/26 |
192.168.5.3/24 |
5,7 |
5 |
RIPv2 |
R2 |
10.18.51.129/26 |
10.18.51.66/26 |
192.168.6.3/24 |
6,5 |
6 |
RIPv2 |
R3 |
10.18.51.193/26 |
10.18.51.130/26 |
192.168.7.3/24 |
7,6 |
7 |
OSPF |
R1 |
172.16.1.1/24 |
172.16.3.2/24 |
192.168.8.3/24 |
8,10 |
8 |
OSPF |
R2 |
172.16.2.1/24 |
172.16.1.2/24 |
192.168.9.3/24 |
9,8 |
9 |
OSPF |
R3 |
172.16.3.1/24 |
172.16.2.2/24 |
192.168.10.3/24 |
10,9 |
10 |
RIPv1,2 |
R1 |
172.17.0.1/16 |
172.19.0.2/16 |
192.168.11.3/24 |
11,13 |
11 |
RIPv1,2 |
R2 |
172.18.0.1/16 |
172.17.0.2/16 |
192.168.12.3/24 |
12,11 |
12 |
RIPv1,2 |
R3 |
172.19.0.1/16 |
172.18.0.2/16 |
192.168.13.3/24 |
13,12 |
13 |
OSPF |
R1 |
192.168.4.1/28 |
192.168.4.34/28 |
172.23.0.3/16 |
14,16 |
14 |
OSPF |
R2 |
192.168.4.17/28 |
192.168.4.2/28 |
172.24.0.3/16 |
15,14 |
15 |
OSPF |
R3 |
192.168.4.33/28 |
192.168.4.18/28 |
172.25.0.3/16 |
16,15 |
Контрольные вопросы
1.С какой целью в OSPF вводится понятие область сети?
2.Особенности архитектуры пакета Quagga.
3.Какие характеристики используются для оценки маршрутов в алгоритмах маршрутизации?
4.Что показывает значение переменной net.inet.ip.forwarding во FreeBSD?
5.Сущность алгоритмов маршрутизации состояния связей.
6.Какой параметр по умолчанию используется в качестве метрики в OSPF?
7.Основные отличия протоколов RIPv1 и RIPv2.
8.Какое максимальное расстояние между сетями допустимо в протоколе RIP?
9.Классификация алгоритмов маршрутизации.
10.Сущность дистанционно-векторных алгоритмов маршрутизации.
11.Какие требования предъявляются к алгоритмам динамической маршрутизации?
Литература
1.Олифер В.Г., Олифер Н.А. Компьютерные сети. Принципы, технологии, протоколы: Учебник для вузов. 3-е изд.
–СПб.: Питер, 2007. – 960 с.: ил.
2.http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/network-routing.html
3.http://www.quagga.net/docs/quagga.html
14