View on GitHub

Network Technologies Labolatories

Practical materials for learning Network Technologies

Лабораторная работа №8 — Маршрутизация сетей с использованием RIP


Быстрый поиск


Цель лабораторной — познакомить изучающего с основами протокола маршрутизации RIP

Задачи лабораторной:


Протокол RIP

Протокол RIP (Routing Information Protocol) — Протокол маршрутизации по вектору расстояния. В рамках протокола каждый узел передаёт вектор* расстояний (в качестве метрики расстояния по умолчанию используется количество hop-ов до соответствующего абонента) своим соседям, на основании полученных от них векторов обновляет свой согласно формуле**, и в результате получает вектор расстояний до всех абонентов в сети.

* Начальный вектор: ${A:\ 1;\ B:\ 1;\ other:\ None}$, где:

** Формула обновления координат: $D_{new}(self,\ j)\ =\ min(D(self,\ j),\ D(self,\ k)\ +\ D(k,\ j))$, где:


Пример настройки RIP

Для изучения маршрутизации с помощью RIP разберём топологию с тремя маршрутизаторами.

Для работы создайте 3 клона согласно топологии сети. Для создания соединений между машинами необходимо в VirtualBox настроить сетевые интерфейсы (описание настройки подключения находится в разделе настройки сетевых подключений):


Базовая настройка виртуальных машин

📍 1. С помощью команд управления интерфейсами создайте и включите интерфейсы согласно топологии

@R1

[root@R1 ~]# ip link set eth1 up
[root@R1 ~]# ip link add dev lo0 type dummy
[root@R1 ~]# ip link set lo0 up
[root@R1 ~]#

@R2

[root@R2 ~]# ip link set eth1 up
[root@R2 ~]# ip link set eth2 up
[root@R2 ~]# ip link add dev lo0 type dummy
[root@R2 ~]# ip link set lo0 up

@R3

[root@R3 ~]# ip link set eth1 up
[root@R3 ~]# ip link add dev lo0 type dummy
[root@R3 ~]# ip link set lo up
[root@R3 ~]#

📍 2. С помощью команд настройки IP-адресов и настройки IP-Forwarding на маршрутизаторах установите адреса согласно топологии.

@R1

[root@R1 ~]# ip addr add dev eth1 10.0.12.1/24
[root@R1 ~]# ip addr add dev lo0 10.0.1.1/24
[root@R1 ~]#

@R2

[root@R2 ~]# ip addr add dev eth1 10.0.12.2/24
[root@R2 ~]# ip addr add dev eth2 10.0.23.2/24
[root@R2 ~]# ip addr add dev lo0 10.0.2.2/24
[root@R2 ~]# sysctl net.ipv4.conf.all.forwarding=1
[root@R2 ~]#

@R3

[root@R3 ~]# ip addr add dev eth1 10.0.23.3/24
[root@R3 ~]# ip addr add dev lo 10.0.3.3/24
[root@R3 ~]#

ℹ Вместе с описанием IP-адресов в таблице маршрутизации автоматически появятся записи о маршрутах в сетях описанных адресов.

📍 3. С помощью команд управления таблицами маршрутизации на маршрутизаторах выведите данные всех таблиц маршрутизации

@R1

[root@R1 ~]# ip route
10.0.1.0/24 dev lo0 proto kernel scope link src 10.0.1.1 linkdown
10.0.12.0/24 dev eth1 proto kernel scope link src 10.0.12.1
[root@R1 ~]#

@R2

[root@R2 ~]# ip route
10.0.2.0/24 dev lo0 proto kernel scope link src 10.0.2.2 linkdown
10.0.12.0/24 dev eth1 proto kernel scope link src 10.0.12.2
10.0.23.0/24 dev eth2 proto kernel scope link src 10.0.23.2
[root@R2 ~]#

@R3

[root@R3 ~]# ip route
10.0.3.0/24 dev lo0 proto kernel scope link src 10.0.3.3 linkdown
10.0.23.0/24 dev eth1 proto kernel scope link src 10.0.23.3
[root@R3 ~]#

BIRD Routing Daemon

ℹ Для работы протоколов (в частности, протоколов маршрутизации) необходимо использовать специальные программы-менеджеры, которые управляют настройками и параметрами протоколов — Routing Daemons. Для выполнения лабораторной используется демон BIRD. Для настройки демона используется конфигурационный файл /etc/bird/bird.conf специального вида.


Настройка RIP

📍 1. Опишите (или скопируйте) конфигурационный файл для R1 в соответствующем файле виртуальной машины

@R1:/etc/bird/bird.conf

router id 10.0.1.1;

protocol kernel {
   learn all;
   ipv4 { export all; };
}

protocol device {
   scan time 10;
}

protocol rip {
   interface "eth1", "lo0";
   ipv4 {
       import all;
       export where (net = 10.0.1.0/24) || (net = 10.0.12.0/24);
   };
}

ℹ Для работы демона необходимо указывать ключевые параметры конфигурации:

📍 2. Аналогично опишите (или скопируйте) конфигурационные файлы для R2 и R3

@R2:/etc/bird/bird.conf

router id 10.0.2.2;

protocol kernel {
   learn all;
   ipv4 { export all; };
}

protocol device {
   scan time 10;
}

protocol rip {
   interface "eth*";
   ipv4 {
       import where net != 10.0.1.0/24;
       export all;
   };
}

@R3:/etc/bird/bird.conf

router id 10.0.3.3;

protocol kernel {
       learn all;
       ipv4 { export all; };
}

protocol device {
   scan time 10;
}

protocol rip {
   interface "*";
   ipv4 {
       import all;
       export all;
   };
}

ℹ Заметьте, что R2 не будет принимать данные, связанные с сетью 10.0.1.0/24, и, соответственно, не будет отправлять их далее по топологии.

📍 3. С помощью команды bird запустите BIRD на каждом из устройств

ℹ C помощью команды birdc можно посмотреть параметры работы демона.

📍 4. С помощью команды birdc show route посмотрите таблицу RIP-маршрутов, передаваемых BIRD

@R1

[root@R1 ~]# bird
[root@R1 ~]# birdc show route
BIRD +detached. ready.
Table master4:
10.0.1.0/24          unicast [kernel1 12:25:54.420] * (10)
       dev lo0
10.0.12.0/24         unicast [kernel1 12:25:54.420] * (10)
       dev eth1
10.0.23.0/24         unicast [rip1 12:26:00.124] * (120/2)
       via 10.0.12.2 on eth1
10.0.2.0/24          unicast [rip1 12:26:00.124] * (120/2)
       via 10.0.12.2 on eth1
10.0.3.0/24          unicast [rip1 12:26:02.896] * (120/3)
       via 10.0.12.2 on eth1
[root@R1 ~]#

ℹ В таблице маршрутизации после запуска должны появиться новые записи о доступных маршрутах с указанием proto bird , означающим, что маршрут получен с помощью BIRD-демона (поскольку маршруты не приходят мгновенно, может потребоваться время на получение всех данных).

📍 5. С помощью команды управления таблицами маршрутизации убедитесь, что таблицы маршрутизации на устройствах изменились в соответствии с данными от BIRD

@R1

[root@R1 ~]# ip route
10.0.1.0/24 dev lo0 proto kernel scope link src 10.0.1.1 linkdown
10.0.2.0/24 via 10.0.12.2 dev eth1 proto bird metric 32
10.0.3.0/24 via 10.0.12.2 dev eth1 proto bird metric 32
10.0.12.0/24 dev eth1 proto kernel scope link src 10.0.12.1
10.0.23.0/24 via 10.0.12.2 dev eth1 proto bird metric 32
[root@R1 ~]#

@R2

[root@R2 ~]# ip route
10.0.2.0/24 dev lo0 proto kernel scope link src 10.0.2.2 linkdown
10.0.3.0/24 via 10.0.23.3 dev eth2 proto bird metric 32
10.0.12.0/24 dev eth1 proto kernel scope link src 10.0.12.2
10.0.12.0/24 via 10.0.12.1 dev eth1 proto bird metric 32
10.0.23.0/24 dev eth2 proto kernel scope link src 10.0.23.2
[root@R2 ~]#

@R3

[root@R3 ~]# ip route
10.0.2.0/24 via 10.0.23.2 dev eth1 proto bird metric 32
10.0.3.0/24 dev lo0 proto kernel scope link src 10.0.3.3 linkdown
10.0.12.0/24 via 10.0.23.2 dev eth1 proto bird metric 32
10.0.23.0/24 dev eth1 proto kernel scope link src 10.0.23.3
10.0.23.0/24 via 10.0.23.2 dev eth1 proto bird metric 32
[root@R3 ~]#

ℹ Заметьте, что информация о маршруте в сеть 10.0.1.0/24 не передалась на R2 и R3, поскольку не была указана, как допустимая к передаче

📍 6. С помощью команды ping -c3 <dstIP> проверьте достижимость отдельных сетей с разных устройств

@R1

[root@R1 ~]# ping -c3 10.0.23.3
PING 10.0.23.3 (10.0.23.3) 56(84) bytes of data.
64 bytes from 10.0.23.3: icmp_seq=1 ttl=63 time=1.00 ms
64 bytes from 10.0.23.3: icmp_seq=2 ttl=63 time=0.872 ms
64 bytes from 10.0.23.3: icmp_seq=3 ttl=63 time=0.854 ms

--- 10.0.23.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 0.854/0.908/1.000/0.065 ms
[root@R1 ~]# ping -c3 10.0.3.3
PING 10.0.3.3 (10.0.3.3) 56(84) bytes of data.
64 bytes from 10.0.3.3: icmp_seq=1 ttl=63 time=0.903 ms
64 bytes from 10.0.3.3: icmp_seq=2 ttl=63 time=0.838 ms
64 bytes from 10.0.3.3: icmp_seq=3 ttl=63 time=0.990 ms

--- 10.0.3.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2055ms
rtt min/avg/max/mdev = 0.838/0.910/0.990/0.062 ms
[root@R1 ~]#

@R3

[root@R3 ~]# ping -c3 10.0.1.1
ping: connect: Network is unreachable
[root@R3 ~]# ping -c3 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.
64 bytes from 10.0.2.2: icmp_seq=1 ttl=64 time=0.591 ms
64 bytes from 10.0.2.2: icmp_seq=2 ttl=64 time=0.448 ms
64 bytes from 10.0.2.2: icmp_seq=3 ttl=64 time=0.567 ms

--- 10.0.2.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2060ms
rtt min/avg/max/mdev = 0.448/0.535/0.591/0.062 ms
[root@R3 ~]#

Самостоятельная работа

Для работы необходимо 5 клонов согласно топологии сети. Для создания соединений между машинами необходимо в VirtualBox настроить сетевые интерфейсы (описание настройки подключения находится в разделе настройки сетевых подключений):

Варианты заданий

Группа Задание
1 1. Создать топологию, указанную на рисунке
2. Убедиться, что PC2 не пингуется с PC1
3. Настроить RIP между R1 и R3
4. Убедиться, что PC2 пингуется с PC1 и наоборот
5. Выполнить traceroute с PC1 на PC2
2 1. Создать топологию, указанную на
рисунке
2. Убедиться, что PC2 не пингуется с PC1
3. Настроить RIP так, чтобы PC2 не мог бы пинговать R2, а PC1 мог бы
4. Выполнить traceroute с PC1 и PC2 на R2
3 1. Создать топологию, указанную на рисунке
2. Убедиться, что PC2 не пингуется с PC1
3. Настроить RIP так, чтобы PC1 не мог бы пинговать R2, а PC2 мог бы
4. Выполнить traceroute с PC1 и PC2 на
R2
4 1. Создать топологию, указанную на рисунке
2. Убедиться, что PC2 не пингуется с PC1
3. Настроить RIP так, чтобы PC1 не мог бы пинговать R2, но мог бы пинговать R3
4. Выполнить traceroute с PC1 на R2 и R3
5 1. Создать топологию, указанную на рисунке
2. Убедиться, что PC2 не пингуется с PC1
3. Настроить RIP так, чтобы PC2 не мог бы пинговать R2 , но мог бы пинговать R1
4. Выполнить traceroute с PC2 на R2 и R1
6 1. Создать топологию, указанную на рисунке
2. Убедиться, что PC2 не пингуется с PC1
3. Настроить RIP так, чтобы PC1 не мог бы пинговать R2 , но мог бы пинговать PC2
4. Выполнить traceroute с PC1 на PC2 и R2
7 1. Создать топологию, указанную на рисунке
2. Убедиться, что PC2 не пингуется с PC1
3. Настроить RIP так, чтобы PC2 не мог бы пинговать R2 , но мог бы пинговать PC1
4. Выполнить traceroute с PC2 на PC1 и R2
8 1. Создать топологию, указанную на рисунке
2. Убедиться, что PC2 не пингуется с PC1
3. Настроить RIP так, чтобы R2 мог бы пинговать PC2 и PC1
4. Выполнить traceroute с R2 на PC2 и PC1
9 1. Создать топологию, указанную на рисунке
2. Убедиться, что PC2 не пингуется с PC1
3. Настроить RIP так, чтобы R2 мог бы пинговать PC2 , но не мог бы пинговать PC1
4. Выполнить traceroute с R2 на PC2 и PC1
10 1. Создать топологию, указанную на рисунке
2. Убедиться, что PC2 не пингуется с PC1
3. Настроить RIP так, чтобы R2 мог бы пинговать PC1, но не мог бы пинговать PC2
4. Выполнить traceroute с R2 на PC2 и PC1

📍 Запустить отчёты на каждой машине и выполнить соответствующие команды:

📍 Полученные отчёты report.08.pc1, report.08.pc2, report.08.r1, report.08.r2, report.08.r3 перенести из виртуальной машины и прислать преподавателю с подписью выполненного варианта.