Uploaded by Victor Grigoryev

vnl

advertisement
Министерство образования и науки, молодежи и спорта Украины
Днепропетровский национальный университет
им. Олеся Гончара
В.М. Григорьев
СЕТЕВЫЕ ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ.
Лабораторный практикум и курсовое проектирование
Днепропетровск
2012
grigoryev.victor@gmail.com http://vmg.pp.ua
УДК 681.3.07
Г83
Григорьев, В.М. Сетевые информационные технологии [Текст]: Лабораторный
практикум и курсовое проектирование / В.М. Григорьев.─ Д.: ДНУ, 2012. – 241 с.
Рассмотрено использование технологий виртуализации для практической работы с
компьютерными сетями. Показано, что лаборатория для настройки компьютерных
сетей может быть создана с помощью виртуальных машин Qemu в оболочке GNS3
с использованием операционной системы RouterOS фирмы Mikrotik. Виртуальная
учебная лаборатория позволяет вместо реальной аппаратуры применять
соединенные между собой виртуальные машины, в которых запущены
операционные системы сетевых устройств.
Рассмотрены применения
предложенного подхода для практической работы со следующими сетевыми
технологиями: маршрутизация, беспроводные мосты, виртуальные частные сети
уровня 2 и 3 на основе EoIP, MPLS, IPsec, OpenVPN и производных от PPP
протоколов.
Для студентов специальности "Компьютерные системы и сети" ДНУ.
Утверждено Учёным советом факультета физики,
компьютерних систем, протокол № 19 от 10.09.2012 г.
электроники
и
Учебное издание
Виктор Михайлович Григорьев
. Сетевые информационные технологии. Лабораторный практикум и курсовое
проектирование
____________________________________________________________
Формат 60х84/16. Бумага типографская. Печать плоская. Тираж 100 экз.
____________________________________________________________
ДНУ, просп. Гагарина, 72, м. Днепропетровск, 49010.
© Григорьев В.М. 2012
2
grigoryev.victor@gmail.com http://vmg.pp.ua
Оглавление
Предисловие 7
1. Виртуальная лаборатория по компьютерным сетям
2. Работа с Mikrotik RouterOS в Qemu и GNS3
3. Настройка домашнего компьютера
4. Настройка типовой сети
5. Мосты. EoIP - Ethernet через IP . VPN уровня 2
6. Беспроводный мост
7. Маршрутизация
8. Балансировка нагрузки
9. Производные от PPP протоколы и OpenVPN
10. Построение VPN второго уровня c помощью
производных от PPP протоколов и OpenVPN
11. Построение VPN третьего уровня c помощью
производных от PPP протоколов и OpenVPN
12. PPPoE
13. IPsec VPN
14. MPLS
15. MPLS VPN уровня 2 и 3
16. VPN-клиенты Windows 7 для VPN-серверов Mikrotik
17. Курсовой проект
9
21
39
52
62
75
85
100
104
130
147
155
160
175
187
213
226
СОДЕРЖАНИЕ
Предисловие
1. Виртуальная лаборатория по компьютерным сетям
Выбор платформы виртуальной лаборатории
Удалённый доступ к Ubuntu
Место лаборатории в сети университета
Подключение к лаборатории с помощью протокола Openvpn
Подключение к лаборатории labs.mikrotik.com.ua из кафедры
Обмен файлами
Способы выполнения лабораторных работ и курсовой по сетям
2. Работа с Mikrotik RouterOS в Qemu и GNS3
Начальная подготовка Ubuntu
Установка и работа с операционной системы RouterOS
Установка и настройка GNS3
Первая топология
GNS автоматически генерирует команды для Qemu
Шаблон для топологий
Работа с RouterOS из командной строки
Импорт и экспорт топологий
3
7
9
9
13
15
17
20
19
21
21
21
26
28
31
32
35
36
grigoryev.victor@gmail.com http://vmg.pp.ua
О персональных компьютерах и свичах в топологиях
3. Настройка домашнего компьютера 13
Подключение с помощью протокола Openvpn
Работа c GNS3 в Windows
Удалённый доступ к Ubuntu
Установка Ubuntu
Установка Qemu
Установка GNS3
Установка tap-интерфейсов
Установка Winbox
Подключение из домашнего Ubuntu по Openvpn и удаленный доступ
Доступ к удалённому маршрутизатору из домашнего компьютера
4. Настройка типовой сети
DNS
DHCP
NAT
ARP
Фаервол (Firewall)
Ограничение скорости
Web-прокси
HotSpot
5. Мосты. EoIP - Ethernet через IP . VPN уровня 2
Мосты
EoIP
VPN уровня 2 через NAT
6. Беспроводный мост
Netinstall
7. Маршрутизация
Статическая маршрутизация
Маска /32
Динамическая маршрутизация
RIP
OSPF
Перераспределение маршрутов и BGP
8. Балансировка нагрузки
Монопольный канал
Равномерное распределение
9. Производные от PPP протоколы и OpenVPN
PPP
Протоколы PPTP, SSTP, L2TP, OpenVPN и PPPoE
Протоколы системных событий
Настройка PPP
Настройка PPTP
Настройка L2TP
RSA-сертификаты
4
37
39
39
40
41
42
44
46
46
47
48
49
52
55
56
58
59
60
61
61
64
66
66
69
73
75
83
85
85
89
91
92
95
96
100
100
103
104
104
106
108
108
111
113
114
grigoryev.victor@gmail.com http://vmg.pp.ua
Настройка SSTP
Настройка OpenVPN
Особенности работы из командной строки
10. Построение VPN второго уровня c помощью
производных от PPP протоколов и OpenVPN
1. Настройка с помошью Winbox
1.1 PPP
1.2 PPTP
1.3 L2TP
1.4 SSTP
1.5 OpenVPN
2. Настройка с помощью командной строки
2.1 PPP
2.2 PPTP
2.3 L2TP
2.4 SSTP
2.5 OpenVPN
Распределённый мост
Использование профилей пользователя
11. Построение VPN третьего уровня c помощью
производных от PPP протоколов и OpenVPN
Маршрутизация RIP
Маршрутизация OSPF
VPN уровня 3 через NAT
Протоколы GRE и IPIP
12. PPPoE
13. IPsec VPN
Состав IPsec
SA (Security Association)
Политики IPsec
Фазы IKE
`
Конфигурация IPsec в Mikrotik RouterOS
Шифрация соединения точка-точка
Организация VPN типа сайт-сайт с помощью IPsec
14. MPLS
LDP
Фильтрация меток
RSVP TE
15. MPLS VPN уровня 2 и 3
1. Организация MPLS VPN уровня 2 с помощью VPLS
1. Организация MPLS VPN уровня 2 с помощью VPLS
5
116
119
121
130
131
133
133
134
137
137
138
140
140
141
141
142
143
144
147
148
149
151
152
155
160
160
161
162
162
163
166
169
175
176
182
182
187
187
grigoryev.victor@gmail.com http://vmg.pp.ua
1.1. Настройка LDP VPLS
1.1.1. LDP VPLS с организацией LSP с помощью LDP
1.1.2. LDP VPLS с организацией LSP с помощью RSVP
1.2. Настройка BGP VPLS
1.2.1. Конфигурирование сессий BGP. Отражатель маршрутов
1.2.2. BGP VPLS с организацией LSP с помощью RSVP
1.2.3. BGP VPLS с организацией LSP с помощью LDP
2. MPLS VPN 3-го уровня
2.1 MPLS VPN 3-го уровня c организацией LSP с помощью LDP
2.2 MPLS VPN 3-го уровня c организацией LSP с помощью RSVP
16. VPN-клиенты Windows 7 для VPN-серверов Mikrotik
Соединение SSTP-клиента Windows7 с SSTP-сервером Mikrotik
Соединение L2TP IPsec-клиента Windows7 с L2TP -сервером Mikrotik
17. Курсовой проект
Постановка задачи
Пример выполнения
Быстрый старт
Требование к отчёту и порядок сдачи проекта
6
189
189
193
196
197
198
202
204
206
210
213
213
218
226
226
229
241
241
grigoryev.victor@gmail.com http://vmg.pp.ua
Предисловие
Издание охватывает некоторые разделы практической работы с
компьютерными сетями, работающих под управлением протоколов Ethernet и
TCP/IP. Все рассмотренные сетевые устройства изготовлены фирмой Mikrotik и
работают под управлением сетевой операционной системы RouterOS.
Показано, что лаборатория для настройки компьютерных сетей может быть
создана с помощью виртуальных машин Qemu в оболочке GNS3 с использованием
операционной системы RouterOS. Виртуальная лаборатория позволяет вместо
реальной аппаратуры применять соединенные между собой виртуальные машины,
в которых запущены операционные системы сетевых устройств.
Первый раздел посвящен детальному описанию виртуальной учебной лаборатория по компьютерным сетям. Виртуальные машины лаборатории работают под
управлением операционной системы Ubuntu Linux, которая, в свою очередь, работает в виртуальной машине Hyper-V в Windows. Показано место лаборатории в
сети университета.
Во втором разделе рассмотрена установка и работа с операционной системой
Routeros. Изучаются команды этой системы для налаживания компьютерной сети.
Показаны настройки оболочки GNS3.
Описание настройки домашнего компьютера приведены в третьем разделе.
Показано как подключиться к виртуальной учебной лаборатории в университете
через Интернет с помощью OpenVPN и клиента удаленного рабочего стола Ubuntu
фирмы Nomachine.
В четвертом разделе показана настройка типовой сети, которая включает в
себя конфигурацию протоколов DHCP, DNS, NAT, ARP, брандмауэра, ограничения
скорости, Веб-прокси и Hotspot.
В пятом разделе рассмотрены Ethernet-мосты. Освещено построение виртуальных частных сетей второго уровня на основе протокола EoIP (Ethernet over IP Ethernet через IP).
В шестой главе студенты строят беспроводной мост на реальной аппаратуре
фирмы Mikrotik - устройствах rb750 и rb751u-2hnd. Для организации беспроводного моста используется технология WDS (Wireless distributed system - беспроводная
распределенная система). Показано как переставить операционную систему маршрутизатора с помощью утилиты Netinstall.
Статической и динамической маршрутизации посвящен раздел семь. Рассмотреть протоколы маршрутизации RIP, OSPF и BGP. Уделено внимание адресам с
маской / 32.
В восьмой главе рассмотрены 2 варианта балансировки нагрузки: монопольный канал и равномерное распределение.
Разделы 9, 10 и 11 посвящены построение VPN второго и третьего уровня c
помощью производных от PPP протоколов и OpenVPN.
Конфигурация протокол PPPoE изучена в разделе 12.
В разделе 13 рассмотрено использование протокола IPsec для создания VPN
типа сайт-сайт.
Раздел 14 посвящен организации MPLS-сетей с помощью протоколов LDP и
RSVP
7
grigoryev.victor@gmail.com http://vmg.pp.ua
Раздел 15 посвящен настройке MPLS VPN второго и третьего уровня с помощью протоколов BGP, LDP и RSVP и технологий VPLS и VRF.
Соединения SSTP и L2TP IPsec клиентов Windows7 с SSTP и L2TP серверами
Mikrotik рассмотрены в разделе 16.
В итоговом 17 разделе приведен курсовой проект, служащий для закрепоения
знаний, изложенных в данной публикации.
Основой материала издания послужило содержимое сайта wiki.mikrotik.com
8
grigoryev.victor@gmail.com http://vmg.pp.ua
1. Виртуальная лаборатория по компьютерным сетям
Выбор платформы виртуальной лаборатории
Место лаборатории в сети университета
Подключение к лаборатории с помощью протокола Openvpn
Обмен файлами
Удалённый доступ к Ubuntu
Способы выполнения лабораторных работ и курсовой по сетям
9
13
16
18
18
19
Выбор платформы виртуальной лаборатории
Сетевые маршрутизаторы работают под управлением операционных систем. В
ряде случаев эти операционные системы можно запустить внутри виртуальных
машин. Сетевые устройства в сети соединены каналами связи. Для организации
виртуальной сетевой лаборатории надо соединить между собой виртуальные
машины, в которых запущены операционные системы сетевых устройств.
На лабораторном занятии в такой виртуальной лаборатории по компьютерным
сетям обычно присутствует десяток студентов, и каждый из них изучает сетевую
топологию, состоящую из нескольких сетевых устройств. Одновременно работают
десятки виртуальных машин. Возникает задача такого выбора операционной
системы сетевого устройства и виртуальной машины, чтобы обеспечить студентам
комфортную одновременную работу при условии ограниченности ресурсов хосткомпьютера.
Идея виртуальных сетевых лабораторий не нова, и для их реализации
существуют специализированные решения. Для моделирования устройств фирмы
Cisco, работающих под управлением операционной системы IOS, используются
программы Cisco Packet Tracer и Boson NetSim, имеющие удобный графический
интерфейс, позволяющий быстро создавать достаточно сложные сетевые
топологии. Однако встроенная в них урезанная версия IOS позволяет изучать лишь
сетевые технологии начального уровня.
Больший интерес представляет использование операционных систем реальных
сетевых устройств. Возникают следующие вопросы, касающиеся выбора
операционной системы устройства и виртуальной машины для запуска этой
операционной системы: сколько ресурсов хост-машины потребляет виртуальная
машина; каково время запуска операционной системы внутри виртуальной
машины; какие средства предоставляют виртуальные машины для соединения
между собой запущенных внутри них операционных систем и как быстро создать
сложную сетевую топологию из десятков устройств.
Для моделирования сетевых топологий широко используется контейнер
виртуальных машин GNS3. Для создания сетевых топологий в GNS3 используется
технология Drug-and-Drop: зацепил устройство мышью и перетащил его на рабочее
поле. GNS3 поддерживает три виртуальные машины: Dynamips, VirtualBox и
Qemu. Выбор именно этих машин для включения в GNS3 обусловлен наличием в
их составе развитых средств для соединения между собой операционных систем (в
VirtualBox - с помощью API).
9
grigoryev.victor@gmail.com http://vmg.pp.ua
Виртуальная машина Dynamips позволяет запустить внутри себя реальную
IOS для очень широкого класса устройств Cisco. Однако при работе с Dynamips
следует подбирать параметры для уменьшения нагрузки на центральный
процессор. Без должных настроек Dynamips использует все ресурсы компьютера
уже для топологии из трёх маршрутизаторов.
Под Qemu работает весьма широкий класс сетевых, встроенных и мобильных
операционных систем: Juniper JunOS, Vyatta, Openwrt, Google Android, Mikrotik
RouterOs, файерволы Cisco IDS, и др. Наш выбор был сделан в пользу Qemu в
составе GNN3. Под Qemu работает весьма широкий класс сетевых, встроенных и
мобильных операционных систем (ОС): Juniper JunOS, Vyatta, Openwrt, Google
Android, Mikrotik RouterOs, файерволы Cisco, и др. VirtualBox также поддерживает
множество ОС, но в составе GNN3 требует настройки отдельной виртуальной
машины для каждого устройства сетевой топологии. Qemu для всех устройств с
одинаковой ОС использует единые настройки.
Наш выбор был сделан в пользу Qemu в составе GNN3.
Нельзя не упомянуть виртуальную машину IOU для Cisco IOS. В ней можно
запустить пару операционных систем Cisco IOS с весьма мощной
функциональностью, и она не требует такой настройки, как
Dynamips. К
сожалению, IOU не обладает графическим интерфейсом.
Следовало определиться, в чём работать: в Windows или в Linux. GNS3 и
Qemu задуманы, сделаны и развиваются в Linux. Qemu под Linux поддерживает
аппаратную виртуализацию KVM. Qemu под Windows не поддерживает KVM и
при запуске нескольких экземпляров Qemu используется только одно ядро
центрального процессора, что существенно замедляет работу с большими
сетевыми топологиями.
Возникает вопрос выбора дистрибутива Linux. GNS3 написан на Python и
требует библиотеки Qt4. После ряда экспериментов с различными дистрибутивами
Linux по установке GNS3 из исходных кодов выбор пал на настольную версию
Ubuntu.
Определим операционную систему сетевого устройства для запуска под
Qemu. Если потребовать, чтобы устройство поддерживало сетевую технологию
MPLS, то выбор сразу сократится: это либо операционная система JunOS фирмы
Juniper, либо RouterOS фирмы Mikrotik.
По объёму потребляемых ресурсов JunOS существенно превосходит RouterOS.
Например, на компьютере с двуядерным процессором Intel Core2 6600 с частотой
2.4 ГГц время загрузки RouterOS версии 5.20 в Qemu под Ubuntu составляет
несколько секунд (см. ниже), а JunOS версии Olive12.1R1.9 грузится 75 секyнд.
RouterOS требует минимум 64 Мб памяти,
JunOS — 512 Мб. Образ диска
RouterOS - 60 Мб, JunOS - 600 Мб.
В Linux имеется программное решение KVM (Kernel-based Virtual Machine),
поддерживающее
аппаратную
виртуализацию
на
базе процессоров
Intel VT либо AMD SVM. Сам по себе KVM не выполняет эмуляции и
используется совместно с виртуальными машинами. Мы будем использовать KVM
без оптимизатора памяти ksmd.
10
grigoryev.victor@gmail.com http://vmg.pp.ua
Рассмотрим влияние KVM на время загрузки в Qemu в GNS3 нескольких
экземпляров RouterOS версии 5.20 с памятью 64 Мб на компьютере с двуядерным
процессором 2.4 ГГц и 4Гб памяти под управлением Ubuntu (табл. 1.1). Графики
зависимости времени загрузки от числа экземпляров RouterOS приведен ра рис.1.1.
Время загрузки нескольких экземпляров RouterOS в GNS3 в Ubuntu . Табл. 1.1
Кол-во эк- Qemu без KVM
земпляров
RouterOS N Общее время Время загрузки
загрузки T
одного экземсек.
пляра N/T сек.
16
82
5.125
32
166
5.1875
48
260
5.416667
64
470
7.34375
80
Недостаточно
памяти
Qemu с KVM
Общее время
загрузки T
сек.
30
62
100
140
180
Без KVM
С KVM
500
Время загрузки
Время загрузки
одного экземпляра N/T сек.
1.875
1.9375
2.083333
2.1875
2.25
470
400
300
260
200
82
100
0
166
30
16
180
100
140
62
32
48
64
80
Число экземпляров
Рис. 1.1. Время загрузки нескольких экземпляров RouterOS в GNS3 в Ubuntu (2 ядра) .
Из табл. 1.1 видим, что KVM уменьшает время загрузки RouterOS более, чем
в два с половиной раза и это время составляет около двух секунд. Для обычного
бытового компьютера имеем приемлемое время загрузки 80-ти экземпляров
RouterOS равное 3 минутам.
Загрузим одновременно 32 экземпляра RouterOS (62с). Не останавливая
загруженные RouterOS, запустим в новом GNS3 одновременно ещё 32 экземпляра
RouterOS. На это уйдёт 75с. Итого 137с. , что сравнимо с временем
одновременного старта 64-х RouterOS (140с., согласно Табл. 1.1).
Число одновременно работающих экземпляров RouterOs
под Qemu
определяется свободной памятью хост-машины Ubuntu. Анализ показал, что
каждый экземпляр RouterOS с памятью 64 Мб, запущенный в Qemu с KVM,
требует у Ubuntu 32 Мб памяти, а каждый экземпляр RouterOS с памятью 128 Мб
запущенный в Qemu с KVM, требует у Ubuntu 54 Мб памяти.
11
grigoryev.victor@gmail.com http://vmg.pp.ua
Операционную систему Ubuntu можно запускать также под управлением
виртуальной машины, например HYPER-V фирмы Microsoft. Qemu в Ubuntu под
управлением HYPER-V работает несколько медленнее, чем Qemu в Ubuntu на
реальном компьютере. Это обусловлено, помимо прочего, и тем, что KVM не
работает на виртуальной аппаратуре HYPER-V.
Хост-компьютер для HYPER-V имеет 4-ядерный процессор Intel Core i7 950
частотой 3066 МГц и 24Гб памяти. В HYPER-V запущена система Ubuntu c 12Гб
памяти и 4-мя виртуальными ядрами. Рассмотрим время загрузки в Qemu в GNS3
нескольких экземпляров RouterOS версии 5.20 с памятью 64 Мб на виртуальной
Ubuntu (табл. 1.2). Графики зависимости времени загрузки в зависимости от числа
экземпляров RouterOS приведен на рис.1.2.
Время загрузки нескольких экземпляров RouterOS в Ubuntu под HYPER-V . Табл. 1.1
Кол-во экземпляров
RouterOS N
Общее время загрузки T сек.
16
32
48
64
80
39
75
118
155
195
Время загрузки одного экземпляра N/T сек.
2.4375
2.34375
2.458333
2.421875
2.4375
Время загрузки
250
200
195
150
118
100
50
155
75
39
0
16
32
48
64
80
Число экземпляров
Рис. 1.3. Время загрузки нескольких экземпляров RouterOS в GNS3 в Ubuntu под
HYPER-V (4 ядра).
Из табл. 1.2 видим, что время загрузки RouterOS под Qemu в Ubuntu под
HYPER-V составляет около двух с половиной секунд, что сравнимо по времени с
бытовым компьютером. Для виртуального компьютера имеем приемлемое время
загрузки 80-ти экземпляров RouterOS равное 195 секундам.
Анализ показал, что каждый экземпляр RouterOS с памятью 64 Мб,
запущенный в Qemu, требует у Ubuntu под HYPER-V 57 Мб памяти, а каждый
экземпляр RouterOS с памятью 128 Мб запущенный в Qemu, требует у Ubuntu
HYPER-V 79 Мб памяти.
То есть RouterOS в Qemu с KVM потребляет
приблизительно вдвое меньше памяти, чем RouterOS в Qemu без KVM
12
grigoryev.victor@gmail.com http://vmg.pp.ua
Многоядерность процессоров распараллеливает загрузку нескольких
экземпляров RouterOs. Так время загрузки одного экземпляров RouterOS на
бытовом 2-х ядерном компьютером без поддержки KVM приблизительно в два
раза больше, чем на виртуальном 4-х ядерном процессоре HYPER-V (см.
таблицы). То есть реальное ядра бытового компьютера имеют приблизительно
одинаковую мощность по сравнению с ядром виртуального процессора HYPER-V.
RouterOS под виртуальной машиной Qemu в составе GNS3 под управлением
Ubuntu оказалась лучшим выбором для организации виртуальной лаборатории.
Операционная система RouterOs поддерживает практически все современные
сетевые технологии. Это позволило разработать лабораторный практикум для
изучения следующих сетевых технологий: Ethernet-мосты, DHCP, балансировка
нагрузки, EoIP, NAT, маршрутизация RIP, OSPF и BGP, перераспределение
маршрутов, PPP, PPTP, SSTP, L2TP, OpenVPN, виртуальные частные сети 2-го и 3го уровня, IPSec, MPLS, VPLS, VRF. Представляется нереальной комплектация
учебной лаборатории вуза реальным сетевым оборудованием, позволяющим
практически освоить перечисленные сетевые технологии. С
лабораторным
практикумом можно ознакомиться на сайте кафедры http://eom.dp.ua.
Образ установочного CD операционной системы RouterOs находится на сайте
фирмы Mikrotik в свободном доступе, но имеет одно ограничение – время
непрерывной работы составляет одни сутки. Этих суток хватает пользователю на
несколько лабораторных занятий. По истечении срока пользователи должны
сохранить настройки операционных систем RouterOs и сетевую топологию
выполняемой лабораторной работы, запустить сохранённую топологию без
настроек и восстановить настройки RouterOs. Написаны скрипты, которые
соединяются с помощью протокола ssh с устройствами в топологии, посылают в
устройства команды для создания или восстановления резервных копий и
загружают или выгружают эти копии. Переустанавливать при этом операционную
систему RouterOs не надо. Это объясняется тем, что при первом старте каждого
устройства в топологии GNS3 создаёт для него разностную копию образа диска
заранее установленной операционной системы и не изменяет оригинал.
Удалённый доступ к Ubuntu
Для
работы
можно
воспользоваться
лабораторией
по
адресу
labs.mikrotik.com.ua, хостинг для которой любезно предоставил координатор
Mikrotik по Украине Лукин Дмитрий (Ультратех ЛТД). Из кафедры лаборатория
доступна по адресу 192.168.3.253. Лаборатории также развёрнуты на кафедре
(192.168.14.56) и факультете (192.168.10.254).
Графический интерфейс linux
организован с помощью X-протокола.
Приложения осуществляют графический вывод на X-сервер, выступая по
отношению к нему как клиенты. Для доступа из Windows к удалённому рабочему
столу Ubuntu можно использовать обычный X-сервер для Windows, например
Xming. Опыт показал, что этот подход приемлем только для работы в локальной
сети. Может быть организована удалённая работа и по протоколу VNC, но при
этом требуется множество дополнительных настроек.
13
grigoryev.victor@gmail.com http://vmg.pp.ua
Мы используем наиболее продвинутую технологию фирмы NoMachine,
основанную на X-протоколе и протоколе SSH. Для удалённого доступа к рабочему
столу Ubuntu следует выкачать с сайта производителя программу NX Client for
Windows и установить её.
Client for Windows уже установлен на кафедральных компьютерах. Запустите
мастер подключения nxclient в котором в поле session введём произвольное имя
сессии, в поле
host введём адрес удалённого Ubuntu (192.168.10.254 или
192.168.14.56 или 192.168.3.253), в следующем поле можно установить тип
соединения ADSL, в следующем окне установим менеджер окон GNOME и
создадим ярлык. Запустим сессию с помощью ярлыка NX client for windows.
Введём имя и пароль, согласно номера студента V, например для номера D=1 login:
student1 и password: student1. Нажимаем Login. Ждём соединения с Ubuntu.
Последовательно в появившемся окошке видим сообщения:
Setup the environment
-установка окружения
Connecting to 192.168.10.254 - соединение с Ubuntu
Connected to 192.168.10.254 - соединились с Ubuntu
Waiting authentication
- ждём проверку подлинности
Authentication complete - проверку прошли
Или
Authentication failed for user student1-это если вы неправильно ввели имя или
пароль.
Если вы в прошлый раз некорректно завершили работу и не вышли из Ubuntu ,
то появится окно, извещающее о незакрытых сессиях (рис. 1.2)
Если недоступна кнопка Resume, то нажимайте Terminate и затем New.
Иначе вы увидите сообщения
Download session information - загрузка информации о сессии
Negotiation the link parameters - соглашение о параметрах связи
Esteblish a display connection - установка соединения к дисплею
Рис. 1.2 Незакрытые сессии
Появится окно во весь экран с большим изображения символа Nomachine !m.
Возможно придётся ждать несколько минут и вы в Ubuntu.
Войдя в Ubuntu, выполните в теминале команду top, показывающую загрузку
компьютера. Не начинайте работать, если компьютер занят более чем на 50% или
у него свободной памяти меньше, чем 500Мб. Утилита top покажет, кто занимает
компьютер. Свяжитесь с ним.
Место лабораторий в сети университета
14
grigoryev.victor@gmail.com http://vmg.pp.ua
Для получения RSA-сертификата и доступа к виртуальной сетевой
лаборатории университета следует обратиться к автору и посетить сайт
http://eom.pp.ua
Компьютеры университета имеют адреса в сети 192.168.0.0/16 и не видны из
Интернета. Доступ в Интернет университет осуществляет через адрес проксисервера 212.3.125.178. Компьютеры кафедры лежат в сети 192.168.14.0/24 и не
видны из сети университета и тем более из Интернета. Доступ в сеть
университета и далее в Интернет кафедра осуществляет через свой роутер по
адресу 192.168.10.10, который лежит в сети 192.168.10.0/24 корпуса 12 (рис 1.3).
Имеются две независимые лаборатории. Обе работают под управлением
операционной системы Ubuntu версии 10.04.3-desktop-amd64. Одна лаборатория
развёрнута на кафедральном компьютере в аудитории 12/211 и доступна из сети
кафедры по адресу 192.168.14.56. Вторая лаборатория развёрнута в виде
виртуальной машины внутри компьютера LIB в аудитории 12/310 и доступна из
кафедральной и университетской сети по адресу 192.168.10.254 (рис 1.3).
Компьютер LIB имеет следующие характеристики. Материнская плата Asus
P6X58D Premium, 8-ми ядерный процессор Intel Core i7 950 3066MG, RAM 12G,
HDD 2xWD1-1002FAEX. LIB работает под управлением операционной системы
Windows server 2008 r2 sp1. В LIB активирована роль виртуальных машин HYPERV. В рамках виртуальной сети HYPER-V имеется два виртуальных коммутатора
Микрософт: внутренний и внешний. Создано два виртуальных сетевых адаптера
inet и NAT. Адаптер NAT подключён к внутреннему коммутатору и имеет адреса
192.168.0.1/24 и 192.168.0.254/24.
Адаптер inet подключён к внешнему
коммутатору и имеет адрес 192.168.10.11/24. Физический сетевой
адаптер
компьютера LIB также подключен к внешнему коммутатору. Компьютер LIB
выходит в сеть университета через адаптер inet (рис 1.3).
В университетской сети осуществляется преобразование общедоступного
адреса назначения 212.3.125.93 в локальный адрес адаптера inet 192.168.10.11 для
портов http, rdp, 8000-8004. Поэтому компьютер LIB доступен из Интернета по
адресу 212.3.125.93 (рис 1.3).
В LIB в менеджере виртуальных машин HYPER-V запущена виртуальная
машина под управлением операционной системы Ubuntu. В Ubuntu настроено два
сетевых адаптера eth0 и eth1. Адаптер eth1 подключён к внешнему коммутатору
HYPER-V и имеет адрес 192.168.10.254/24.
По этому адресу виртуальная
лаборатория доступна из сети университета. Адаптер eth0 подключён к
внутреннему виртуальному коммутатору HYPER-V и имеет адрес192.168.0.2/24
(рис 1.3). В Ubuntu через этот адаптер назначен маршрут по умолчанию на адрес
192.168.0.1 адаптера NAT хост-машины LIB.
Адаптера eth0 используется для доступа из Ubuntu в Интернет, который
необходим для обновления операционной системы Ubuntu. В университете для
получения доступа в Интернет необходимо подать заявку с указанием IP-адреса и
MAC-адреса, что вызывает ряд трудностей для виртуальной сети HYPER-V.
Поэтому было решено в хост-машине LIB активировать роль маршрутизации и
организовать преобразование исходящих адресов из сети
192.168.0.0/24
15
grigoryev.victor@gmail.com http://vmg.pp.ua
внутреннего коммутатора в адрес 192.168.10.11 адаптера inet (рис 1.3). Этому
адаптеру разрешён доступ в Интернет.
Для обеспечения непрерывности процесса обучения студентов было решено
организовать доступ к виртуальным лабораториям университета через Интернет.
Для этого используется технология виртуальных частных сетей (VPN-Virtual
Private Network). Существует множества способов организации VPN: SSH-тунель,
PPtP, L2TP, IPsec и др. Мы остановились на протоколе OpenVPN с использованием
RSA-сертификатов, который нам представляется наиболее адекватным для
решения наших задач. На компьютере LIB запущена служба OpenVPN-сервера со
следующей конфигурацией адресов и маршрутов
port 8002
клиенты подключаются к этому порту
proto tcp
по этому протоколу
dev tun
в режиме маршрутизации
ca ca.crt
для них осуществляется
cert lib.crt
проверка
key lib.key
сертификатов
server 192.168.3.0 255.255.255.0
После
соединения сервер получает
адрес 192.168.3.1/24, а клиентам назначается адрес из сети 192.168.3.0/24.
Рис. 1.3. Место лаборатории в сети университета. DNUnet – сеть ДНУ; Inet – Интернет;
211 – свич в ауд. 211; Eom – маршрутизатор в ауд. 211; 12 – свич 12-го уч. корпуса; Student –
домашний компьютер студента; Ubuntu211 – Ubuntu в ауд. 211; Outer и Inner – внешний и
16
grigoryev.victor@gmail.com http://vmg.pp.ua
внутренний свичи Hyper-V сети компютера Lib; Ubuntu – виртуальная Ubuntu в Hyper-V
компьютера Lib; eth0, eth1 – сетевые адаптери Ubuntu; Inet, NAT – – сетевые адаптери
Hyper-V; netLib – – сетевые функции компьютера Lib
push "route 192.168.0.0 255.255.0.0"
Клиенты получают маршрут к сети
университета.
topology subnet Позволяет
избегать назначения клиентам адресов с
маской /30, что позволит им связываться между собой в сети 192.168.3.0/24.
tcp-nodelay
Отменить алгоритм Nagle (чуть быстрее)
client-config-dir "\\OpenVPN22\\config\\ccd\\" Определяет имя папки, в
которой лежат файлы, содержащие адреса и маршруты, которые назначаются
подключившимся клиентам. Имя файла совпадает с общедоступным именем
сертификата клиента. Приведём пример файла student5 для сертификата с
общедоступным именем сертификата равным student5
ifconfig-push 192.168.3.105 255.255.255.0
клиент
получает
адрес
192.168.3.105/24
push "route 10.5.0.0 255.255.0.0"
и маршрут в сторону сети
10.5.0.0/16
После установления OpenVPN-соединения клиенты получают доступ к адресу
192.168.0.2 сетевой лаборатории, расположенной в виде виртуальной машины
Ubuntu внутри компьютера LIB в аудитории 12/310. При этом никакие ограничения
на порты приёмника не накладываются. Клиент получает доступ ко всем сетевым
службам.
Для доступа к лаборатории на кафедральном компьютере в аудитории 12/211
осуществляется два преобразования адресов приёмника для пакетов со значением
порта назначения 22 (SSH). В начале, на компьютере Lib у приходящих пакетов с
адресом назначения 192.168.0.254 осуществляется замена этого адреса на адрес
кафедрального роутера 192.168.10.10. В роутере пакеты со значением порта
назначения 22 пробрасываются на адрес 192.168.14.56 компьютера в аудитории
12/211. В итоге, после установления OpenVPN-соединения клиенты получают
доступ ко второй сетевой лаборатории, расположенной в аудитории 12/211,
используя адрес 192.168.0.254. Клиент получает доступ только к сетевой службе
SSH.
Кафедральный компьютер и роутер в аудитории 12/211 не работают вне
рабочего времени.
Подключение к лаборатории с помощью протокола Openvpn
Итак. К виртуальным лабораториям организован доступ из Интернет с
помощью протокола Openvpn. Если вы находитесь в университете, то для
подключения к виртуальной лаборатории совсем не надо использовать Openvpn.
Доступная из Интернета сетевая лаборатория в аудитории 12/310 также доступна
из сети университета по адресу 192.168.10.254.
Мы осуществим настройку клиентской части Openvpn для доступа с
кафедрального компьютера к лаборатории в аудитории 12/310 только в качестве
пробы и тренировки. Полученные навыки следует использовать для подключения
17
grigoryev.victor@gmail.com http://vmg.pp.ua
по Openvpn из домашнего компьютера к виртуальной лаборатории внутри
компьютера LIB в аудитории 12/310.
В начале следует проверить доступность компьютера LIB в университетской
сети (через cmd.exe): ping 192.168.10.11
Проверим
наличие
службы
Openvpn
на
удалённом
хосте
telnet 192.168.10.11 8002
Пример отсутствия службы
C:\Users\Administrator>telnet 192.168.10.11 8002
Connecting To 192.168.10.11 ...Could not open connection to the host, on port 8002:
Connect failed
При наличии службы вы увидите чистый чёрный экран. При неудаче –
обратитесь к преподавателю для проверки сетевых настроек и правил брандмауэра.
Openvpn уже установлен на кафедральной виртуальной машине v-srv.
Зайдите туда удалённо. Получите у преподавателя
конфигурацию
client.ovpn
корневой сертификат
ca.crt
свой сертификат
studentV.crt
и ключ к нему
studentV.key
Здесь V-Ваш номер
Эти 4 файла кладём в папку Openvpn\config и меняем в файле конфигурации
client.ovpn 2 строки cert ***.crt и key ***.key на строки
cert studentV.crt
key studentV.key
Пример файла конфигурации client.ovpn для студента №5 (V=5)
client
dev tun
dev-node ovpn – Указываем имя tap-интерфейса для OpenVPN.
proto tcp
remote 192.168.10.11 8002
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert student5.crt
key student5key
ns-cert-type server
comp-lzo
log
openvpn.log
status openvpn-status.log
verb 4
Нажимаем правой кнопкой на client.ovpn и выбираем пункт “запустить с
помощью Openvpn”. Если всё сделали правильно, то увидите в чёрном консольном
окне что-то типа (V=5)
…
18
grigoryev.victor@gmail.com http://vmg.pp.ua
Wed May 04 16:37:53 2011 TLS: Initial packet from 212.3.125.93:8002, sid=c727c0b
Wed May 04 16:38:06 2011 VERIFY OK:
depth=1, /C=UA/ST=UA/L=Dnepropetrovsk/O=DNU/
OU=FFECS/CN=lib/name=keyName/emailAddress=mail@host.domain
Wed May 04 16:38:06 2011 VERIFY OK: nsCertType=SERVER
Wed May 04 16:38:06 2011 VERIFY OK: depth=0,
/C=UA/ST=UA/L=Dnepropetrovsk/O=DNU/
OU=FFECS/CN=lib/name=keyName/emailAddress=mail@host.domain
…
ifconfig 192.168.3.105 255.255.255.0'
…
Wed May 04 16:38:17 2011 Initialization Sequence Completed
Ваш адрес от Openvpn равен 192.168.3.105.
Другой конец Openvpnсоединения находится в Windows server 2008 R2 на компьютере LIB и имеет адрес
192.168.3.1. Проверим наличие Openvpn-соединения: ping 192.168.3.1
Ubuntu запущена внутри Hyper-V и имеет адрес 192.168.0.2. Проверим
доступность удалённой системы Ubuntu: ping 192.168.0.2
Подключение к лаборатории labs.mikrotik.com.ua из кафедры
Компьютер лаборатории labs.mikrotik.com.ua подключается к экземпляру
службы Openvpn компьютера Lib, получает адрес 192.168.3.253 и маршрут на сеть
университета 192.168.0.0/16 через адрес 192.168.3.1.
На кафедральном маршрутизаторе RB750U-2HND фирмы Mikrotik в ауд. 211
прописан маршрут в сторону сети 192.168.3.0/24 через адрес 192.168.10.11
компьютера Lib
Как результат все компьютеры кафедры (192.168.14.0/24) видят лабораторию
labs.mikrotik.com.ua по адресу 192.168.3.253.
Обмен файлами
Для передачи файлов воспользуйтесь протоколом FTP (File Transfer Protocol).
Например, вызовите cmd.exe и введите с кафедрального компьютера
ftp 192.168.10.254 (192.168.14.56, 192.168.3.253, labs.microtik.com.ua)
Далее введите имя и пароль. Попадёте в командную строку FTP. Перейдите в
бинарный режим с помощью команды bin. Выгружать файлы следует из командной
стоки FTP с помощью команды mput маска. Забирать файлы следует с помощью
команды mget маска. Пример маски *.txt. Попробуйте выгрузить и загрузить
произвольный небольшой файл, скажем abc.txt.
Для удалённого доступа к командной строке Ubuntu широко используется
протокол SSH (Secure Shell). Для Windows есть уникальная утилита putty,
выполняющая функции Ssh-клиента. Putty входит в состав Gns3. Gns3 установлено
на компьютере V-srv.
Зайдите удалённо на V-srv. Укажите в putty имя пользователя, адрес
192.168.10.254 (192.168.14.56, 192.168.3.253), протокол ssh и подключитесь к
командной строке Ubuntu. Запустите второй экземпляр putty для адреса
192.168.14.56 (192.168.10.254, 192.168.3.253) и подключитесь к командной строке
второго Ubuntu. Обменяйтесь файлом abc.txt между двумя Ubuntu с помощью
протокола FTP.
19
grigoryev.victor@gmail.com http://vmg.pp.ua
Для передачи файлов часто используют безопасное копирование с помощью
протокола SSH. В мире linux безопасное копирование осуществляется с помощью
команды scp. Например, в putty, подключённому по адресу 192.168.3.253, введите
scp abc.txt student1@:192.168.0.2:abc.txt
scp student1@192.168.0.2: abc.txt abc1.txt
Способы выполнения лабораторных работ и курсовой по сетям
Лабораторные работы можно выполнять или дома или на кафедре. Дома
можно или установить Ubuntu на своём компьютере или удалённо подключится у
Ubuntu через openVPN либо по адресу labs.microtik.com.ua, либо по адресу
192.168.0.2 либо по адресу 192.168.0.254. На кафедре можно без Openvpn удалённо
подключится либо по адресу 192.168.3.253, либо по адресу 192.168.10.254, либо
по адресу 192.168.14.56. Помним, что адреса 192.168.0.2 и 192.168.10.254
назначены виртуальному компьютеру внутри компьютера в аудитории 12/310, а
адреса 192.168.0.254 и 192.168.14.56 относятся к реальному компьютеру в
аудитории 12/211.
Ubuntu, установленная на реальном компьютере в аудитории 12/211 работает
быстрее, чем Ubuntu под виртуальной машиной. Однако, компьютер и роутер в
аудитории 12/211 не работают вне рабочего времени и доступ к этому компьютеру
через openVPN содержит дополнительное звено в виде этого роутера. Поэтому
удалённый доступ из дома лучше осуществлять по адресу labs.microtik.com.ua или
192.168.0.2.
Если у вас есть ноутбук и вы находитесь на кафедре, то назначьте на WiFiадаптер адрес из сети 192. 168.14.0/24, шлюз 192.168.14.1 и можно подключится
либо к Ubuntu по адресу 192.168.14.56, либо к Ubuntu по адресу 192.168.10.254,
либо по адресу 192.168.3.253
Находясь на кафедре, используется преимущественно локальный адрес
192.168.14.56. По окончании работы сделайте резервную копию своей работы (см.
ниже) и сохраните её с помощью FTP или SSH (scp) на Ubuntu по адресу
192.168.10.254 либо по адресу 192.168.3.253 Дома подключитесь к этим же
Ubuntu по адресам 192.168.0.2, labs.microtik.com.ua соответственно, восстановите
свою работу из резервной копии и продолжайте работать удалённо. По окончании
работы сделайте резервную копию своей работы.
Находясь на кафедре,
подключитесь к Ubuntu по адресу 192.168.14.56. Заберите по FTP или SSH (scp)
резервную копию из Ubuntu по адресу 192.168.10.254 либо по
адресу
192.168.3.253. Восстановите свою работу из резервной копии и продолжайте
работать.
Если вы установили Ubuntu на своём домашнем компьютере, то можно из
дома
подключиться к Ubuntu по адресу labs.microtik.com.ua (192.168.0.2,
192.168.0.254), забрать резервную копию по FTP или SSH (scp) на свой компьютер
и работать локально. Сделайте на своём компьютере новую резервную копию и
отправьте её по FTP или SSH (scp) в Ubuntu по адресу labs.microtik.com.ua
(192.168.0.2, 192.168.0.254).
Требования для сдачи работы
Поместить на свой рабочий стол в лабораториях свою фотографию с
подписью в виде своей фамилии.
20
grigoryev.victor@gmail.com http://vmg.pp.ua
2. Работа с Mikrotik RouterOS в Qemu и GNS3
Начальная подготовка Ubuntu
Установка и работа с операционной системы RouterOS
Установка и настройка GNS3
Первая топология
GNS автоматически генерирует команды для Qemu
Шаблон для топологий
Работа с RouterOS из командной строки
Импорт и экспорт топологий
О персональных компьютерах и свичах в топологиях
21
21
26
28
31
32
35
36
37
Начальная подготовка Ubuntu
Зайдём с помощью nxclient на удалённый рабочий стол Ubuntu.
Полезно
также параллельно зайти в Ubuntu с помощью ssh из putty. Это будет полезно на
случай зависания nxclient. Добавим терминал на панель (Applications->Accessories>terminal -правая кнопка мыши). Нажмём на верхней панели правую кнопку мыши,
выберем add to panel и добавим system monitor и Windows selector … menu .
Загружать свою топологию может любой студент. В период загрузки сетевой
топологии маршрутизаторы сильно грузят процессоры. Стартовать свою
топологию нет смысла, пока загружены процессоры. Поэтому за правило надо
взять наблюдение за окном системного монитора. С его помощью можно узнать,
когда загрузка маршрутизаторов у вас или других студентов завершилась. За
загрузкой системы можно наблюдать и с помощью консольной команды top.
При работе вы можете открыть массу окон, чтобы в них не запутаться
используйте закреплённый на панели Windows selector.
Мы часто используем терминал (консоль). Не запускайте много экземпляров.
Используйте табы в терминале (file-open tab) для открытия в одном окне множества
консолей. Внутри консоли работает поддержка мыши для выделения текста и
копирования/вставки из/в буфер обмена.
В качестве менеджера файлов мы используем mc. В нём для поиска
используйте клавиатурную последовательность F9-c-f. Для скрытия-показа панелей
– комбинацию клавиш ctrlO (удерживая Ctrl, нажимаем o).
Установка и работа с операционной системы RouterOS
1. Используем последнюю версию образа RouterOS mikrotik для Интелплатформы, который берём с сайта производителя mikrotik.com. В папке /home/4all
возьмём в свою папку CD-образ операционной системы, например mikrotik-5.2.iso.
Создадим пустой образ виртуального диска формата qcow2 размером 111mb:
qemu-img create -f qcow2 mikrotik-5.2.img 111M
В виртуальной машине Qemu из CD-образа mikrotik-5.2.iso установим
RouterOS
на
образ
виртуального
диска
mikrotik-5.2.img:
qemu mikrotik-5.2.img -cdrom mikrotik-5.2.iso -boot d
видим
[1]11424
VNC server running on `127.0.0.1:5900'
21
grigoryev.victor@gmail.com http://vmg.pp.ua
Нам нужен VNC-клиент для общения с виртуальной машиной. Выбираем
applications - internet - remote desktop viewer. Далее
connect - protocol VNC -host
127.0.0.1:5900 и нажимаем connect. Видим начальное окно установки RouterOS. В
VNC-клиенте мышь не поддерживается и он её захватывает. Захватывается и ввод
с клавиатуры. Освобождение осуществляется комбинацией клавиш ctrlАlt. С
помощью клавиш со стрелками и пробела выбираем модули для установки: system,
ppp, dhcp, hotspot, advanced-tools, mpls, routerboard, routing, security. Нажимая i,
начинаем установку. На вопросы отвечаем по умолчанию. После завершения
установки, закрываем qemu (и RouterOS) , нажав комбинацию CtrlC в том
терминале Ubuntu, откуда была запущена qemu, а не в VNC-клиенте.
Проверяем установку:
qemu mikrotik-5.2.img
Запускаем VNC–клиент. Вводим Login: admin, Password: оставляем пустым.
Для остановки RouterOS используйте команду RouterOS system shutdown. При
обилии маршрутизаторов ввод этой команды для каждого маршрутизатора
утомляет. Поэтому иногда будем практиковать неправильную остановку RouterOS,
нажав CtrlC в консоли Ubuntu.
Важно помнить, что в VNC–клиенте Qemu работает в двух режимах: системы
и монитора. Переключение ctrl+alt 1 и ctrl+alt 2. Перейдя в монитор, посмотрите
версию Qemu командой info version. Полный список команд с описанием смотри
на сайте Qemu.org.
Можно стартовать RouterOS и так
qemu mikrotik-5.2.img&
Enter
Знак & в конце команды важен: Qemu не захватит терминал. Если мы введём
такую последовательность
qemu mikrotik-5.2.img
CtrlZ
^Z
[1]+ Stopped
qemu mikrotik-5.2.img
то второй экземпляр Qemu остановился. Запустим его
bg
[1]+ qemu mikrotik-5.2.img &
Qemu освободил терминал. В обеих случаях комбинация CtrlC теперь не
пойдёт в программу Qemu. Нам для неправильной остановки RouterOS надо убить
процесс Qemu. Находим его номер
ps aux|grep qemu
Команда ps aux выводит подробные сведения обо всех процессах в системе от
всех пользователей. Этот вывод проходит через фильтр grep. Видим, кто запустил
процесс и, какой у процесса номер
Student5 9718 61.3 0.9 247212 80336 pts/3 Sl 21:09 0:08 qemu mikrotik5.14.img
Student5 9719 61.3 0.9 247212 80336 pts/3
Sl 21:09 0:08 qemu mikrotik5.14.img
22
grigoryev.victor@gmail.com http://vmg.pp.ua
Student5 9723 0.0 0.0 7624 944 pts/3 S+ 21:09 0:00 grep --color=auto
qemu
Убиваем процессы
kill 9718
kill 9719
проверяем
ps aux|grep qemu
видим
12020 pts/3
S+
0:00 grep --color=auto qemu
Если убить не удалось, то попробуйте использовать
kill -KILL 9718
kill -KILL 9719
Убить все процессы qemu можно так
killall qemu
Всегда проверяйте наличие нежеланных версий процесса. Набирая ps aux|
grep qemu|grep student, вы узнаете, кто сейчас запустил qemu. Узнать, кто сейчас
занимает процессорное время можно с помощью консольной утилиты top. Чужой
процесс вы не убьете - звоните студенту, чтобы он убил неправильные или
обратитесь к администратору.
2. В VNC–клиенте в окне Qemu не работает copy-paste. Добьемся этого
другими средствами.
Реальные железные маршрутизаторы не имеют клавиатуры и монитора, и
настройка производится через консоль и последовательный порт. Qemu позволяет
перенаправить последовательный порт на соединение по протоколу telnet. Наберём
в терминале Ubuntu команду
qemu mikrotik-5.2.img -serial telnet:127.0.0.1:3000,server,nowait
В другой закладке окна терминала введём
telnet 127.0.0.1 3000
Мы в консоли RouterOS. Copy-paste работает c помощью мыши. Проверьте.
Заметим, что Copy-paste работает только для мыши. Клавиатурные комбинации
для Copy-paste не работает.
Сделайте копию R0.img для mikrotik-5.2.img.
cp mikrotik-5.0rc8.img R0.img
и пока работайте с копией. Чистая версия нам понадобится для GNS3.
3. RouterOS внутри Qemu можно связать с внешним миром многими
способами (см. документацию на сайте wiki.qemu.org). Мы для связи с хостмашиной Ubuntu используем tap-интерфейсы, а для связи между RouterOS ―
протокол UDP.
Связь между хост-машиной Ubuntu и устройствами внутри виртуальной
лаборатории осуществляется как через консоль по протоколу Telnet, так и с
использованием tap-интерфейсов.
В лаборатории под Qemu запускается
множество операционных систем RouterOS маршрутизаторов фирмы Mikrotik. В
Ubuntu созданы tap-интерфейсы tapV00,
tapV01 ... tapV07, tapV10, ... tapV14, где
V = 0, 1, 2, 3, 4, 5. Интерфейсов tapV08 и tapV09 нет, по техническим причинам.
Tap-интерфейсы помещены в мосты. На мосты назначены адреса 10.V.0.2, 10.V.1.2
23
grigoryev.victor@gmail.com http://vmg.pp.ua
… 10.V.7.2, 10.V.10.2 … 10.V.19.2. Маска /24. Для каждого V все адреса мостов
образуют сеть 10.V.0.0/16. Например, для V=5 это сеть 10.5.0.0/24. Будем
называть V номером tap-сети. Мосты можно посмотреть командой brctl show, а
адреса командой ifconfig. Номер своей tap-сети студент получает перед началом
работы.
Возьмём tap-сеть с номером 0. Соединим маршрутизатор
R0 с tapинтерфейсом tap000. (Вы работаете со своей сетью и интерфейсом). В дальнейшем
старайтесь придерживаться соглашения - номер в имени маршрутизатора
определяется двумя последним цифрам в имени tap-интерфейса (R0 - tap000).
qemu
R0.img -serial telnet:127.0.0.1:3000,server,nowait -net nic -net
tap,script=no,downscript=no,ifname=tap000&
Не доверяйте процедуре Copy-Paste. Вы можете перенести невидимые или
нелатинские символы. Вводите команду вручную. После ввода команды видим
VNC server running on `127.0.0.1:5900'
Запускаем VNC –клиент к 127.0.0.1:5900. Переключаемся в монитора ctrl+alt
2. Вводим info network и наблюдаем (Рис. 2.1)
Рис. 2.1. Монитор Qemu
что Qemu увидела для Routeros tap-интерфейс как Ethernet-карточку модели e1000
с MAC-адресом 525400123456.
В новом табе окна терминала введём
telnet 127.0.0.1 3000
Мы в консоли RouterOS. Смотрим интерфейсы
[admin@MikroTik] > interface ethernet print
Flags: X - disabled, R - running, S - slave
# NAME
MTU MAC-ADDRESS
ARP
0 R ether1
1500 52:54:00:12:34:56 enabled
Видим, что наша
Ethernet-карточка модели e1000 с MAC-адресом
525400123456 называется в RouterOS как ether1. Со стороны Ubuntu tapинтерфейс для студента 0 помещён в мост m000 c адресом 10.0.0.2/24. Поэтому в
RouterOS назначим другой адрес из сети 10.0.0.0/24 например
[admin@MikroTik] > ip address add address=10.0.0.1/24 interface=ether1
Проверим связь MikroTik с хост-машиной Ubuntu
[admin@MikroTik] > ping 10.0.0.2
HOST
SIZE TTL TIME STATUS
24
grigoryev.victor@gmail.com http://vmg.pp.ua
10.0.0.2
56 64 10ms
10.0.0.2
56 64 1ms
sent=2 received=2 packet-loss=0% min-rtt=1ms avg-rtt=5ms max-rtt=10ms
Для надёжности проверим связь и со стороны хост-машины Ubuntu. В новом
табе окна терминала введём
Student0@u10034d64bbb071:~$ ping 10.0.0.1
Student0@u10034d64bbb071:~$ telnet 10.0.0.1
Мы опять в консоли RouterOS. Выход – CtrlD.
Тап-устройства имеют двоякую природу. С одной стороны это сетевые
интерфейсы, а с другой стороны это устройство ввода вывода /dev/net/tun. Сетевые
пакеты, пришедшие на Тап-интерфейс можно прочитать как данные из устройства
/dev/net/tun. Данные записанные в устройство /dev/net/tun исходят их Тапинтерфейса в виде сетевых пакетов. Опция
-net nic -net tap,script=no,downscript=no,ifname=tapXXX
командной строки qemu организует сетевой обмен данными между Ethernetадаптером виртуальной машины и Тап-интерфейсом tapXXX хост-машины. Qemu
производит этот обмен путём записи-чтения устройства /dev/net/tun в Ubuntu.
Подключимся с помощью безопасной консоли. В новом табе окна терминала
введём
Student0@u10034d64bbb071:~$ ssh admin@10.0.0.1
Согласитесь с выведенным предложением. Если вы получите сообщение о
нарушении безопасности, то удалите файл в папке .ssh и попробуйте снова. Если
вам будет отказано в подключении, то переставьте операционную систему
RouterOS. Без поддержки доступа по ssh, вы не сможете быстро делать резервные
копии и восстанавливаться из них. Выход – CtrlD.
Берём себе из папки /home/4all утилиту winbox.exe. Делаем для неё ярлык для
запуска. (desktop - create launcher) Помещаем его в верхню панель. Запускаем.
Вводим адрес 10.0.0.1 и попадаем в маршрутизатор. Остановим маршрутизатор из
winbox или командной строкой sys shut в консоли RouterOS.
4. Сделайте ещё одну копию R1.img образа диска маршрутизатора mikrotik5.2.img. Соединим два маршрутизатора, используя UDP. Тщательно вводите
команды.
qemu
R0.img -serial telnet:127.0.0.1:3000,server,nowait -net nic -net
udp,sport=33333,dport=22222,daddr=127.0.0.1&
Warning: vlan 0 is not connected to host network
VNC server running on `127.0.0.1:5900'
qemu
R1.img -serial telnet:127.0.0.1:3001,server,nowait -net nic -net
udp,sport=22222,dport=33333,daddr=127.0.0.1&
Warning: vlan 0 is not connected to host network
VNC server running on `127.0.0.1:5901'
Запускаем VNC –клиент и подключаемся к 127.0.0.1:5900 и 127.0.0.1:5901.
Переключаемся в монитор ctrl+alt 2. Вводим
info network
25
grigoryev.victor@gmail.com http://vmg.pp.ua
и видим, для R0
для R1
Т.е. Ethernet-адаптеру поставлен в соответствие UDP-канал. Подключаемся к
консолям роутеров через telnet
telnet 127.0.0.1 3000
telnet 127.0.0.1 3001
и назначаем роутерам имена R0 и R1
[admin@MikroTik] > system identity set name=R0
[admin@MikroTik] > system identity set name=R1
Промпт роутеров отразил смену имени
[admin@R0]>
[admin@R1]>
Назначаем роутерам адреса
[admin@R0]> ip address add address=1.1.1.1/24 interface=ether1
и для R1
[admin@R1]> ip address add address=1.1.1.2/24 interface=ether1
Пингуем из R1 в R0.
[admin@MikroTik] > ping 1.1.1.1
Связь есть.
Все пакеты из Ethernet-интерфейса R0 поступают на UDP порт 22222 хостмашины Ubuntu и Ethernet-интерфейс R0 принимает все пакеты из UDP порта
33333 хост-машины. Для R1 наоборот. Все пакеты из Ethernet-интерфейса R1
поступают на UDP порт 33333 хост-машины ubuntu и Ethernet-интерфейс R1
принимает все пакеты из UDP порта 22222 хост-машины. Таким образом сетевой
Ethernet-кабель моделируется двунаправленным UDP-каналом с использованием
двух портов 22222 и 33333.
Попытаться из командной строки организовать сложную топологию – дело
громоздкое и чревато ошибками. Тут на помощь приходит контейнер виртуальных
машин GNS3
Установка и настройка GNS3
Для быстрого сбора сетевых топологий следует использовать оболочку GNS3.
Эта оболочка генерирует командные строки для запуска Qemu, которые можно
увидеть, запустив перед запуском GNS программу Qemuwrapper.py –p ВашПорт.
Предупреждение Qemu is already running on port игнорируем.
Берём себе из папки /home/4all архив GNS3-0.7.4-src.tar.gz. Развернём его.
Появится новая папка. В терминале проверьте, что программы qemuwrapper.py и
gns3 в новой папке запускаются. Создайте ярлык для запуска GNS3. В качестве
ссылки для ярлыка надо указать файл gns3. Создайте в Вашей рабочей Папке две
папки
26
grigoryev.victor@gmail.com http://vmg.pp.ua
mkdir tmp
mkdir projects
Запустим GNS3. Закроем окошко создания проекта. Выберем для настройки
Edit - Preferences. Устанавливаем путь к своей папке проектов projects и путь к
папке, где лежит созданный ранее в этой работе образ диска операционной
системы RouterOS (Image Directory).
Настроим терминал: Edit - Preferences - General - Terminal setting. Возьмём
для Preconfigurated terminal commands - Gnome Terminal. Для Terminal command
возьмём- gnome-terminal -t %d -e 'telnet %h %p' >/dev/null 2>&1 & и жмём OK.
Выберем для настройки Edit - Preferences - Qemu - General setting.
Устанавливаем путь к своему файлу qemuwraper.py и путь к своей рабочей папке
tmp.
Важно, чтобы у всех одновременно работающих не было общих окрытых
портов TCP и UDP. Возьмём порты
10525+N - Qemuwraper
20000+N*1000 -UDP
3000+N*100 - консоль
N - ваш номер. Например, если вы student7, то вписываем порты
10532 - Qemu wraper
27000 -UDP
3700 – консоль
Хотя заметим, что в этой версии GNS порт консоли поменять не удаётся и его
придётся менять путём редактирования текстового файла topokogy.net
конфигурации сетевой топологии.
Удалите внешний Qemuwraper или дайте ему тот же порт. Нажимаем
применить. Должен пройти Test. Жмём OK. Если тест не прошёл, то закроем GNS3.
Запусти в терминале Qemuwraper, указав свой порт, например для студента 7
qemuwraper.py –p 10532
Снова запустим GNS3. Смотрите на ошибки в терминальном окно
Qemuwraper.
Периодически проверяйте целостность GNS, нажимая
Test. При
проблемах- настройте GNS снова.
Занятые порты TCP (UDP) и соответствующие им программы можно
посмотреть командой
netstat –atnp
(netstat –aunp)
Используйте фильтр grep и определите номер процесса. Далее, используя
команду ps aux и фильтр по номеру процесса, определите, кто забрал ваш порт.
Перейдём Edit - Preferences - Qemu - Qemu host и добавим в Binary image
путь к образу созданного ранее в этой работе образ диска операционной системы
RouterOS (здесь mikrotik-5.2.img). Галочки kQemu , kvm не ставим. Галочку kvm
нужно поставить у себя дома, если вы работаете с Ubuntu не под виртуалной
машиной и у вас установлена поддержка KVM. Даём произвольное имя для
образа. Нажимаем Save, Apply и Оk.
Изменим иконку Qemu host на левой панели GNS. Выберем Edit-Symbol
Manager. Выбираем слева иконку
(например router)
и, нажимая >, переносим
27
grigoryev.victor@gmail.com http://vmg.pp.ua
её в правую часть. Дважды щёлкаем на нёй в правой части. Появится имя: router и
тип: декоративный узел. Меняем имя: Mikrotik и тип: выбираем из списка
значение «Qemu host». Нажимаем применить. Имя в правой части изменится на
Mikrotik. Нажимаем OK. Слева в GNS в типах узлов появится новая иконка
Mikrotik - синоним Qemu host.
Перед созданием и запуском топологии запустим Qemuwrapper. Когда вы
наберётесь опыта, то это можно не делать. Например, если вы студент с номером 7,
то ваш Qemuwrapper использует порт 10532 (=10525+7). Откройте консоль Ubuntu,
найдите файл Qemuwrapper.py и запустите команду ./qemuwrapper.py –p 10532
Первая топология
Создадим первую топологию first. Запускаем GNS3. В появившемся окошке
вводим имя нового проекта first и ставим галочку Save nvrams. Нажимаем Ok. Если
проект уже создан, то выбираем Open. Для создания проекта можно открыть и
пункт меню File-NewBlankProject. Перетащим два устройства Qemu host с левой
панели на центральную и меняем их имена на R0 и R1 (пункт change the
hostnameв контекстном меню устройства).
Соединим
интерфейс e0
маршрутизатора R0 с интерфейсом e1 маршрутизатора R1 (Значок «add a link» на
верхней панели GNS3, пункт Мanual). После завершения соединения снова
нажмите значок «Add a link». Параметры запуска маршрутизатора можно узнать,
наведя на него мышь.
Заметим о соотношении названий интерфейсов в GNS и RouterOS
GNS
RouterOs
e0
ether1
e1
ether2
...
По умолчанию GNS3 назначает маршрутизатору шесть сетевых интерфейсов.
Менять не будем. Добавляем в маршрутизаторы tap-интерфейсы. Пусть у вас
номер тап-сети 7 и номер студента 5. Начнём. В контекстном меню R0 выбираем
Сonfigure - R0 - Qemu options и вводим. Заметим, что во вводе присутствуют
только три пробела
-net nic,vlan=6 -net tap,script=no,downscript=no,vlan=6,ifname=tap700
Нажимаем Ok. Для R1 вводим
-net nic,vlan=6 -net tap,script=no,downscript=no,vlan=6,ifname=tap701
Это приводит к созданию внутри маршрутизатора сетевой карточки ether7
которая связывается c сетевым tap-интерфейсом Ubuntu с именем tap700 (tap701).
Tap-интерфейса в GNS3 не видно.
Сохраните проект. Откройте в папке проектов появившуюся папку проекта
first. Откройте двойным щелчком (программой gedit) файл topology.net. Изучите
его. Поняв его устройство можно менять топологию без GNS3. Перед запуском
топологии, сделанной на другой машине, обязательно проверьте и исправьте этот
файл. Добавьте порты для консолей в возрастающем порядке номеров роутеров
autostart = False
[Qemu 127.0.0.1:10535] -согласно номеру студента 5
workingdir = working –папка - обязательная строка
udp = 30500 -согласно номеру студента 5
28
grigoryev.victor@gmail.com http://vmg.pp.ua
[[QemuDevice]]
image = /home/student7/mikrotik-5.5.img -измените при переносе с другой
машины
netcard = e1000
kvm = True - эта строка есть, если только работаете на чистом железе с
установленным kvm
[[QEMU R0]] – начало конфигурации для R0
console=3500-согласно номера студента 5 прописываем вручную
e0 = R1 e1 -связь
[[QEMU R1]] – начало конфигурации для R1
console=3501-согласно номера студента 5
e1 = R0 e0 -связь
[GNS3-DATA]
workdir = working -папка-обязательная строка
К сожалению после сохранения торологии в GNS настройки портов консоли
удаляются. Поэтому перед запуском GNS делайте копию файла topology.net или
заново назначайте порты консоли в этом файле.
Улучшив момент, когда система не занята (system monitor), стартуйте все
маршрутизаторы (зелёный треугольник вверху). Старт-стоп отдельного
маршрутизатора производится из контекстного меню. Не используйте рестарт – не
всегда работает. Дождитесь окончания загрузки.
В папке first вы увидите папку working, а в ней папки R0 и R1, а в этих папках
два образа диска FLASH и SWAP. Если это не так, то остановитесь и проверьте
настройки, так как в дальнейшем возникнут трудности.
Осуществлять конфигурацию маршрутизатора через консоль с помощью
интерфейса командной строки можно тремя способами: либо через VNC-клиент,
либо через консоль маршрутизатора в GNS либо через telnet. В первом случае надо
знать порт VNC-сервера. Порт VNC можно узнать в консоли Qemuwrapper, если
запускать маршрутизаторы по одному. Во втором случае консоль маршрутизатора
вызывается двойным щелчком мыши на иконке маршрутизатора.
В третьем
случае консоль маршрутизатора вызывается через консоль Ubuntu с помощью
команды telnet 127.0.0.1 порт-консоли. Заметим, что второй случай также
приводит к неявному вызову команды telnet 127.0.0.1 порт-консоли.
Во втором и третьем случае работать удобнее всего, так как работает
CopyPaste. Если консоль маршрутизатора не запустилась, то анализируйте вывод в
консоли Qemuwrapper и занятые порты (netstat). Если там всё нормально, то
останавливаем маршрутизатор, убиваем папку маршрутизатора в папке working
проекта first и снова стартуем маршрутизатор.
Стартуем консоли маршрутизаторов, два раза щёлкнув на их иконках в GNS3
(рис. 2.2). Если терминальное окно будет отличное от приведенного на рис. 2.2, то
исправьте настройки терминала в GNS3 (см.выше)
29
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 2.2. Gnome Terminal
Вводим имя admin без пароля. Назначаем имена (используйте CopyPaste)
system identity set name=R0
system identity set name=R1
Каждый маршрутизатор шлёт соседям широковещательную информацию о
себе и обрабатывает такую же информацию, принятую от соседей. Результат можно
посмотреть командой /ip neighbor discovery print и /ip neighbor discovery print
detail. Мы увидим соседей, достижимых по Ethernet-протоколу, в том числе через
сетевые мосты.
[admin@R0] > ip neighbor print
#INTERFACE ADDRES MAC-ADDRESS IDENTITY VERSION BOARD
0 ether1
00:AA:00:28:C5:01 R1
5.2
x86
[admin@R0] > ip neighbor print detail
0
interface=ether1
mac-address=00:AA:00:28:C5:01
identity="R1"
platform="MikroTik" version="5.2" unpack=none age=17s uptime=10m5s
softwareid="1ZGH-GE5Q" board="x86" ipv6=yes interface-name="ether2"
Этот вывод надо понимать так. Этот маршрутизатор R0 через интерфейс
ether1 обнаружил соседа R1. Сосед R1 послал эту информацию через свой
интерфейс ether2 у которого MAC -адрес равен 00:AA:00:28:C5:01
Проверим, что интерфейс ether2 у R1 имеет этот MAC-адрес
[admin@R1] > interface ethernet print where name=ether2
# NAME
MTU MAC-ADDRESS
ARP
1 R ether2
1500 00:AA:00:28:C5:01 enabled
Аналогично для R1
[admin@R1] > ip neighbor pr int
# INTERFACE ADDRESS MAC-ADDRESS IDENTITY VERSION BOARD
0 ether2
00:AA:00:F4:68:00
R0
5.2
x86
[admin@R1] > ip neighbor print detail
0 interface=ether2 mac-address=00:AA:00:F4:68:00 identity="R0"
platform="MikroTik" version="5.2" unpack=none age=1m uptime=10m6s softwareid="1ZGH-GE5Q" board="x86" ipv6=yes interface-name="ether1"
Этот вывод надо понимать так. R1 через интерфейс ether2 обнаружил соседа
R0. Сосед послал эту информацию через свой интерфейс ether1 у которого MAC
-address= 00:AA:00:F4:68:00
Проверим, что интерфейс ether1 у R0 имеет этот MAC-адрес
[admin@R0] > interface ethernet print where name=ether1
# NAME
MTU MAC-ADDRESS
ARP
30
grigoryev.victor@gmail.com http://vmg.pp.ua
0 R ether1
1500 00:AA:00:F4:68:00 enabled
Возьмите за привычку давать маршрутизаторам имена и набирать эти команду
обнаружения соседей. Если вдруг маршрутизатор не видят соседи, то остановите
его, убейте его папку в папке working проекта и стартуйте маршрутизатор заново.
Так как ethet7 сам подсоединён к бриджу Ubuntu, то для сокращения объёма
вывода команд следует использовать фильтр
ip neighbor print where ((interface!=ether7)&&(interface-name!=ether7))
ip neighbor print detail where (interface!=ether7)&&(interface-name!=ether7)
Назначаем адреса. На R0
ip ad ad address=10.7.0.1/24 interface=ether7
ip ad ad address=1.1.1.1/24 interface=ether1
На R1
ip ad ad address=10.7.1.1/24 interface=ether7
ip ad ad address=1.1.1.2/24 interface=ether2
Должны пойти пинги в консолях маршрутизаторов
[admin@R0] >ping 10.7.0.2
[admin@R1] >ping 1.1.1.2
[admin@R1] >ping 10.7.1.2
[admin@R1] >ping 1.1.1.1
И в консоли Ubuntu ping 10.7.0.1 и ping 10.7.1.1.
Помните, что если в GNS3 назначить маршрутизатору один сетевой
интерфейс, а не шесть, как у нас сейчас, то tap-интерфейс в RouterOS будет
называться ether2 и настройки адресов для tap-интерфейса ether7 будут относится
к несуществующему интерфейсу.
Наличие tap-интерфейсов с настроенными внутри RoutrOS адресами даёт
четвёртый способ доступа к консоли RoutrOS из Ubuntu telnet 10.7.0.2 и telnet
10.7.1.2. Пятый способ предоставляет безопасная консоль ssh admin@10.7.0.2 и t
ssh admin@10.7.1.2
Запускаем winbox. Вводим адрес 10.7.0.2, имя admin. Сохраняемся и
соединяемся. Делаем то же для адреса 10.7.0.2. Совершите обзор возможностей
маршрутизатора. Они поражают, если посмотреть в Ubuntu на размер виртуального
диска командой ls –l *img. В winbox есть пункт меню NewTеrmial, что даёт шестой
способ доступа к консоли RoutrOS из Ubuntu.
Маршрутизаторы доступны по протоколам FTP и SSH. Более того
маршрутизаторы имеет веб-интерфейс и доступны в Ubuntu из Firefox по адресам
http://10.7.0.1 и http://10.7.1.1.
Операционная система RouterOS, установленная из образа, скачанного с
официального сайта Mikrotik, имеет ограниченное время непрерывной работы
равное 24 часам. В папке /home/4all лежит образ диска установленной
лицензионной системы RouterOS. Пользуйтесь им. При появлении на сайте
mikrotik.com новой версии RouterOS, скачайте npk-файл для платформы x86,
выгрузите его по FTP в старую версию RouterOS и перегрузите RouterOS.
RouterOS обновится.
GNS автоматически генерирует команды для Qemu
Для топологии first смотрим в окно консоли предварительно запущенного
31
grigoryev.victor@gmail.com http://vmg.pp.ua
Qemuwrapper. Берём содержимое консоли в карман и отформатируем согласно
правилам записи командной строки Qemu ( см. http://wiki.Qemu .org/Manual). MACадреса мы не указываем и убираем несоединённые интерфейсы. Получим
qemu -name R0 -m 256 /home/student5/projects/first/working/R0/FLASH
-hdb /home/student7/projects/first/working/R0/SWAP -net nic,vlan=0 –net
udp,vlan=0,sport=27002,dport=27003,daddr=127.0.0.1 -serial
telnet:127.0.0.1:3700,server,nowait -net nic,vlan=6 -net nic -net
tap,script=no,downscript=no,vlan=6,ifname=tap700
qemu -name R1 -m 256 /home/student5/projects/first/working/R1/FLASH
-hdb /home/ student5/first/working/R1/SWAP -net nic,vlan=1 -net
udp,vlan=1,sport=27003,dport=27002,daddr=127.0.0.1 -serial
telnet:127.0.0.1:3701,server,nowait -net nic,vlan=6 -net nic -net
tap,script=no,downscript=no,vlan=6,ifname=tap701
Заметим, что здесь мы не видим образ диска RouterOS mikrotik-5.2.img. Для
каждого маршрутизатора в топологии GNS делает для mikrotik-5.2.img разностные
образы с именем FLASH. SWAP – это образ диска для свопинга. Если ввести эти
команды в консоли ubuntu, то получим тот же эффект, что и в GNS3. Делать это не
обязательно. Если решитесь, то лучше для этого создайте командный файл.
Строки -serial telnet:127.0.0.1:3700,server,nowait и -serial telnet:
127.0.0.1:3701, server,nowait отвечают за связь с консолью. Для R0 строка
-net nic,vlan=0 -net udp,vlan=0,sport=27002,dport=27003,daddr=127.0.0.1
говорит, что все пакеты из интерфейса e0 (ether1) поступают на UDP порт 27002
хост-машины ubuntu и интерфейс e0 (ether1) принимает все пакеты из UDP
порта 27003 хост-машины.
Для R1 наоборот. Строка
-net nic,vlan=1 -net udp,vlan=1,sport=27003,dport=27002,daddr=127.0.0.1
говорит, что все пакеты из интерфейса e1 (ether2) поступают на UDP порт 27003
хост-машины ubuntu и интерфейс e1 (ether2) принимает все пакеты из UDP порта
27001 хост-машины.
И, наконец, строки
-net nic,vlan=6 -net nic –net tap,script=no,downscript=no,vlan=6,ifname=tap700
-net nic,vlan=6 -net nic -net tap,script=no,downscript=no,vlan=6,ifname=tap701
приводят к созданию внутри маршрутизатора сетевой карточки ether7 которая
связывается c сетевым tap-интерфейсом с именем tap700 (tap701).
В принципе можно обойтись и без GNS. Однако для сложных топологий
легко запутаться. Остановите все маршрутизаторы (красный квадрат). Сохраните
топологию.
Шаблон для топологий
Создадим топологию template. На топологии должны быть видны все адреса и
интерфейсы. Поместим на панель несколько (8) роутеров. В названиях роутеров
должны быть отражены номера ваших тап-интерфейсов. Например, дадим имена
роутерам от R0 до R7. Пусть у нас тап-сеть 5. Поставим в соответствие роутеру R0
тап-интерфейс tap500. Роутеру R1 тап-интерфейс tap501 и т.д. Для чего в
контекстном меню роутеров R0, R1 … R7 в поле options вводим настройки для
32
grigoryev.victor@gmail.com http://vmg.pp.ua
тап-интерфейсов:
-net nic,vlan=6 -net nic –net tap,script=no,downscript=no,vlan=6,ifname=tap500 -net
nic,vlan=6 -net nic -net tap,script=no,downscript=no,vlan=6,ifname=tap501
…
-net nic,vlan=6 -net nic -net tap,script=no,downscript=no,vlan=6,ifname=tap507
Сохранимся и закроем GNS3. Проверим, что никто не занял нашу тап сеть 5
ps ax|grep tap5
Вручную впишем в файл топологии порты для консолей. Сделайте копию
файла, так как GNS при следующем сохранении затрёт порты. Проверим, что никто
не занял наши порты консоли, например
netstst –ant|grep 300
Откроем топологию в GNS3. В папке working проекта появятся подпапки R0,
R1 … R7. Запускаем все роутеры, нажимая соответствующую иконку на верхней
панели GNS3. . В папках R0, R1 … R7 появятся файлы FLASH и SWAP. Ждём
окончания их загрузки. Запускаем все консоли, нажимая соответствующую иконку
на верхней панели GNS3.
В селекторе окон (вы поместили селектор ранее на верхнюю панель Ubuntu)
выбираем консоль роутера R0. Жмём Enter и вводим имя admin и пустой пароль.
Видим сколько осталось роутеру жить. Мышью берём в карман имя admin до конца
строки. В селекторе окон выбираем консоль роутера R1. Жмём Enter и извлекаем
имя admin из кармана. Жмём Enter 2 раза. Повторяем так для всех роутеров.
Проверяем, что роутеры имеют интерфейс ether7 для связи тап-интерфейсами
Ubuntu. В селекторе окон выбираем консоль роутера R0.. Вводим int print. Берём
команду в карман (до конца строки). Вставляем команду из кармана для остальных
роутеров. Командой из контекстного меню роутеров в GNS останавливаем роутеры
у которых нет ether7. Проверяем для этих роутеров в GNS строку -net nic –net tap,
определяющую связь тап-интерфейса Ubuntu с роутером. В папке роутера в папке
working проекта удаляем файлы FLASH и SWAP. Запускаем роутеры и снова проверяем наличие ether7.
В селекторе окон выбираем консоль роутера R0. Мы ему назначили с тап-интерфейс tap500 (тап-сеть 5). Назначаем адрес на ether7 из соответствующей сети
10.5.0.0/24
ip address add address=10.5.0.1/24 interface=ether7
Берём команду в карман (не до конца строки)
В селекторе окон выбираем консоль роутера R1. Мы ему назначили тап-интерфейс tap510. Вставляем команду из кармана и изменяем её. Назначаем адрес на
ether7 из соответствующей сети 10.5.1.0/24
ip address add address=10.5.1.1/24 interface=ether7
Назначаем адрес на ether7 для остальных роутеров.
Из консоли Ubuntu проверим доступность роутеров
ping 10.5.0.1
ping 10.5.1.1
…
ping 10.5.7.1
33
grigoryev.victor@gmail.com http://vmg.pp.ua
Остановите недоступные роутеры, удалите для них файлы FLASH и SWAP и
переназначьте адреса.
Свяжемся с роутерами с помощью безопасной оболочки ssh, которая позволит
входить в роутеры без ввода пароля.
ssh admin@10.5.0.1
На запрос ответьте yes и вы попадёте в роутер. Выход ^d.
Для других роутеров
ssh admin@10.5.1.1
…
ssh admin@10.5.7.1
Остановите недоступные роутеры, удалите для них файлы FLASH и SWAP и
переназначьте адреса. Если и это не поможет, то переставьте заново RouterOS.
Не двигайтесь дальше, пока не заработает ssh для всех роутеров.
Для каждого роутера R0 R1 R7 создадим в консоли Ubuntu восемь профилей с
именами 0 1 2 …7 соответственно. (Edit-Profiles-New). В профиле зададим заголовок, команду и другие настройки, например для R0 и тап-сети 0 (рис. 2.3)
Рис. 2.3. Настройка закладки
В верхней панели десктопа Ubuntu выберем AddToPanel и добавим Custom
Application Launcher, где введём команду запуска консоли с 8 закладками
gnome-terminal --tab-with-profile=0 --tab-with-profile=1 --tab-with-profile=2
--tab-with-profile=3 --tab-with-profile=4 --tab-with-profile=5 --tab-with-profile=6
--tab-with-profile=7
Рис. 2.4. Закладки
Запустите эту консоль с восемью закладками. Вы увидите в консоли 8 табов
(рис. 2.4). Каждая закладка связана с отдельным роутером. По очереди в каждой закладке назначьте имена. Пользуйтесь услугой Copy-paste.
sys id s n=R0 … sys id s n=R7
Остановите топологию. Закройте GNS. Далее при выполнении очередной
34
grigoryev.victor@gmail.com http://vmg.pp.ua
лабораторной работы следует лишь создать копию папки Template с топологией
шаблона.
Казалось, было бы легче создать профили с командами для связи с роутерами
через консоль, например telnet 127.0.0.1 3000, где 3000 – порт консоли. К сожалению, GNS не сохраняет и затирает назначенные вручную порты консоли.
Хотя в утилите winbox также присутствует консоль, использование закладок в
консоли Ubuntu представляется более эффективным способом одновременной
настройки нескольких роутеров. Удобство работы в основном достигается
использованием технологии Copy/Paste.
Работа с RouterOS из командной строки
Запустите топологию first. Обратимся к R0 из Ubuntu через telnet или ssh.
Если нажать на знак ? и или два раза нажать клавишу табуляции, то увидим список
команд и подменю. Синие пункты ― это меню, а остальное ― команды. Перейдём
в меню interface, набирая строку с этим же именем interface и нажимая Enter.
Команда или подменю идентифицируется по первым набранным символам и, если
они уникальны, то текст зеленеет. Поэтому достаточно набрать in. При желании
видеть всю команду нажмите табуляцию. Команда print выведет интерфейсы.
Команда print detail выведет более детальную информацию. Вернёмся уровнем
выше «..». Переход в главное меню /. Тоже самое можно сделать, набрав команду
целиком
[admin@ R0]>int print detail
Зайдём в меню ip address
[admin@ R0]> /ip address> pr
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS
NETWORK
INTERFACE
0
10.0.0.1/24 10.0.0.0
ether7
1
1.1.1.1/24
1.1.1.0
ether1
Команды работают в режиме полного ввода
[admin@R0]>/ip address>add add=2.2.2.2/24 interface=ether2
или диалога
[admin@ R0]> /ip address> add
address: 3.3.3.3/24
interface: ether3
Всегда помогает табуляция и знак вопроса. Настройки можно поменять.
Например, для адреса 2.2.2.2/24 поменяем интерфейс на ether4. В начале, узнаем
номер
[admin@ R0]> /ip address> pr
Flags: X - disabled, I - invalid, D - dynamic
#
ADDRESS
NETWORK
INTERFACE
0
10.0.0.1/24
10.0.0.0
ether7
1
1.1.1.1/24
1.1.1.0
ether1
2
2.2.2.2/24
2.2.2.0
ether2
3
3.3.3.3/24
3.3.3.0
ether3
Это №2. Меняем
35
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@ R0]> /ip address> set 2 interface=ether4
[admin@ R0]> /ip address> pr
Flags: X - disabled, I - invalid, D - dynamic
#
ADDRESS
NETWORK
INTERFACE
0
10.0.0.1/24
10.0.0.0
ether7
1
1.1.1.1/24
1.1.1.0
ether1
2
2.2.2.2/24
2.2.2.0
ether4
3 3.3.3.3/24
3.3.3.0
ether3
Убиваем созданное
[admin@ R0]> /ip address> rem 2,3
[admin@ R0]> /ip address> pr
#
ADDRESS
NETWORK
INTERFACE
0
10.0.0.1/24
10.0.0.0
ether7
1
1.1.1.1/24
1.1.1.0
ether1
Это основной принцип. Интерфейс чрезвычайно мощный. Например, можно
фильтровать вывод
/ip address print where interface=ether1
Уничтожим все IP-адреса на интерфейсе ether2
/ip ad rem [find where interface=ether2]
Кроме того поддерживаются скрипты. Вот пример скрипта, который наряду с
IP-адресами выводит и MAC-адреса
foreach i in=[/ip address find] do={
:local intr [/ip address get $i interface];
:local addr [/ip address get $i address];
:local MAC [/int eth get [/int eth find name=$intr] mac-address] ;
:put ($addr." ".$intr." ".$MAC); }
При желании, изучите скриптинг самостоятельно по материалам
официального сайта wiki.mikrotik.com. Покажем лишь как добавить и запустить
скрипт
[admin@MikroTik]> /system script add
[admin@MikroTik]> /system script pr
0I name="script1" owner="admin" policy=ftp,reboot,read,write,policy,test, winbox,
password ,sniff, sensitive, api run-count=0 source=""
Наберём тест скрипта в редакторе gedit. Выделим его, поместим в карман и
вставим в редакторе скриптов RouterOS
edit 0 source
Сохраняем скрипт командой Ctrl o и выполняем
[admin@MikroTik]> /system script> run 0
Видим IP- и MAC-адреса интерфейсов
10.0.0.1/24 ether7 52:54:00:12:34:5C
1.1.1.1/24 ether1 00:00:AB:18:47:00
Импорт и экспорт топологий
Периодически делайте резервную копию, следуя нижеизложенной методике.
1. Рассмотрим скрипт /home/4all/makeGetBackup для создания в Ubuntu
резервной копии настроек маршрутизаторов топологии
36
grigoryev.victor@gmail.com http://vmg.pp.ua
#!/bin/bash
for ((i=$1;i<=$2;i++)) ;do
ssh admin@10.D.$i.1 "system backup save name=R$i"
sftp admin@10.D.$i.1:/R*
done
Цикл for организует перебор целых чисел в диапазоне от $1 до $2. Здесь $1 и
$2 – 1-й и 2-й аргументы этого скрипта. В цикле утилита ssh (secure shell) даёт
команду system backup save name=R$i маршрутизатору Mikrotik с адресом
10.0.$i.1 на сохранение конфигурации маршрутизатора в файл R$i , а команду sftp
забирает этот файл из Mikrotik в локальный файл в Ubuntu.
Заберите скрипт в свою папку projects, адаптируйте его под свою tap-сеть:
замените в скрипте символ D на номер своей tap-сети. Сделайте скрипт
исполняемым : chmod a+x makeGetBackup
Запустим в GNS3 топологию template. В нашей топологии tap-интерфейсы
имеют адреса 10.D.0.1, 10.D.1.1 ... 10.D.7.1. Чтобы забрать конфигурацию в Ubuntu
надо выполнить команду
./makeGetBackup 0 7
В текущей папке появятся файлы резервных копий R0.backup, R1.backup ...
R7.backup. Поместите файлы резервных копий вместе с топологией topology.net в
архив.
Для восстановления из Ubuntu конфигураций операционных систем
маршрутизаторов предлагается скрипт /home/4all/Restore
#!/bin/bash
for ((i=$1;i<=$2;i++)) ;do
scp R$i.backup admin@10.D.$i.1:
ssh admin@10.D.$i.1 "system backup load name=R$i"
done
Здесь команда scp безопасно копирует по сети файл резервной копии из Ubuntu
в Mikrotik. Команда ssh удалённо выполняет в Mikrotik команду system backup
load name=R$i восстановления конфигурации из резервной копии.
Сделайте скрипт исполняемым
chmod a+x Restore
Для восстановления топологии, следует разархивировать архив в пустую
папку, создать в этой папке папку working и, при необходимости, отредактировать
файл топологии. Из этого файла выясните имена тап-интерфейсов сетевых
устройств топологии. Откройте топологию в GNS3. В папке working появятся
пустые подпапки с именами равными именам устройств в топологии. Следуя
именам тап-интерфейсов, скопируйте в пустые папки новой топологии файлы
FLASH и SWAP из папок R0, R1 … R7 топологии template. Запустить топологию.
Запустите консоль с закладками для проверки доступности роутеров по протоколу
ssh. Далее выполните в папке с резервными копиями R0.backup, R1.backup ...
R7.backup скрипт ../Restore 0 7.
Отвечайте yes на вопросы Ubuntu относительно принятия сертификатов.
Маршрутизаторы подхватят конфигурацию и перегрузятся. В случае проблем
удалите файл known_hosts в папке .ssh. Все роутеры будут иметь ранее назначенные
37
grigoryev.victor@gmail.com http://vmg.pp.ua
имена R0, R1 … R7. Конфигурация топологии template восстановлена
2. В RouterOs есть пара команд export и import, позволяющая сохранять
конфигурацию в виде читаемого тестового файла команд и затем восстанавливать
их. Легко изменить вышеприведенные скрипты makeGetBackup и Restore в
скрипты makeGetExport и Import для экспорта и импорта конфигураций:
Скрипт makeGetExport:
#!/bin/bash
for ((i=$1;i<=$2;i++)) ;do
ssh admin@10.0.$i.1 "export compact file=E$i"
sftp admin@10.0.$i.1:/E*
done
Скрипт Import:
#!/bin/bash
for ((i=$1;i<=$2;i++)) ;do
scp E$i.rsc admin@10.0.$i.1:
ssh admin@10.0.$i.1 "import E$i"
done
Перед использованием скрипта Import следует в файлах команд E*.rsc
закомментировать команды назначения IP-адресов на tap-интерфейс ether7, так как
эти адреса не могут быть не назначены заранее. Роутеры не должны иметь никакой
конфигурации. Иначе вы не получите сообщения об успешном выполнении Script
file loaded and executed successfully. Скрипты
makeGetExport и Import
используются полностью аналогично скриптам из п.1.
О персональных компьютерах и свичах в топологиях
В качестве роутеров, персональных компьютеров (ПК) и свичей мы будем
использовать те же Mikrotik RouterOS. В топологии они будут различаться только
внешним видом (иконкой). При таком подходе роутер и ПК можно соединять друг с
другом как без свича, так и через свич.
Традиционно в GNS3 в качестве модели ПК используется отдельная
программа Virtual PC Simulator, которая моделирует 10 ПК. Модель ПК можно
соединять с роутером только через свич. Для этого модель ПК подключают по
протоколу UDP к облаку в GNS3. Облако соединяют со свичом в GNS3. И наконец,
свич соединяют с роутером.
ПК в Virtual PC Simulator потребляют меньше ресурсов, чем ПК в виде
RouterOS. Но при этом тратится более ценный ресурс – UDP порты, которые нам
крайне необходимы для организации многопользовательской работы.
Требования для сдачи работы
1. Довести до автоматизма процесс создания и настройки топологии first. При
этом следует продемонстрировать ввод команд в консоли RouterOS всеми
шестью способами.
2. На примере топологии first продемонстрировать умение работать с
командным интерфейсом и скриптами RouterOS
3. Для топологии template продемонстрировать два способа сохранения
резервной копии и восстановления из неё.
4. Предъявить консоль с закладками.(табами).
38
grigoryev.victor@gmail.com http://vmg.pp.ua
3. Настройка домашнего компьютера
Подключение с помощью протокола Openvpn
Работа c GNS3 в Windows
Удалённый доступ к Ubuntu
Установка Ubuntu
Установка Qemu
Установка GNS3
Установка tap-интерфейсов
Установка Winbox
Подключение из домашнего Ubuntu по Openvpn и удаленный доступ
Доступ к удалённому маршрутизатору из домашнего компьютера
39
40
41
42
44
46
46
47
48
49
Подключение с помощью протокола Openvpn
К виртуальным лабораториям кафедры организован доступ из Интернета с
помощью протокола Openvpn.
Вначале следует открыть один из сайтов,
расположенных на компьютере Lib, например eom.pp.ua. Далее проверьте
доступность компьютера
ping 212.3.125.93
Ответ от 212.3.125.93: число байт=32 время=51мс TTL=56
Ответ от 212.3.125.93: число байт=32 время=46мс TTL=56
Ответ от 212.3.125.93: число байт=32 время=46мс TTL=56
Ответ от 212.3.125.93: число байт=32 время=46мс TTL=56
Если время задержки будет более 300 мс, то у Вас плохой интернет в сторону
сети университета.
Проверим
наличие
службы
Openvpn
на
удалённом
хосте
telnet 212.3.125.93 8002
Пример отсутствия службы
Connecting To 212.3.125.93 ...Could not open connection to the host, on port 8002:
Connect failed
При наличии службы вы увидите чистый чёрный экран. При неудаче –
проверьте настройки своего фаервола.
Выкачайте OpenVPN с сайта производителя и установите его. Получите у
преподавателя конфигурацию и сертификаты. Отредактируйте конфигурацию и
подключитесь по OpenVPN к компьютеру Lib, следуя инструкции из первой
лабораторной работы. В файле конфигурации закомментируйте строку dev-node,
поставив перед ней #.
Другой конец Openvpn-соединения находится в Windows server 2008 R2 на
компьютере LIB и имеет адрес 192.168.3.1. Проверим связь с OpenVPN-сервером
на компьютере LIB
ping 192.168.3.1
Ответ от 192.168.3.1: число байт=32 время=51мс TTL=128
Ответ от 192.168.3.1: число байт=32 время=104мс TTL=128
Ответ от 192.168.3.1: число байт=32 время=238мс TTL=128
Ответ от 192.168.3.1: число байт=32 время=51мс TTL=128
39
grigoryev.victor@gmail.com http://vmg.pp.ua
Если пинги не идут, проверим маршруты. Если время задержки будет более
300 мс, то работа будет некомфортной.
Проверим маршруты
Route print
Должна быть строка маршрута в сторону Ubuntu (192.168.0.2)
192.168.0.2 255.255.255.255 … 192.168.3.1 192.168.3.105
Этот маршрут даёт вам Openvpn сервер. Если её нет, то добавьте маршрут
вручную
Route add 192.168.0.2 mask 255.255.255.25 192.168.3.1
Проверим связь с Ubuntu
ping 192.168.0.2
Делаем службу Openvpn, если она не создалась при инсталляции. Для этого с
помощью команды смены папки cd идём в папку Openvpn\bin и запускаем команду
runas /user:администратор "Openvpnserv -install"
Вводим пароль администратора. Открываем администрирование - службы,
запускаем службу openvpn в режиме автозапуска.
Теперь при включении
компьютера вы автоматически соединитесь с Ubuntu.
Работа c GNS3 в Windows
Можно работать c GNS3 и в Windows, выкачав инсталляцию с сайта gns3.net.
К сожалению, на многоядерных процессорах используется только одно ядро и
поэтому GNS3 в Windows работает медленнее, чем в Linux. В целом GNS3 в
Windows работает менее стабильно, чем в Linux.
Далее делаем так же, как и в Linux (см. предыдущую лабораторную работу).
Заходим в папку GNS3. Работаем с командной строкой. Создадим пустой образ
виртуального диска формата qcow2 размером 111mb:
qemu-img create -f qcow2 mikrotik-5.14.img 111M
В Qemu под Windows при старте маршрутизатора стартует и VNC –клиент. В
виртуальной машине Qemu из CD-образа mikrotik-5.14.iso установим RouterOS на
образ виртуального диска mikrotik-5.14.img:
qemu mikrotik-5.14.img -cdrom mikrotik-5.14.iso -boot d
Снова запускаем
qemu mikrotik-5.14.img
Настраиваем GNS3 так же, как мы это делали в Linux. Перетаскиваем c левой
панели на центральную панель пару маршрутизаторов Mikrotik и соединяем их
Ethernet-интерфейсы. Назначаем адреса и пингуем.
При желании можно настроить tap-интерфейсы. С помощью Оpenvpn (раздел
утилиты) создайте пару сетевых tap-интерфейсов. При этом разрешайте установку
непроверенных драйверов. Переименуйте существующий tap-интерфейс в Ovpn
(Пуск – Подключения). Далее следует переименовать новые tap-интерфейсы в tap0
и tap1. Назначьте на эти интерфейсы адреса : 10.0.0.2/24 и 10.0.1.2/24. Строка
подключения маршрутизатора к интерфейсу tap0 (tap1) в Qemu будет короче, чем в
Linux:
-net nic,vlan=7 -net tap,vlan=7,ifname=tap0 (-net nic,vlan=7 -net
tap,vlan=7,ifname=tap1).
40
grigoryev.victor@gmail.com http://vmg.pp.ua
Далее надо в маршрутизаторе определить какой
его ethernet-интерфейс
соответствует tap-интерфейсу. Для этого в VNC –клиенте нажимаем ctrl alt 2 и
вводим info network. Запоминаем MAC-адрес tap-интерфейса. Нажимаем ctrl alt 1 и
возвращаемся в консоль маршрутизатора. Набираем в маршрутизаторе int eth
print. Смотрим по MAC-адресу, какой из ethernet-интерфейсов соответствует tapинтерфейсу. Помня, что VNC –клиент захватывает мышь, освобождаем её
нажатием комбинации клавиш ctrl и alt .
В файле конфигурации OpenVPN следует убрать знак # в начале строки devnode и указать далее имя существующего tap-интерфейса Ovpn, который вы будете
использовать для OpenVPN.
Удалённый доступ к Ubuntu
Удалённый Ubuntu запущен по адресу labs.mikrotik.com.ua и внутри Hyper-V
по адресу 192.168.0.2. Проверим доступность удалённой системы Ubuntu
ping labs.mikrotik.com.ua (192.168.0.2)
Для передачи файлов воспользуйтесь протоколом FTP (File Transfer Protocol).
Например, вызовите cmd.exe и введите ftp labs.mikrotik.com.ua (192.168.0.2). Далее,
следуя инструкции из предыдущей работы, попробуйте выгрузить и загрузить
произвольный небольшой файл, скажем abc.txt.
Для удалённого доступа к командной строке широко используется протокол
SSH (Secure Shell). Для Windows есть уникальная утилита putty, выполняющая
функции Ssh-клиента. Putty входит в состав Gns3. Укажите в putty имя
пользователя, адрес labs.mikrotik.com.ua (192.168.0.2), протокол ssh
и
подключитесь к командной строке Ubuntu. Запустите второй экземпляр putty для
адреса 192.168.0.2 (labs.mikrotik.com.ua) и подключитесь к командной строке
второго Ubuntu. Обменяйтесь файлом abc.txt между двумя Ubuntu с помощью
протоколов FTP и ssh (scp).
Для удалённого доступа к рабочему столу Ubuntu следует выкачать с сайта
производителя программу NX Client for Windows и установить её. Запустим
мастер подключения nxclient в котором в поле session введём произвольное имя
сессии, в поле
host введём адрес удалённого Ubuntu labs.mikrotik.com.ua, в
следующем поле можно установить ADSL, в следующем окне установим менеджер
окон GNOME и создадим ярлык. Запустим сессию с помощью ярлыка NX client for
windows. Введём имя и пароль, согласно номера студента V, например для номера
D=1 login: student1 и password: student1. Нажимаем Login. Ждём соединения с
Ubuntu. Возможно, придётся ждать несколько минут и вы в Ubuntu.
Всегда держите открытыми окна пингов в сторону адресов лабораторий и
вашего провайдера Интернет. Если работа с nxclient станет некомфортной, то
смотрите на задержки в этих окнах. Если велика задержка (более 300 мс) к адресу
вашего провайдера, то вы что-то закачиваете или выкачиваете. Если велика
задержка в сторону 212.3.125.93, то стал плохим интернет в сторону сети
университета. Если велика задержка в сторону 192.168.0.2 – то перегружен
удалённый Ubuntu, 192.168.3.1 – перегружен Windows в ауд. 12/310.
Установка Ubuntu
Ubuntu
можно установить либо на реальный компьютер, либо на
виртуальную машину. В качестве виртуальной машины можно воспользоваться
41
grigoryev.victor@gmail.com http://vmg.pp.ua
бесплатными продуктами Vmware player фирмы Vmware или VirtualBox фирмы
Oracle.
Мы будем работать с виртуальной машиной Qemu и запускать под ней
операционные системы маршрутизаторов. Опыт показывает, что Qemu в Ubuntu
под виртуальной машиной (Vmware player или VirtualBox ) работает быстрее и
стабильнее, чем Qemu в реальном Windows. Однако даже на хорошем компьютере
Ubuntu под виртуальной машиной не справляется с сетевой топологии из 5-6
маршрутизаторов. Поэтому настоятельно рекомендуется поставить Ubuntu на
реальный компьютер.
Для работы с Ubuntu необходим хороший Интернет. Всё необходимое вам
программное обеспечение Ubuntu берёт из Интернета и инсталляции программных
продуктов в виде файлов или дисков (как в Windows) практически не применяются.
Хотя есть выход – см. конец раздела.
Инсталяцию Ubuntu можно взять с сайта производителя. Берите инсталяцию
10.0.43 с долговременной поддержкой (LTS-Long Term Support) (http://oldreleases.ubuntu.com/releases/lucid/ubuntu-10.04-desktop-i386.iso
или
http://oldreleases.ubuntu.com/releases/lucid/ubuntu-10.04-desktop-amd64.iso).
Она
уже
устоялась и более стабильна.
На сайте вы увидите инсталляции серверные и desktop (Рабочий стол). Нам
для работы понадобится рабочий стол. Поэтому остановимся на инсталляции
desktop. Desktop-Ubuntu может послужить вам как альтернатива Windows.
Серверная версия Ubuntu вообще не имеет графического интерфейса, а его
самостоятельная установка вызовет у вас затруднения.
Если у вас памяти больше, чем 4Г и вы поставите 32-разрядную систему, то
она увидит только 4Г памяти. 64-разрядная система увидит всю память. 64разрядная операционная система работает быстрее, чем 32-разрядная только для
64-разрядных приложений и при значительных объёмах памяти. При малых
объёмах памяти (меньше чем 4Г ) 32-разрядная операционная система работает
быстрее, чем 64-разрядная.
Количество 32-разрядных приложений значительно превышает количество
64-разрядных приложений.
Если у вас памяти не менее, чем 4Г, то берите для установки инсталяцию
desktop 64 разряда. Иначе берите для установки инсталляцию desktop 32 разряда
даже если у вас 64-разрядный процессор. Выбор за вами.
Надо минимум 2 свободных раздела диска и не обязательно главных. Один
раздел надо под корневую файловую систему и второй для свопинга (подкачки).
Для первого раздела будет достаточно 30-40Г. Для свопинга рекомендуется размер
равный удвоенному размеру памяти. Разделы можно либо создать на втором новом
чистом диске либо подвинуть существующие разделы на имеющемся диске и
создать новые. Перед передвижением разделов диске следует его
дефрагментировать. Для передвижения и создания разделов следует
воспользоваться утилитой Gparted из инсталляции Ubuntu в режиме LiveCD..
Будьте осторожны и обязательно перед передвижением разделов сохраните в
безопасном месте ценную для вас информацию.
42
grigoryev.victor@gmail.com http://vmg.pp.ua
Во время установки обязательно не забудьте выбрать ручной режим разбивки
диска. Будьте внимательны, установите Ubuntu в нужные разделы и не испортите
своего Windows7. При определении пользователя используйте короткий пароль,
так как далее придётся часто его вводить. Выберите режим входа в систему без
ввода пароля. В качестве места установки менеджера загрузок операционных
систем Grub выберите MBR (master boot record) нужного диска. После установки и
перегрузки компьютера вы увидите меню Grub, в котором вы сможете выбрать,
какую операционную систему грузить: Ubuntu или старую Windows7.
Установка Ubuntu на компьютер с WindowsXP требует дополнительных
настроек загрузки
После установки вы увидите графический экран. У вас в запасе ещё 6
текстовых экранов. Переключение между экранами осуществляется комбинацией
клавиш CtrlAltF1, CtrlAltF2 … CtrlAltF7. Комбинация CtrlAltF7 закреплена за
графическим экраном.
Сразу после установки и далее регулярно обновляйте операционную систему
через пункт верхнего меню System – administration-Update manager. Первое
обновление при хорошем Интернете длится около часа.
Добавим иконку запуска терминала в верхнюю панель (applicationsaccessories-terminal-правая кнопка мыши -add to panel). Нажмите на верхней панели
правую кнопку мыши, выберете add to panel и добавьте программы System monitor
и Windows selector .
Используйте в терминале возможности мыши для работы с буфером обмена
(copy-paste) и не забывайте, что в терминале можно создавать закладки (file-open
tab)
Сделаем краткий обзор команд linux. В отличие от Windows Linux различает
маленькие и большие буквы. Смена папок осуществляется командой cd ИмяПапки.
Родительская папка имеет имя «..», текущая - «.», а корневая –«/». Просмотр
содержимого папки выполняется командой ls или, если подробно ls –l. Последняя
команда выводит права доступа к файлам. Если вы имеете право доступа на
выполнения файла abc в текущей папке def, то запустить его на выполнение можно,
введя ./abc. Перейдя в родительскую папку (cd ..), нам для выполнения abc надо
будет ввести def/abc.
В Linux есть переменная окружения PATH. Посмотреть её значение можно
командой echo $PATH. Это значение содержит перечень папок. Все исполняемые
файлы из папок, указанных в PATH запускаются на выполнение без указания
полного пути к ним. Так, если бы файл abc лежал бы в такой папке, то для его
выполнения следовало бы просто ввести abc. Текущая папка при этом значения не
имеет.
Копирование (перемещение) файлов и папок осуществляется командами
cp (mv) источник приёмник
Используются шаблоны имён типа abc*cde*. Для работы с конкретным
файлом или папкой можно не вводить всего его имени, а попытаться подобрать
уникальный шаблон. Например, если в папке файл abc, является единственным
файлом, имя которого начинается с буквы «а», то вместо имени abc можно
использовать шаблон a*.
43
grigoryev.victor@gmail.com http://vmg.pp.ua
Установка софта производится через пункт меню system – administration synaptic package manager или из командной строки. Установите файловый
менеджер
sudo apt-get install mc
Команда sudo приводит к выполнению следующей за ней команды apt-get в
режиме суперпользователя root и потребует пароль, который вы указали при
инсталляции Ubuntu.
Для редактирования текстовых файлов пользуйтесь редактором nano
ИмяФайла или встроенным редактором файлового менеджера mc, который
вызывается нажатием клавиши F4.
Инсталляции программ для Ubuntu оформлены в виде .deb-файлов. При
инсталляции программ Ubuntu берёт из Интернета необходимые .deb-файлы и
хранит их в папке /var/cache/apt/archives. Если у вас плохой Интернет, то попросите
эту папку у того у кого Интернет хороший и кто полностью настроил Ubuntu
согласно этой лабораторной работе.
Можно выкачать нужные .deb-файлы и на сайте packages.ubuntu.com. На сайте
можно увидеть, от каких других deb-файлов зависит конкретный deb-файл.
Установка программы из .deb-файла осуществляется командой
sudo dpkg –i файл.deb
Если файл.deb зависит от других deb-файлов, то их также надо иметь под
рукой. Эти другие deb- файлы могут зависеть от третьих deb- файлов и т.д.
Программа apt-get install автоматически осуществляет поиск в Интернет всех
нужных deb-файлов..
Установка Qemu
Если вы ставите Ubuntu не в виртуальной машине, то проверьте, поддерживает
ли ваш процессор аппаратную виртуализацию. Для Intel
cat /proc/cpuinfo|grep vmx
Для Amd
cat /proc/cpuinfo|grep svm
Если вы увидите число строк более 0, то установите KVM (kernrl virtual
machine-виртуальную машину на уровне ядра)
sudo apt-get install kvm
Проверьте установку командой lsmod|grep kvm
Вы должны увидеть нечто подобное
kvm_intel
39416 0
kvm
245573 1 kvm_intel
Проверьте установку также командой modinfo kvm. Вы должны увидеть нечто
подобное
filename:/lib/modules/2.6.32-36-generic/kernel/arch/x86/kvm/kvm.ko
license:
GPL
author:
Qumranet
srcversion: 16E69C2C619C7884ECEDAE1
depends:
vermagic: 2.6.32-36-generic SMP mod_unload modversions 586
44
grigoryev.victor@gmail.com http://vmg.pp.ua
parm:
oos_shadow:bool
parm:
ignore_msrs:bool
Проверьте появление нового устройства kvm в папке /dev. ls /dev/kvm
Запустим qemu следующим образом
qemu -net udp
и увидим
Invalid -net type 'udp'
qemu не поддерживает UDP. Именно благодаря UDP в GNS организуется
связь маршрутизаторов между собой. То есть стандартная qemu нам не подходит.
На сайте http://www.gns3.net/download есть патчи для 13-й версии Qemu,
обеспечивающие поддержку
UDP. Скачиваем эти патчи, а также берём
соответствующую версию Qemu по ссылке http://wiki.qemu.org/download/qemu0.13.0.tar.gz
Установите утилиту patch
sudo apt-get install patch
Выбираем в верхней панели Places – Download и распаковываем два архива,
наведя на них курсор мыши и выбрав нужный пункт в контекстном меню. Патч
Qemu-0.13.0-mcast-udp.patch из архива помещаем в ту же папку, где находится
появившаяся после распаковки архива папка qemu-0.13.0. Патчим Qemu, набирая в
терминале
patch -p0 < qemu-0.13.0-mcast-udp.patch
Видим
(Stripping trailing CRs from patch.)
patching file qemu-0.13.0/Makefile.objs
…
(Stripping trailing CRs from patch.)
patching file qemu-0.13.0/block/raw-win32.c
Содержимое папки net (файлы udp.c и udp.h) из новой папки qemu0.13.0.patched помещаем в папку net папки qemu-0.13.0. Входим в папку qemu0.13.0 и выполняем команду
./configure --enable-kvm --target-list=i386-softmmu
Команда configure готовит qemu для построения (компиляции и компоновки).
Ключ enable-kvm включает поддержку kvm в qemu. Qemu поддерживает
практически все аппаратные платформы. Нам надо построить Qemu только для 32разрядных процессоров Intel. В этом нам поможет ключ --target-list=i386-softmm.
Команда не выполнится в виду отсутствия библиотеки zlib
Error: zlib check failed
Make sure to have the zlib libs and headers installed.
Ставим эту библиотеку
sudo apt-get install zlib1g-dev
Снова запускаем
./configure --enable-kvm –target-list=i386-softmmu
Видим
KVM support
yes
45
grigoryev.victor@gmail.com http://vmg.pp.ua
Строим qemu
make
и устанавливаем
sudo make install
Проверяем установку, запуская qemu
qemu -net udp
Видим
Segmentation fault
Мы не в видим сообщение о том, что qemu не поддерживает UDP. Снова
запускаем qemu. Видим желаемое сообщение
VNC server running on `127.0.0.1:5900'
Виртуальная машина Qemu общается с внешним миром через протокол VNCVirtual Network Computing. Запускаем VNC –клиент (applications-internet-remote
desktop viewer-connect-protocol VNC-host 127.0.0.1:5900-connect). Видим, что нет
загрузочного диска (boot disk) операционной системы. Его мы ещё не сделали.
Установка GNS3
Берём с http://sourceforge.net/projects/gns-3/files/GNS4/0.7.3 архив GNS3-0.7.4src.tar.gz. Не берите более новые версии. Будут проблемы совместимости GNS3 и
нашей нестандартной установки qemu. Распаковываем архив GNS3-0.7.4-src.tar.gz.
Входим в консоли в новую папку и устанавливаем GNS3
sudo python setup.py install
Инсталлятор создаст файл для запуска GNS3. Скорее всего, это будет файл
/usr/local/bin/gns3. Имя и расположение файла для запуска GNS зависит от версии.
Обратите внимание, куда инсталлятор поместит файл qemuwrapper.py. Он нам
понадобится позже.
Входим в консоли в папку, где находится файл для запуска GNS3 и запускаем
его, например ./gns3. Cкорее всего видим сообщение об отсутствии нужного
программного обеспечения Can't import Qt modules, PyQt is probably not
installed.
Осуществляем необходимую установку из командной строки
sudo apt-get install python-qt4
Теперь GNS3 запустится. Поместите в верхнюю панель ссылку на файл gns3
для запска GNS3.
Следуя предыдущим разделам, установите под qemu операционную систему
RouterOS и настройте GNS3.
Установка tap-интерфейсов
Для связи маршрутизаторов Mikrotik, работающих под Qemu с внешним
миром необходимо установить в Ubuntu tap-интерфейсы, которые есть в пакете
openvpn. Установите пакет вместе с пакетом bridge-utils . Затем меняем /etc/rc.local.
У вас tap-сеть 5.
sudo gedit /etc/rc.local
#!/bin/sh -e
ifs="00 01 02 03 04 05 06 07 10 11 12"
for i in $ifs; do
46
grigoryev.victor@gmail.com http://vmg.pp.ua
openvpn --mktun --dev tap5$i
brctl addbr br5$i
brctl addif br5$i tap5$i
ifconfig tap5$i up
ifconfig br5$i 10.5.$i.2 netmask 255.255.255.0 up
done
exit 0
Этот файл выполняется при старте Ubuntu. Объясним его работу. Команда
openvpn создаёт в цикле for tap-интерфейсы tap500, tap501 … tap512. Команда brctl
addbr создаёт мосты. Команда brctl addif добавляет tap-интерфейсы в мост. Первая
команда ifconfig поднимает tap-интерфейс. Следующая команда ifconfig назначает
IP-адресс мосту и поднимает его. Выполняем
sudo /etc/rc.local
Наберите в консоли ubuntu
brctl show|more
Видим, что tap-интерфейсы лежат в мостах.
Проверяем интерфейсы
ifconfig|more
Должны увидеть, что создались интерфейсы tap* и мосты br* с адресами
10.5.*.2 здесь * это 00 01 … 19
При переносе топологий между домашним и университетским компьютером
не забудьте в файле конфигурации сетевой топологии topology.net изменить имена
tap-интерфейсов согласно своему номеру D tap-сети.
Обеспечим проброс IP-пакетов, то есть превратим Ubuntu в маршрутизатор.
Для этого раскоментируйте строку #net.ipv4.ip_forward=1 в файле /etc/sysctl.conf
и перегрузитесь
Установка Winbox
Ставим wine для запуска исполняемых файлов Windows в Linux.
sudo apt-get install wine
Процесс занимает значительное время. Попутно установятся шрифты
TrueType. Скачиваем Winbox с сайта mikrotik.com. Даём всем права на его
выполнение
chmod a+x winbox.exe.
Поместите в верхнюю панель ссылку на этот файл. Запустите Winbox .
Подключение из домашнего Ubuntu по Openvpn и удаленный доступ
Можно из домашнего Ubuntu подключаться по Openvpn к университетским
Ubuntu по адресам 192.168.0.2 и 192.168.0.254 . Для подключения по Openvpn,
полученные файлы сертификатов следует положить в папку /etc/openvpn.
Отредактируйте файл client.ovpn, переименуйте его в /etc/client.conf и
закомментируйте строку dev-node tap. Старт (стоп)
службы оpenvpn
осуществляется командой sudo /etc/init.d/openvpn start (stop ). Командой ping
проверьте связь домашнего Ubuntu с адресами 192.168.0.2 и 192.168.0.254.
47
grigoryev.victor@gmail.com http://vmg.pp.ua
Если вы хотите получить доступ только к командной строке Ubuntu,
воспользуйтесь безопасным шелом ssh, например
ssh studentD@192.168.0.2, где D – ваш номер.
Установите на свой компьютер службы ftp и ssh
sudo apt-get install ftpd
sudo apt-get install openssh-server
Находясь внутри удалённой Ubuntu с адресом 192.168.0.2, откройте терминал
и в нём наберите
ftp Openvpn-адрес-вашего-компьютера.
Выгрузите и загрузите какой-нибудь файл.
Для передачи файлов часто используют безопасное копирование по протоколу
SSH с помощью команды scp. Например, поэкспериментируйте из дома с
командами
scp файл studentD@192.168.0.2:файл
scp studentD@192.168.0.2:файл файл
scp файл studentD@labs.mikrotik.com.ua:файл
scp studentD@ labs.mikrotik.com.ua:файл файл
Зайдите на labs.mikrotik.com.ua или Ubuntu компьютера Lib с помощью ssh и
снова поэкспериментируйте
scp файл name@адрес-вашего-компьютера:файл
scp nameD@адрес-вашего-компьютера:файл файл
Здесь name-имя с которым вы зашли в свой Ubuntu.
Для доступа к удалённому рабочему столу следует с сайта
www.nomachine.com из Интернета скачать nxclient и установить его
dpkg -i nxclient-*.deb
или воспользуйтесь в Ubuntu штатной программой qtnx – клиентом nx-сервера.
Заметим, что qtnx даже при сжатии jpeg, медленнее прорисовывает экран, чем
nxclient.
Настройте два ярлыка nxclient для доступа по адресам 192.168.0.2 и
labs.mikrotik.com.ua.
Доступ к удалённому маршрутизатору из домашнего компьютера
И для Windows и для Ubuntu имеется возможность из локального
компьютера подключаться к удалённому маршрутизатору Mikrotik, работающему
внутри qemu в Ubuntu на компьютере Lib. При плохой сети работа с удалённым
Linux-десктопом через NX клиента может быть некомфортной. Поэтому можно
ограничить роль NX только сбором и запуском топологии.
Если студента D имеет номер tap-сети V, то все адреса tap-интерфейсов
маршрутизаторов mikrotik должны лежать в этой сети
10.V.0.0/24. В
конфигурации Openvpn сервера на компьютере Lib для сертификата студента D
есть строка push "route 10.V.0.0 255.255.0.0". Поэтому после Openvpn-соединения
вы получаете маршрут в сторону своей tap-сети.
48
grigoryev.victor@gmail.com http://vmg.pp.ua
Выполняем на своём компьютере команду (после Openvpn соединения)
команду
netstat -r и видим (при V=2) строку
Для Windows
NetworkDest
Netmask
Gateway
Interface Metric
10.2.0.0
255.255.0.0 192.168.3.1 192.168.3.105
30
Для Ubuntu
Destination Gateway
Genmask Flags MSS Window irtt Iface
10.2.0.0
192.168.3.1 255.255.0.0 UG
00
0 tun0
Эти строки показывают, что от вас есть маршрут на tap-сеть 10.2.0.0/16. Здесь
192.168.3.1-адрес tap-интерфейса на Lib. Теперь внутри маршрутизатора Mikrotik
на удалённом Ubuntu
надо установить обратный маршрут на домашний
компьютер. Если tap интерфейс маршрутизатора Mikrotik имеет адрес 10.2.0.1, то в
консоли маршрутизатора надо дать команду
ip route add
dst-address=192.168.3.105/32 gateway=10.2.0.2
Здесь 10.2.0.2 - адрес tap-интерфейса в удалённой Ubuntu. 192.168.3.105— ваш
адрес в Openvpn. Мы увидим наш домашний компьютер из консоли Mikrotik на
удалённом Ubuntu: ping 192.168.3.105. Мы видим адрес маршрутизатора со своего
компьютера: Ping 10.2.0.1. Мы можем конфигурировать этот маршрутизатор,
запустив на своей машине Winbox или ssh (putty) и указав адрес 10.2.0.1.
Если связь совсем плохая и не удаётся войти на удалённый рабочий стол, то
можно стартовать топологию через командную строку, после соединения по ssh
export DISPLAY=:2000.0
gns3.pyw topology.net&,
предварительно изменив с помощью редактора nano в файле topology.net режим
запуска на автостарт autostart = True. Соединяётесь с консолями роутеров по ssh
(putty) и настраивайте их без графического интерфейса.
Конфигурация по
подключению к удалённому маршрутизатору Mikrotik,
работающему внутри qemu в Ubuntu в аудитории 12/211 (192.168.0.254) не
производилась.
Требования для сдачи работы
1. Соберите и запустите в Gns3 под Windows торологию first. Сравните время
загрузки по сравнению с Ubuntu.
2. Предъявить в виде скриншота доказательство подключения программ NX
Client for Windows и putty со свого домашнего компьютера к своему рабочему
столу в Ubuntu на компьютере lib (192.168.0.2) и в Ubuntu по адресу
labs.mikrotik.com.ua. Скриншоты поместить на рабочие столы тех компьютеров, на
которые вы удалённо зашли. Пример скриншота для адреса 192.168.0.2 приведен
на рис. 3.1
3. Предоставить в виде скриншота доказательство того, что вы со своего
домашнего компьютера зашли через winbox в маршрутизатор Mikrotik в топологии
first на компьютере Lib. На скриншота должен присутствовать вывод команды
ipconfig домашнего компьютера (рис. 3.2).
49
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 3.1 Пример скриншота. Скриншот доказывает подключения программ NX Client for
Windows и putty со своего домашнего компьютера к своему рабочему столу в Ubuntu по
адресу 192.168.0.2 (1). Пользователь p (2). Адрес домашнего компьютера 192.168.1.2 (3).
OpenVPN-адресс равен 192.168.3.100 (4). Имя Ubuntu – u10034bbb071 (5). Фотография (6).
Рабочий стол домашнего компьютера (7).
4. Запустить топологию first на компьютере Lib с помощью ssh (putty) без
использования NX-клиента. Со своего домашнего компьютера зайдите в консоли
роутеров с помощью ssh (putty).
5. Ни разу не воспользовавшись NX-клиентом для Ubuntu на компьютере Lib:
а. Создайте новую топологию first1, перенеся только файл topology.net
топологии first в новую папку first1. Создайте в папке first1 папку working.
б. Запустить топологию first1 с помощью ssh (putty) без использования NXклиента. Настройте tap-интерфейсы роутеров через команду
telnet 127.0.0.1 ПортКонсоли,
которую запускайте в окне ssh (putty).
в. Со своего домашнего компьютера зайдите через winbox в маршрутизатор
Mikrotik в топологии first1. Настройте топологию first1 так же как и топологию
first.
50
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 3.2
51
grigoryev.victor@gmail.com http://vmg.pp.ua
4. Настройка типовой сети
DNS
DHCP
NAT
ARP
Фаервол (Firewall)
Ограничение скорости
Web-прокси
HotSpot
55
56
58
59
60
61
61
64
Собираем топологию, соединив указанные на рис.4.1 сетевые
порты.
Добавьте к топологии заметки так, чтобы она выглядела так же, как и рисунок.
Рис.4.1. Топология
Обеспечим возможность конфигурации роутеров с использованием tapинтерфейсов. Для этого в каждом роутере добавим опции Qemu
Client: -net nic,vlan=6 -net tap,script=no,downscript=no,vlan=6,ifname=tapV00
Station -net nic,vlan=6 -net tap,script=no,downscript=no,vlan=6,ifname=tapV01
AP
-net nic,vlan=6 -net tap,script=no,downscript=no,vlan=6,ifname=tapV02
Internet -net nic,vlan=6 -net tap,script=no,downscript=no,vlan=6,ifname=tapV03
где V – номер вашей tap-сети.
Во избежание конфликтов с другими студентами изменим в файле topology.net
порты для консолей (строка console=Порт) 3000+D*100
Client:
3000+D*100
Station
3000+D*100+1
AP
3000+D*100+2
Internet
3000+D*100+3
где D – ваш номер.
Запустим топологию. После запуска всех роутеров откроем в терминале
Ubuntu четыре закладки и в каждой из них откроем консоль роутера командой
(D=7)
telnet 127.0.0.1 3700
…
telnet 127.0.0.1 3703
После назначения IP-адресов на тап-интерфейсы маршрутизаторов вместо
telnet используйте ssh, как описано в разделе 2 (см. рис. 2.5).
Назначим имена маршрутизаторам. Например, для роутера Client введём
команду
system identity set name= Client
Скопируйте эту команду в карман, вставьте в консоль остальных роутеров,
исправьте имя и выполните.
52
grigoryev.victor@gmail.com http://vmg.pp.ua
Командой inrerface print проверьте, что каждый роутер увидел tap-интерфейс,
как интерфейс ether7. То есть интерфейсов должно быть семь. Проверим, что
роутеры видят соседей.
[admin@Station] > ip neighbor print
# INTERFACE ADDRESS MAC-ADDRESS IDENTITY VERSION BOARD
0 ether2
52:54:00:12:34:5C
Client 5.14
x86
1 ether1
52:54:00:12:34:5C
Station 5.14
x86
2 ether2
00:AA:00:9F:F3:00
Client 5.14
x86
3 ether6
00:AA:00:6C:EE:05
AP
5.14
x86
4 ether7
00:00:AB:39:92:00
Station 5.14
x86
Роутер Station видит роутер Client через ether2 (e1) и роутер AP через ether6
(e51) (см. рис.4.1).
Назначим IP-адреса на интерфейс ether7 роутеров.
Client 10.V.0.1/24
Station 10.V.1.1/24
AP
10.V.2.1/24
Intrernet
10.V.3.1/24
где V – номер вашей tap-сети.
Откроем закладку AP в консоли Ubuntu. Закрепим знания командного
интерфейса RouterOS. Для получения справки нажмите табуляцию. Более
подробная справка выводится после нажатия знака ?. . Подменю выведутся синим
цветом, а команды - красным. При двойном нажатии табуляции вы также увидите
команды и операторы встроенного языка скриптов. Для входа в подменю надо
набрать его имя. Для входа в более низкие уровни подменю следует набирать через
пробел имена меню, идущие к цели. Для перехода в родительское меню
используют .., а для перехода в корневое меню - /. например
[admin@AP] > ip address
[admin@AP] /ip address>
[admin@AP] /ip address> ..
[admin@AP] /ip> address
[admin@AP] /ip address> /
[admin@AP] >
Назначим адрес (V=0)
[admin@AP]>ip address add address=10.0.2.1/24 interfac=ether7
Меню и команды определяются первыми уникальными символами их
названий, поэтому следующий ввод эквивалентен предыдущему
[admin@AP ] > ip ad ad ad= 10.0.2.1/24 in=ether7
failure: already have such addres
Routeros путём смены цвета даёт знать, когда он понял очередную порцию
ввода и можно переходить к новой порции ввода. Команды можно вводить из
разных уровней подменю
[admin@AP] > ip
[admin@AP] /ip>ad ad ad=10.0.2.1/24 in=ether7
failure: already have such addres
Покажем как редактировать введённые команды. Вначале удалим команду.
53
grigoryev.victor@gmail.com http://vmg.pp.ua
Нам надо знать её номер.
[admin@AP] >ip address print
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS
NETWORK
INTERFACE
0 192.168.1.103/24 192.168.1.0 ether5
Её номер # равен 0. Удаляем команду.
[admin@AP] >ip ad rem 0
Проверяем
[admin@AP] >ip address print
Введём команду с неправильным именем интерфейса
[admin@AP ] > ip ad ad ad= 10.0.2.1/24 in=ether4
Поменяем имя интерфейса на ether7. Нам надо знать номер неправильной
команды. [admin@AP] >ip address print
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS
NETWORK
INTERFACE
0 192.168.1.103/24 192.168.1.0 ether4
Меняем, указывая номер 0
[admin@AP ] > ip ad set 0 in=ether7
Установите адреса в остальных роутерах. Для каждого роутера проверьте
связь с Ubuntu , например, при V=0
[admin@Client] >ping 10.0.0.2
…
[admin@Intrernet] >ping 10.0.3.2
Из Ubuntu проверьте связь с адресами 10.0.0.1, 10.0.1.1, 10.0.2.1 10.0.3.1
роутеров.
Рис.4.2. Экземпляр winbox
Откроем winbox. Вводим в поле ConnectTo адрес 10.0.0.1 роутера Client,
нажимаем Save и Connect. Winbox должен зайти в роутер Client. Запускаем ещё
три экземпляра winbox и аналогично подключаемся к остальным роутерам.
Запустив пятый экземпляр winbox вы должны увидеть то, что изображено на
54
grigoryev.victor@gmail.com http://vmg.pp.ua
рис.4.2 (V=0)
Если вы установили в верхнюю панель Ubuntu ярлык для запуска селектора
окон, то этот селектор должен выглядеть приблизительно так (рис.4.3)
Рис.4.3. Селектор окон
В GNS интерфейс e0 роутера AP соединён с интерфейсом e0 роутера Internet.
Интерфейс e0 в GNS соответствует интерфейсу ether1 внутри роутеров. Назначьте
адреса 1.1.1.2/24 и 1.1.1.1/24 на этот интерфейс ether1 роутеров AP и Internet,
соответственно. Тем самым мы обеспечили связь по протоколу IP. Проверьте связь
с помощью команды пинг в winbox (Tools->Ping).
DNS
Сделаем роутер AP сервером имён DNS. Для этого выберем IP->DNS,
установим галочку Allow remote requests и в поле Servers введём адрес 1.1.1.2.
Далее нажимаем кнопку Static и задаём две строки
РоутерName
Addess
AP
a.in
1.1.1.2
Internet
i.in
1.1.1.1
Открываем в winbox терминал и проверяем
[admin@AP] > ping i.in
HOST
SIZE TTL TIME STATUS
1.1.1.1
56 64 0ms
1.1.1.1
56 64 0ms
Ctrl+c
sent=2 received=2 packet-loss=0% min-rtt=0ms avg-rtt=0ms max-rtt=0ms
Сделаем роутер Internet клиентом сервера имён DNS. Для этого в его окне
winbox выберем IP->DNS и в поле Servers введём адрес 1.1.1.2 нашего сервера
имён DNS. Открываем в winbox терминал и проверяем
[admin@Internet] > ping a.in
HOST
SIZE TTL TIME STATUS
1.1.1.2
56 64 1ms
1.1.1.2
56 64 0ms
Ctrl+c
sent=2 received=2 packet-loss=0% min-rtt=0ms avg-rtt=0ms max-rtt=1ms
55
grigoryev.victor@gmail.com http://vmg.pp.ua
DHCP
Функции DHCP-сервера далеко не исчерпываются раздачей адресов по
запросу от DHCP-клиентов. DHCP-сервер может снабдить клиентов адресами
шлюза, сервера имён и другой информацией. При настройке DHCP-сервера надо
указать: имя интерфейса, через который он будет принимать запросы; IP-сеть и
диапазон адресов из которого он будет раздавать адреса; шлюз, который будет
назначен клиентам и т. д.
В роутере AP назначьте на интерфейс e5 (ether6) адрес 10.9.1.254/24. Сделаем
так, чтобы роутер Station получал адрес динамически. Для этого сделаем роутер AP
DHCP-сервером. Выбираем IP->DHCP server->DHCP Setup.
Далее в серии появляющихся окон определяем или соглашаемся с
предложением
DHCP Server Interface ether6
-выбираем и Next
DHCP address space
10.9.1.0/24
-соглашаемся и Next
Gateway for DHCP network 10.9.1.254
-соглашаемся и Next
Addresses to give out 10.9.1.1-10.9.1.253 -соглашаемся и Next
DNS servers 1.1.1.2
-соглашаемся и Next
Lease time
-соглашаемся и Next
Получаем сообщение об успешном завершении
Роутер Station сделаем DHCP-клиентом. Для этого в winbox этого роутера
выберем IP->DHCP Client и нажмём +. В новом окне в списке Interface выберем
ether6 и нажмём Ok. В списке адресов IP->Adresses появится новый адрес
10.9.1.253 с буквой D (динамический). Если этого не случится, то следует перейти
к окну списку интерфейсов, отключить, а затем включить интерфейс ether6 (Disable
затем Enable в контекстном меню). Роутер Station получил также маршрут по
умолчанию на 10.9.1.254 . Посмотрите его. Для этого выберите IP->Routes или
наберите в терминале
[admin@Station] > ip route pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
# DST-ADDRESS
PREF-SRC
GATEWAY
DISTANCE
0 ADS 0.0.0.0/0
10.1.1.254
0
1 ADC 10.9.1.0/24
10.9.1.253
ether6
0
Роутер Station стал клиентом имён DNS. Выберем IP->DNS и в поле Servers
увидим два адреса 1.1.1.2 и 10.9.1.254 нашего сервером имён DNS AP. Проверим
[admin@Station] > ping a.in
HOST
SIZE TTL TIME STATUS
1.1.1.2
56 63 7ms
…sent=3 received=3 packet-loss=0% min-rtt=5ms avg-rtt=6ms
Роутер Station видит роутер AP. Однако роутер Station не видит роутер Internet
(i.in), так как последний не имеет маршрута в сторону первого.
В GNS интерфейс e0 роутера Client соединён с интерфейсом e1 роутера Station.
Интерфейс e0 в GNS соответствует интерфейсу ether1 в RouterOS, а e0 – ether2.
Назначим адреса 192.168.88.2/24 и 192.168.88.1/24 на этот интерфейсы ether1 и
56
grigoryev.victor@gmail.com http://vmg.pp.ua
ether2 роутеров Client и Station, соответственно. Тем самым мы обеспечили связь
по протоколу IP. Проверьте связь с помощью команды пинг (Tools->Ping).
Назначим роутеру Client маршут по умолчанию
[admin@Client] > ip route add gateway=192.168.88.1
Проверим связь, постепенно увеличивая "расстояние" до интерфейсов
удалённых роутеров.
[admin@Client] >ping 192.168.88.1 - нормально в сторону Station
[admin@Client] >ping 10.9.1.253 - нормально в сторону Station
[admin@Client] >ping 10.9.1.254 -timeout в сторону AP
Неудача обусловлена отсутствием в роутере AP обратного маршрута в
сторону сети 192.168.88.0/24.
[admin@AP] > ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#
DST-ADDRESS
PREF-SRC
GATEWAY
DISTANCE
0 ADC 1.1.1.0/24
1.1.1.2
ether1
0
1 ADC 10.0.2.0/24
10.0.2.1
ether7
0
2 ADC 10.9.1.0/24
10.9.1.254
ether6
0
Установим в роутере AP обратный маршрута по умолчанию в сторону
интерфейса ether6 (e5) роутера Station. Добьёмся того, чтобы DHCP-сервер AP
выдавал роутеру Station всегда постоянный адрес 10.9.1.1. Иначе мы не сможем
прописать маршрут. В роутере AP выберем в winbox IP->DHCP Server->Leases.
Дважды щёлнем мышью на единственной строке. В открывшемся окне изменим
адрес на 10.9.1.1 и нажмём кнопку Make Static. Изменим заданный по умолчанию
Client ID. Перейдём к роутерe Station. В DHCP-клиенте на роутере Station следует
задать такой же Client ID. Отключим и включим интерфейс ether6. В списке
адресов IP->Adresses роутера Station появится адрес с буквой D (динамический) и
заданным значением 10.9.1.1.
Замечание. Убедитесь, что MAC-адрес в настройках DHCP-сервера –LeaseseGeneral совпадает с MAC-адресом интерфейса ether6 роутера Station (DHCPклиента).
Перегрузите топологию и убедитесь, что роутер
Station динамически
получает адрес 10.9.1.1 на интерфейсе ether6.
Установим роутеру AP маршут по умолчанию
[admin@AP] > ip route add gateway=10.9.1.1
Проверим связь
[admin@AP] >ping 192.168.88.2
-нормально в сторону Client
[admin@Client] >ping 10.9.1.1
-нормально в сторону Station
[admin@Client] >ping 10.9.1.254
-нормально в сторону AP
[admin@Client] >ping 1.1.1.2
-нормально в сторону AP
Роутер Client сделаем клиентом имён DNS. Выберем IP->DNS и в поле Servers
введём адрес 10.9.1.254 нашего сервера имён DNS AP. Проверим
57
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@Client] > ping a.in - номально в сторону AP
HOST
SIZE TTL TIME STATUS
1.1.1.2
56 63 1ms
1.1.1.2
56 63 1ms
sent=2 received=2 packet-loss=0% min-rtt=1ms avg-rtt=1ms max-rtt=1ms
[admin@Client] > ping i.in - timeout в сторону Internet
HOST
SIZE TTL TIME STATUS
1.1.1.1
timeout
1.1.1.1
timeout
sent=2 received=0 packet-loss=100%
Пакет пинга дойдёт до назначения. Адреса источника и приёмника
поменяются местами. Пакет не сумеет вернуться, так как на роутере Internet нет
обратного маршрута на сеть 192.168.88.0/24 роутера Client.
Всё нормально, если мы примем такую модель: Роутер Internet представляет
весь Интернет. Роутеры Client и Station лежат во внутренней сети. Роутер AP
является шлюзом для выхода в Интернет и принадлежит двум сетям - внутренней
и Интернет.
NAT
NAT (от англ. Network Address Translation — «преобразование сетевых
адресов»). Добьемся, чтобы роутер Client видел маршрутизатор Internet. Для этого
на роутере AP у каждого исходящего в сторону роутера Internet пакета надо
поменять адрес источника на адрес, который есть в таблицах маршрутов роутера
Internet, то есть на адрес интерфейса ether1 AP 1.1.1.2. Каждая такая подмена
записывается в таблицу преобразований. Когда пакет возвращается, производится
поиск преобразования в таблице и осуществляется обратная замена адреса.
Принимаются меры для обеспечения уникальности результата поиска в таблице
преобразований. Так при преобразовании TCP/UDP-пакета производится замена
порта источника на новый порт из списка свободных. Для организации доступа из
внутренней сети в Интернет настроим на роутере AP преобразование адресов
источника
[admin@AP] > ip firewall nat add chain=srcnat action=masquerade
Теперь имеем доступ из внутренней сети в Интернет
[admin@Client] > ping i.in
HOST
SIZE TTL TIME STATUS
1.1.1.1
56 62 5ms
1.1.1.1
56 62 2ms
sent=7 received=7 packet-loss=0% min-rtt=1ms avg-rtt=1ms max-rtt=5ms
Роутеры во внутренней сети не видны из Интернета. Нет маршрута уже в сторону
ближайшего внутреннего адреса
[admin@Internet] > ping 10.9.1.254
HOST
SIZE TTL TIME STATUS
no route to host
Маршрутизаторы
во внутренней сети не видны из Интернета. Для
58
grigoryev.victor@gmail.com http://vmg.pp.ua
организации доступа из Интернета к роутеру Client во внутренней сети добавьте на
пограничном роутере AP ещё один адрес 1.1.1.3/24 на интерфейсе ether1 и
осуществите преобразование адресов приёмника из адреса 1.1.1.3 в адрес
192.168.88.2 роутера Client
[admin@AP]>ip firewall nat add chain=dstnat dst-address=1.1.1.3 action=dst-nat toaddresses=192.168.88.2
Проверим. Зайдём удалённо из роутера Internet по адресу 1.1.1.3 (AP)
[admin@Internet] > system telnet 1.1.1.3
Trying 1.1.1.3...
Connected to 1.1.1.3.
Escape character is '^]'.
MikroTik v5.14
Login: admin
Password:
MikroTik RouterOS 5.14 (c) 1999-2012
http://www.mikrotik.com/
[admin@Client] >
То есть мы набрали адрес роутера AP, а вошли в удалённую консоль роутера
Client. Для выхода из консоли нажмите Ctrl+d.
В качестве упражнения удалите оба правила преобразования адресов и
повторите настройку с помощью утилиты winbox.
ARP
ARP (Address Resolution Protocol - протокол разрешения адреса) соединяет
вместе IP-адрес удалённого клиента с его MAC-адресом. ARP работает с ARPтаблицей, содержащей IP-адрес, MAC-адрес и интерфейс. Для определения
Ethernet-адреса, соответствующего IP-адресу АДРЕС, сетевое устройство
обращается в свою ARP-таблицу. Если такого соответствия нет, то система шлёт
широковещательный ARP-запрос следующего содержания: "Устройство, имеющее
адрес АДРЕС, сообщи свой MAC-адрес". Устройство с адресом АДРЕС в ARPответе сообшает свой MAC-адрес. Оба устройства автоматически добавляют в
свою ARP-таблицу новую строку. Для повышения сетевой безопасности можно
запретить такое автоматическое добавление и создавать строки ARP-таблицы
вручную. Тогда сетевое устройство после самостоятельной смены своего IP-адреса
не сможет иметь доступа во внешний мир.
На интерфейсе ether2 роутера Station запретим автоматическое добавления
строк в ARP-таблицу
[admin@Station] > int ethernet set ether2 arp=reply-only
Определим MAC-адрес интерфейса ether1 на роутере Client
[admin@Client] > interface ethernet print where name =ether1
# NAME
MTU MAC-ADDRESS
ARP
0 R ether1
1500 00:AA:00:BA:7F:00 enabled
Запоминаем MAC-адресс и добавляем в роутере Station строку в ARP-таблицу
[admin@Station]>ip arp add address=192.168.1.2 mac-address=
00:AA:00:BA:7F:00 interface=ether2
59
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@Station] > ip arp print
Перезапустим интерфейс ether2 на Station
[admin@Station] >interface ethernet disable ether2
[admin@Station] >interface ethernet eneable ether2
Убедимся, что ARP работает
[admin@Client] >ip arp print
[admin@Client] >ping 192.168.88.1 - успех
[admin@Client] >ip arp print
Сменим адрес
[admin@Client] > ip ad set 1 address=192.168.88.3/24
[admin@Client] > ping 192.168.88.1
HOST
SIZE TTL TIME STATUS
192.168.88.1
timeout
Восстановим адрес
[admin@Client] > ip ad set 1 address=192.168.88.2/24
[admin@Client] > ping 192.168.88.1 - удача
Уберём настройки ARP
[admin@Station] > ip arp print
Flags: X - disabled, I - invalid, H - DHCP, D - dynamic
# ADDRESS
MAC-ADDRESS
INTERFACE
1 192.168.88.2 00:AA:00:BA:7F:00 ether2
[admin@Station] > ip arp rem 1
[admin@Station] > interface ethernet set ether2 arp=enabled
Перезапусти интерфейс ether2 на Station
Фаервол (Firewall)
Фаервол (брандмауер) защищает сетевое устройство от нежелательного
доступа. Это осуществляется путём создания правил в фильтре фаервола и
средствами преобразования адресов NAT. Правила работают по принципу Если-То
и упорядочены в цепи (сhains). Имеются предопределённые цепи и цепи,
определённые пользователем. Существуют такие предопределённые цепи: input
(контролирует входящие к роутеру пакеты), output (выходящие из роутера пакеты)
и forward (проходящие пакеты)
Подсоединимся к консоли роутера Station. Разрешим входящие пакеты с
адресом источника 192.168.88.2 роутера Client
[admin@Station] > ip firewall filter add chain=input src-address=192.168.88.2
action=accept
и запретим остальные входящие пакеты
[admin@Station] > ip firewall filter add chain=input action=drop
Каждый новый пакет проверяется по очереди всеми правилами. Если пакет
удовлетворяет условию правила, то выполняется указанное в правиле действие и
дальнейшие
правила не выполняются, если только не указано действие
passthrough
Winbox, подключенный к Station по запрещённому адресу, перестанет
функционировать и роутер Station станет недоступен из роутера AP
60
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@AP] > ping 10.9.1.1
HOST
SIZE TTL TIME STATUS
10.1.1.1
timeout
Удалим правила фаервола
[admin@Station] > ip firewall filter pr
Flags: X - disabled, I - invalid, D - dynamic
0 chain=input action=accept src-address=192.168.88.2
1 chain=input action=drop
[admin@Station] > ip firewall filter rem 0,1
Доступ восстановлен.
На роутере Station запретим проходящие пакеты с TCP-портом назначения
равным 23 (telnet)
[admin@Station]>ip firewall filter add chain=forward action= drop
protocol=tcp dst-port=23
Зайдём на роутер Client и будем с помощью telnet последовательно
подключаться к роутерам Internet (1.1.1.1), AP (1.1.1.2), AP (10.9.1.254) и Station
(Station)
[admin@Client] > system telnet 1.1.1.1 - неудача
[admin@Client] > system telnet 1.1.1.2 - неудача
[admin@Client] > system telnet 10.9.1.254 - неудача
[admin@Client] > system telnet 10.9.1.1
Trying 10.1.1.1...
Connected to 10.1.1.1.
Escape character is '^]'.
Успех. Выход - CtrlD. Удалите правила фаервола.
Ограничение скорости
Самый простой способ ограничить скорость загрузки и выгрузки состоит в
использовании простых очередей (Simple Queue). При этом важен порядок правил
очередей. Создадим на роутере Station ограничение для трафика от сети
192.168.88.0/24 к адресу 10.9.1.1: 65 Кбит/с на выгрузку и 128 Кбит/с на загрузку
admin@Station]
>
queue
simple
add
name="queue1"
targetaddresses=192.168.88.0/24
dst-address=10.9.1.1/32
direction=both
maxlimit=64k/128k
Проверим. В winbox на роутере client запустим тестер полосы пропускания
Tools-Bandwidth Test (рис.4.4).
Трафик можно также посмотреть, выбрав в winbox меню Interfaces. Более
подробную информацию увидим, вызвав окно для интерфейса ether1 и в нём
активировав вкладку Trafic (рис.4.5). Нажав на кнопку Torch, мы также увидим
скорости передачи.
Web-прокси
Настроим в Ubuntu Интернет. Для этого в Ubuntu в пункте меню верхней
панели System-Preferences-Network Proxy укажем адрес 212.3.125.178 и порт 8080
прокси-сервера университета. Проверим настройки, зайдя в Firefox на сайты i.ua и
ya.ru.
61
grigoryev.victor@gmail.com http://vmg.pp.ua
Запустим qemuwrapper для своего порта. Создадим топологию из одного роутера. Добавим роутеру два tap-интерфейса, введя в GNS3 для него в поле Qemu
options строку
Рис.4.4. Тестер полосы пропускания
-net nic,vlan=6 -net tap,vlan=6,script=no,downscript=no,ifname=tapV00
-net nic,vlan=7 -net tap,vlan=7,script=no,downscript=no,ifname=tapV01
где V-номер вашей tap-сети. Строку вводите тщательно без ошибок. Лучше эту
строку определить путём редактирования файла topology.net. Запускаем топологию. Проверим, что появилось два новых интерфейса
[admin@MikroTik] > int eth pr
6 R ether7
1500 52:54:00:12:34:5C enabled
7 R ether8
1500 52:54:00:12:34:5D enabled
62
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис.4.5
Уточним, к какому из tap-интерфейсов относится интерфейс ether7 и ether8.
Для этого запустим VNC-клиент, узнав порт в консоли Qemuwrapper. Нажимаем
комбинацию клавиш CtrlAlt2. Вводим команду network info и видим
Сравнивая MAC-адреса, делаем вывод, что ether7 это tap000, а ether8 это
tap001.
Назначим адреса (тап-сеть 0)
[admin@MikroTik]>ip add add addr=10.0.0.1/24 interface=ether7
[admin@MikroTik]>ip add add addr=10.0.1.1/24 interface=ether8
Настроим интерфейс с адресом 10.0.0.1 для доступа роутера в Интернет через
шлюз 10.0.0.2.
[admin@MikroTik] > ip route add gateway=10.0.0.2
Проверим доступность прокси-сервера университета
[admin@MikroTik] > ping 212.3.125.178
Второй интерфейс с адресом 10.0.1.1 настроим как новый прокси для хост-машины Ubuntu. Для этого запустим winbox по адресу 10.0.0.1 и сделаем роутер прокси-сервером. Выберем IP – WebProxy. В закладке General окна WebProxySetting
63
grigoryev.victor@gmail.com http://vmg.pp.ua
установим галочку Enabled. Укажем Parent Proxy 212.3.125.178 и Parent Proxy Port
8080.
Укажем адрес 10.0.1.1 и порт 8080 в настройках прокси хост-машины Ubuntu.
Зайдите на пару сайтов в Firefox и понаблюдайте соединения прокси-сервера
роутера в окне IP->WebProxy->Connections.
Блокируем сайт i.ua для Ubuntu. Для этого выбираем в winbox IP - WebProxyAccess и далее нажимаем на +. В появившемся окне WebProxyRule в поле Dst.Host
вводим i.ua. Выбираем action равным deny. Вводим i.ua в адресной строке Firefox и
видим
ERROR: Forbidden
While trying to retrieve the URL http://i.ua/:
Access Denied
Your cache administrator is webmaster.
Generated Fri, 16 Mar 2012 17:01:38 GMT by 10.0.1.1 (Mikrotik HttpProxy)
Если мы хотим перенаправлять запросы на другой сайт, то в поле Redirect
окна WebProxyRule вводим название сайта, например ya.ru. Вводим i.ua в адресной строке Firefox и попадаем на сайт ya.ru.
Выбирая System-Logging-Rules- + - Topics – WebProxy, включаем
протоколирование работы прокси-сервера роутера, которое можно увидеть из
пункта меню Log после захода в Firefox на какой-либо сайт.
HotSpot
HotSpot - это средство для быстрого подключения к Интернет. Перед
доступом в публичную сеть HotSpot проводит аутентификацию и ведение учёта
клиентов. HotSpot используется в открытых точках доступа, Интернет-кафе,
аэропортах, университетских городках и т.д. Пользователь получает динамический
адрес и права доступа. Ему определяются доступные сайты и скорость доступа.
Для настройки HotSpot роутер должен иметь внутренний и внешний
(публичный) адрес, доступ к серверу имён DNS и хотя бы одного HotSpotпользователя.
Установка HotSpot проста и подобна установке DHCP-сервера.
Так как DHCP-клиент в Ubuntu требует root-привилегий, то проведём
урезанную настройку Hotspot без использования DHCP и DNS.
В winbox выбираем IP-Hotspot-HotspotSetup и последовательно определяем:
Hotspot interface: ether8; Local Address of Network: оставляем 10.0.1.1/24, галочку
Masquarade Network не ставим; Address of Network - оставляем 10.0.1.2-10.0.1.254;
Select Certificate –None; IP Address of SMTP server - оставляем 0.0.0.0; DNS Server
-пропускаем; DNS name – пропускаем; в окне Create Local HotSpot User оставляем
User admin и без пароля. Видим окно Setup has completed successfully.
Пытаемся войти на какой-либо сайт. Доступ в интернет теперь паролирован.
Вводим имя admin без пароля и попадаем в Интернет. Для выхода из HotSpot
вводим адрес http://10.0.1.1
Hotspot автоматически генерирует динамические правила для фаервола
(рис.4.6)
Во вкладках окна IP-Hotspot можно увидеть подключенных клиентов, их
адреса и другую информацию. Вкладка Walled-Garden позволяет настроить доступ к
64
grigoryev.victor@gmail.com http://vmg.pp.ua
сетевым ресурсам (www, Telnet, SSH, Winbox ….) без HotSpot –авторизации.
Разрешите доступ к сайту ya.ru без запроса имени и пароля. Вкладка IP-binding
позволяет определённым клиентам обходить HotSpot.
Рис.4.6. Правила для фаервола
и NAT (рис.4.7)
Рис.4.7. Правила для NAT
Пользователь принадлежит профилю. Вкладка Hotspot user profile позволяет
установить ограничение скорости, входные и выходные фильтры и т.д.
1.
2.
Требования для сдачи работы
Для топологии на рис.4.1 продемонстрируйте настройки DNS, DHCP,
NAT. Покажите работу с ARP и Firewall и умение ограничивать трафик.
Для топологии из одного роутера продемонстрировать работу Webпрокси и HotSpot.
65
grigoryev.victor@gmail.com http://vmg.pp.ua
5. Ethernet-мосты. EoIP - Ethernet через IP VPN уровня 2
Мосты
EoIP
VPN уровня 2 через NAT
66
69
73
Мосты
Mikrotik RouterOs поддерживает объединение Ethernet-портов в мост.
Объединяя несколько Ethernet-портов в мост, мы получим на этих портах
программный коммутатор второго уровня или свич.
Tap-интерфейсы на стороне Ubuntu лежат в мостах. Ubuntu и RouterOs
обмениваются информацией о мостах. Сделайте копию bridge1 топологии template
из раздела 2, загрузите её в GNS3 и стартуйте только маршрутизатор R0. С
помощью команды brctl show посмотрите в Ubuntu список мостов и интерфейсов в
них. Пусть у вас tap-сеть 7. Вашему tap-интерфейсу tap700 маршрутизатора R0
соответствует мост B700 (m700) в Ubuntu. Посмотрим в Ubuntu какие MAC-адреса
видит этот мост.
student7@hu1104:~$ brctl showmacs B700
port no mac addr
is local?
ageing timer
1
00:00:ab:73:50:00
no
50.40
1
52:54:00:12:34:5c
no
50.40
1
be:79:1f:04:47:4c
yes
0.00
Посмотрим в Ubuntu MAC-адрес моста B700
student7@hu1104:~$ ifconfig B700
br0
Link encap:Ethernet HWaddr be:79:1f:04:47:4c
inet addr:10.0.0.2 Bcast:10.0.0.255 Mask:255.255.255.0
Посмотрим MAC-адреса в маршрутизаторе R0
[admin@R0] > int et pr
0 R ether1
1500 00:AA:00:61:15:00 enabled
6 R ether7
1500 52:54:00:12:34:5C enabled
Ubuntu видит MAC-адрес 52:54:00:12:34:5c ether7 в маршрутизаторе R0.
Остановим топологию. Соединим интерфейсы e0 маршрутизаторов R0 и R1.
Запустим топологию. Посмотрим MAC-адреса в маршрутизаторе R1
[admin@R1] > int eth pr
0 R ether1
1500 00:AA:00:A2:FE:00 enabled
6 R ether7
1500 52:54:00:12:34:5C enabled
Посмотрим в Ubuntu MAC-адреса моста B700
student7@hu1104:~$ brctl showmacs B700
port no mac addr
is local?
ageing timer
1
00:aa:00:61:15:00 no
8.71
1
00:aa:00:a2:fe:00 no
7.14
1
52:54:00:12:34:5c no
7.13
1
8a:d6:19:c9:ae:29
no
96.80
1
be:79:1f:04:47:4c yes
0.00
Мост B700 увидел интерфейсы ether1 R0 (00:AA:00:61:15:00) и ether1 R1
66
grigoryev.victor@gmail.com http://vmg.pp.ua
(00:AA:00:A2:FE:00)
p@hu1104:~$ brctl showmacs B701
port no mac addr
is local?
ageing timer
1
00:aa:00:61:15:00
no
21.25
1
00:aa:00:a2:fe:00 no
19.68
1
52:54:00:12:34:5c no
19.68
1
8a:d6:19:c9:ae:29
yes
0.00
1
be:79:1f:04:47:4c no
113.20
Мост B701 увидел интерфейсы ether1 R0 (00:AA:00:61:15:00) и ether1 R1
(00:AA:00:A2:FE:00) и мосты Ubuntu увидели друг друга (8a:d6:19:c9:ae:29
be:79:1f:04:47:4c).
Для более сложных топологий маршрутизаторы начинают взаимодействовать
с мостами Ubuntu, и объём информации увеличивается. Для сокращения объёма
информации временно откажемся от tap-интерфейсов и сократим число Ethernetадаптеров в каждом маршрутизаторе до реально используемого количества портов.
Временно откажемся от шаблона и создадим топологию bridge1, приведённую на
рисунке рис. 5.1. Помните о трудностях назначения портов для консолей Routeros.
Здесь и дальше свичи – это роутеры Mikrotik, которым мы предадим вид свича
(пункт symbol в контекстном меню).
До установки связей назначьте в контекстном меню для R0 и R1 по одной
сетевой карточке (NIC), а для Sw1 – две. Запустите топологию. Назначьте порты
консоли. Открываем 3 закладки в консоли Ubuntu и для открытия терминалов
Mikrotik вводим в закдадках telnet 127.0.0.1 порт-консоли
С помощью команды system identity set name=. назначаем маршрутизаторам
имена R0, Sw1 и R1. Проверим соседей
[admin@Sw1] > ip neighbor print
# INTERFACE ADDRESS MAC-ADDRESSIDENTITY VERSION BOARD
0 ether1
00:AA:00:CF:53:00 R0
5.2
x86
1 ether2
00:AA:00:3F:C9:00 R2
5.2
x86
Объединим интерфейсы Sw1 в мост
[admin@Sw1]> interface bridge add
[admin@Sw1]>interface bridge port add bridge=bridge1 interface=ether1
[admin@Sw1] > interface bridge port add bridge=bridge1 interface=ether2
Рис.5.1. Топология bridge1
Снова проверим соседей. Теперь все видят всех
[admin@R0] > ip neighbor print
# INTERFACE ADDRESS MAC-ADDRESS IDENTITY VERSION BOARD
0 ether1
00:AA:00:E1:33:00 Sw1
5.2
x86
1 ether1
00:AA:00:3F:C9:00 R2
5.2
x86
67
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@Sw1] > ip neighbor print
# INTERFACE ADDRESS MAC-ADDRESS IDENTITY VERSION BOARD
0 bridge1
00:AA:00:CF:53:00 R0
5.2
x86
1 bridge1
00:AA:00:3F:C9:00 R2
5.2
x86
[admin@R2] > ip neighbor pr
# INTERFACE ADDRESS MAC-ADDRESS IDENTITY VERSION BOARD
0 ether1
00:AA:00:E1:33:00 Sw1
5.2
x86
1 ether1
00:AA:00:CF:53:00 R0
5.2
x86
У моста есть таблица, состоящая из двух колонок: порт и список MACадресов. Если к порту моста подключается новая связь, то мост считывает с этого
связи все MAC-адреса, доступные через эту связь и запоминает их в этой таблице.
Мост использует эту таблицу для направления
пришедших пакетов на
соответствующий интерфейс. У пришедшего пакета мост берёт MAC-адрес
приёмника, ищет адрес в таблице и направляет пакет на соответствующий порт.
Посмотрим MAC-адреса
[admin@R0] > interface Ethernet print
0 R ether1
1500 00:AA:00:CF:53:00 enabled
[admin@R2] > interface Ethernet print
0 R ether1
1500 00:AA:00:3F:C9:00 enabled
Выведем таблицу, показывающую, на какой интерфейс мост направляет пакет
с определённым MAC-адресом
[admin@Sw1] > interface bridge host print
Flags: L - local, E - external-fdb
BRIDGE MAC-ADDRESS
ON-INTERFACE AGE
bridge1
00:AA:00:3F:C9:00 ether2
28s (MAC-адрес R1)
bridge1
00:AA:00:CF:53:00 ether1
30s (MAC-адрес R0)
L bridge1
00:AA:00:E1:33:00 ether1
0s
L bridge1
00:AA:00:E1:33:01 ether2
0s
Все устройства видят друг друга по протоколу Ethernet. Для полноты картины
назначьте адреса, указанные на рисунке рис.5.1 и пропингуйте. Пинги не могут не
пойти.
Создадим топологию bridge2, приведённую на рисунке рис.5.2. До установки
связей назначьте в контекстном меню для R0 и R3 по одной сетевой карточке (NIC),
а для Sw1 и Sw2 – две. Запустите топологию. Подводя мышь к маршрутизаторам,
узнаём порты консоли. Открываем 4 закладки в консоли Ubuntu и для открытия
консолей Mikrotik вводим в закладках telnet 127.0.0.1 порт консоли
Рис.5.1. Топология bridge2
68
grigoryev.victor@gmail.com http://vmg.pp.ua
Назначаем имена. Объединим все интерфейсы в Sw1 и в Sw2 в мост.
Посмотрим MAC-адреса
[admin@R0] > int Ethernet print
0 R ether1
1500 00:AA:00:CF:53:00 enabled
[admin@R3] > int Ethernet print
0 R ether1
1500 00:AA:00:35:2D:00 enabled
Выведем таблицы, показывающие мостам, на какой интерфейс направлять
пакет с определённым MAC-адресом
[admin@Sw1] > interface bridge host pr
Flags: L - local, E - external-fdb
BRIDGE MAC-ADDRESS
ON-INTERFACE AGE
bridge1 00:AA:00:35:2D:00
ether2
4s
(MAC-адрес R3)
bridge1 00:AA:00:63:2B:00
ether2
5s
bridge1 00:AA:00:CF:53:00
ether1
8s
(MAC-адрес R0)
L bridge1 00:AA:00:E1:33:00
ether1
0s
L bridge1 00:AA:00:E1:33:01
ether2
0s
[admin@Sw2] > interface bridge host pr
Flags: L - local, E - external-fdb
BRIDGE MAC-ADDRESS
ON-INTERFACE AGE
bridge1
00:AA:00:35:2D:00 ether1
8s
(MAC-адрес R3)
L bridge1 00:AA:00:63:2B:00 ether1
0s
L bridge1 00:AA:00:63:2B:01 ether2
0s
bridge1
00:AA:00:CF:53:00 ether2
12s
(MAC-адрес R0)
bridge1
00:AA:00:E1:33:01 ether2
9s
Видим, что мосты Sw1 и Sw2 сумеют правильно направить пакеты в сторону
R0 и R1. Все устройства видят друг друга по протоколу Ethernet. Для полноты
картины, проверьте на всех устройствах соседей ( ip neighbor pr), назначьте
адреса, указанные на рисунке рис.5.2 и пропингуйте. Пинги не могут не пойти.
Можно конструировать сколь угодно сложную топологию из мостов. Если
предвидятся циклы (петли), то следует
запустить в мостах протокол
покрывающего дерева STP или его разновидность RSTP, например
interface bridge set 0 protocol-mode=rstp
Этот вопрос здесь не обсуждается
EoIP
Обычно Ethernet-пакеты ходят по проводам, радиоканалам или оптическому
волокну. Ничего не мешает им ходить внутри IP-пакетов. Туннелирование Ethernet
через IP (Ethernet over IP - EoIP) - это протокол MikroTik RouterOS, который
создаёт Ethernet-туннель между двумя маршрутизаторами поверх IP-соединения.
EoIP-тунель может работать через любое соединение, способное передавать IPпакеты: Ethernet, IPIP-туннель, PPP и т.д.
Если в двух маршрутизаторах настроена поддержка EoIP, то Ethernet-трафик
(все Ethernet протоколы) пойдут через интерфейс EoIP так же, как если бы
существовали физические Ethernet -интерфейсы и был проложен кабель между
69
grigoryev.victor@gmail.com http://vmg.pp.ua
маршрутизаторами.
EoIP позволяет с помощью моста объединить через Интернет локальные сети.
Протокол EoIP подобно протоколу PPTP инкапсулирует Ethernet-фреймы в GRE
пакеты (протокол IP № 47) и пересылает их на удалённую сторону EoIP-туннеля.
При настройке EoIP используются следующие параметры
Свойства
Описание
arp (disabled | enabled |
proxy-arp | reply-only; Режим ARP
Default: enabled)
l2mtu
(integer; Максимальный размер блока 2 уровня на передачу. Только
Default: )
для чтения
mac-address
(MAC; MAC-адрес
интерфейса.
Разрешённый
диапазон
Default: )
00:00:5E:80:00:00 - 00:00:5E:FF:FF:FF
mtu (integer; Default:
Максимальный размер блока 3 уровня на передачу.
1500)
name (string; Default: ) Имя интерфейса
remote-address
(IP;
IP-адрес удалённой стороны EoIP-туннеля
Default: )
local-address
(IP;
IP-адрес локальной стороны EoIP-туннеля. Не обязательно
Default: )
tunnel-id
(integer: Уникальный для каждого туннеля идентификатор. Должен
65536; Default: )
совпадать на обеих концах
Значение mtu=1500 не следует менять для избегания
перефрагментации пакета внутри туннеля. Это
позволяет так
прозрачно объединить Ethernet-сети с помощью моста, что
станет возможным транспорт полноразмерных Ethernet-фреймов
через туннель.
При использовании мостов для EoIP-тунелей для корректной работы
алгоритмов мостов строго рекомендуется следить за уникальностью MAC-адрес
для каждого туннеля. Иначе вы должны быть уверены в уникальности хостов,
подсоединённых к мосту.
Сделаем копию EoIP шаблона template із роздела 2,. Соберём топологию,
указанную на рисунке Рис.5.3. (tap-сеть 0)
Рис.5.3. Топология Eoip. Два сайта подключены к Интернет через маршрутизаторы R0 и
R3. Маршрутизаторы R0 і R3 представляют локальные сети сайтов.
70
grigoryev.victor@gmail.com http://vmg.pp.ua
Облако Inet – это просто картинка, символизирующая нашу модель
Интернета. Вы можете вместо неё использовать овал.
Модель
заключается в соединении роутеров через tap-интерфейсы хост-машины
Ubuntu.
Назначим имена маршрутизаторам. Проверим соседей. R1 не будет видеть
R2. Это нормально. Проложим маршрут между tap-сетями 10.0.1.0/24 и
10.0.2.0/24 роутеров R1 и R2 через нашу модель Интернета.
[admin@R1]>ip route add dst-address=10.0.2.0/24 gateway=10.0.1.2
[admin@R2]>ip route add dst-address=10.0.1.0/24 gateway=10.0.2.2
Здесь 10.0.1.2 и 10.0.2.2 - адреса tap-интерфейсов на стороне хост-машины
Ubuntu. Проверим
[admin@R2] > ping 10.0.1.1
HOST
SIZE TTL TIME STATUS
10.0.1.1
56 63 11ms
Пинги пошли. R1 и R2 соединены через нашу модель Интернета. Настроим
EoIP-туннель
[admin@R1] > int eoip add remote-address=10.0.2.1 disabled=no
[admin@R2] > int eoip add remote-address=10.0.1.1 disabled=no
Создадим на R1 и R2 мосты и добавим в них физический Ethernet-интерфейс
e0 (ether1) и интерфейс EoIP
[admin@R1] > int bridge add
[admin@R1]> int bridge port add bridge=bridge1 interface=eoip-tunnel1
[admin@R1]> int bridge port add bridge=bridge1 interface=ether1
[admin@R2] > int bridge add
[admin@R2]> int bridge port add bridge=bridge1 interface=eoip-tunnel1
[admin@R2]>int bridge port add bridge=bridge1 interface=ether1
Посмотрим MAC-адреса
[admin@R0] > interface Ethernet print
0 R ether1
1500 00:AA:00:3C:37:00 enabled
[admin@R3] > interface Ethernet print
0 R ether1
1500 00:AA:00:C3:F2:00 enabled
Выведем таблицы, показывающие мостам на какой интерфейс направлять
пакет с определённым MAC-адресом
[admin@R1] > int bridge host pr
bridge1
00:AA:00:C3:F2:00 eoip-tunnel1 11s ( MAC-адреса R3)
bridge1
00:AA:00:3C:37:00 ether1
57s
( MAC-адреса R0 )
…
[admin@R2] > int bridge host pr
bridge1
00:AA:00:C3:F2:00 ether1
20s
( MAC-адреса R3)
bridge1
00:AA:00:3C:37:00 eoip-tunnel1 21s
( MAC-адреса R0)
Смотрим соседей
[admin@R0] > ip neighbor print
# INTERFACE ADDRESS MAC-ADDRESS IDENTITY VERSION BOARD
0 ether1
00:AA:00:72:18:00
R1
5.18
x86
1 ether1
52:54:00:12:34:5C
R2
5.18
x86
71
grigoryev.victor@gmail.com http://vmg.pp.ua
2 ether1
FE:4F:AF:27:83:4C
R1
5.18
x86
3 ether1
FE:E4:7D:AA:67:D9
R2
5.18
x86
4 ether1
00:AA:00:C3:F2:00
R3
5.18
x86
R0 видит все роутеры R1, R2 и R3.
[admin@R3] > ip neighbor print
# INTERFACE ADDRESS MAC-ADDRESS IDENTITY VERSION BOARD
0 ether1
00:AA:00:3C:37:00
R0
5.18
x86
1 ether1
52:54:00:12:34:5C
R1
5.18
x86
2 ether1
FE:4F:AF:27:83:4C
R1
5.18
x86
3 ether1
FE:E4:7D:AA:67:D9
R2
5.18
x86
R3 видит все роутеры R0, R1 и R2.
Есть связь на втором сетевом уровне. Окончательно убедимся в этом.
Например, на R0 с помощью специальной утилиты mac-telnet соединимся по
Ethernet с R3, введя MAC-адрес его Ethernet-интерфейса ether1
[admin@R0] tool mac-telnet 00:AA:00:C3:F2:00
Попадаем в R3. Возврат CtrlD
На R3 соединимся по Ethernet с R0
[admin@R3] > tool mac-telnet 00:AA:00:3C:37:00
Попадаем в R0. Возврат CtrlD
Мы построили виртуальную частную сеть второго уровня над существующей
сетью в виде модели Интернета для Ubuntu.
Для полноты картины назначьте IP-адреса для R0 и R1 согласно рисунку и
пропингуйте крайние роутеры друг из друга.
Рис. 5.4 Структура EoIP-пакету. MAC-адреса в красных прямоугольниках.
Виконаємо команду
[admin@R0] > ping 00:AA:00:C3:F2:00
и с помощью анализатора сетевых пакетов Wireshark увидим (рис. 5.4),что для
72
grigoryev.victor@gmail.com http://vmg.pp.ua
инкапсуляции Ethernet-пакета в IP-пакет используется протокол GRE (Generic
Routing Encapsulation).
Задание. Для топологии EoIP3, изображённой на Рис. 5.5, организовать VPN
уровня 2 с помощью EoIP. Не забудьте использовать разные tunnel-id.
Рис.5.5. Топологии EoIP3
Самостоятельно с помощью команд int bridge host pr посмотрите таблицы,
показывающие мостам на какой интерфейс направлять пакет с определённым MACадресом. Убедитесь командой ip neighbour print, что все маршрутизаторы видит
друг друга как соседа. С помощью команды tool mac-telnet окончательно убедитесь,
что есть связь на втором сетевом уровне. Назначаем IP-адреса на R0, R3 и R5
согласно рисунку. Пингуем маршрутизаторы. Заметим, что R0, R3 и R5 будут
находится в одном домене широковещания. Это позволяет успешно
функционировать широковещательным ARP-запросам: от одного ко всем (через
EoIP туннели через Интернет)
VPN уровня 2 через NAT
Рассмотрим случай, когда филиалы корпорации не имеют прямого выхода в
Интернет. Рассмотрим топологию EoIPNAT, изображённую на Рис. 5.6. Здесь R3 и
R4 – маршрутизаторы топологию EoIPNAT Интернет-провайдера. Он их
конфигурирует по запросу корпорации. Соберите топологию и проверьте соседей.
В начале, согласно рисунку назначьте для
R2 и R3 адреса из сети
192.168.1.0/24. Для R2 назначьте шлюз 192.168.1.1. Назначьте для R4 и R6
адреса из сети 192.168.2.0/24. Для R2 назначьте шлюз 192.168.2.1. Назначьте на
интерфейсы ethert7 роутеров R3 и R4 дополнительные адреса 10.0.3.22.24 и
10.0.4.22/24 соответственно. Настройте NAT для исходящих и приходящих адресов.
Должны получить нечто подобное
[admin@R3] > ip firewall nat pr
Flags: X - disabled, I - invalid, D - dynamic
0 chain=srcnat action=masquerade out-interface=ether7
1 chain=dstnat action=dst-nat to-addresses=192.168.1.2 dst-address=10.0.3.22
[admin@R4] > ip firewall nat print
73
grigoryev.victor@gmail.com http://vmg.pp.ua
Flags: X - disabled, I - invalid, D - dynamic
0 chain=dstnat action=dst-nat to-addresses=192.168.2.2 dst-address=10.0.4.22
1 chain=srcnat action=masquerade out-interface=ether7
Рис. 5.6. Топология EoIP3
Проверьте работу NAT: роутеры R2 и R6 должны видеть (пинговать) друг
друга. Помним, что для внешнего мира они имеют адреса 10.0.3.22 и 10.0.4.22.
Настроим EoIP-туннель между R2 и R6 особым образом, учитывая NAT
[admin@R2] > int eoip add remote-address=10.0.4.22 disabled=no
[admin@R6] > int eoip add remote-address=10.0.3.22 disabled=no
Создадим на R2 и R6 мосты, добавим в них интерфейс EoIP и физический
Ethernet интерфейс e1 (ether2), идущий в сторону R0 (R5).
[admin@R2] > int bridge add
[admin@R2]>int bridge port add bridge=bridge1 interface=eoip-tunnel1
[admin@R2]>int bridg port add bridge=bridge1 interface=ether2
[admin@R6]>int bridge add
[admin@R6]>int bridge port add bridge=bridge1 interface=eoip-tunnel1
[admin@R6]>int bridg port add bridge=bridge1 interface=ether2
Самостоятельно посмотрите таблицы, показывающие мостам на какой
интерфейс направлять пакет с определённым MAC-адресом
[admin@R2] > int bridge host pr
[admin@R6] > int bridge host pr
Убедитесь командой ip neighbour print, что крайний маршрутизатор R0 ( R5)
видит R5 ( R0) как соседа. С помощью команды /tool mac-telnet окончательно
убедитесь, что есть связь на втором сетевом уровне между R0 и R5. Назначаем IPадреса на R0 и R5 согласно рисунку. Пингуем из R0 роутер R5 или наоборот.
Требования для сдачи работы
Продемонстрировать работающие топологии bridge1, bridge2, EoIP, EoIP3 и
EoIPNAT.
74
grigoryev.victor@gmail.com http://vmg.pp.ua
6. Беспроводный мост
Собираем схему на рис. 6.1, соединив указанные на рисунке сетевые порты с
помощью Erthernet-кабелей (витой пары). Кабеля обжаты с двух сторон разъёмами
rj45. Блоки питания у роутеров rb750 и rb751u-2hnd разные. Не перепутайте. У
rb750 блок питания меньше, чем у rb751u-2hnd.
Рис. 6.1. Схема лабораторной установки
Штекеры блоков питания пока не подключаем к роутерам. Подключим вилки
4-х блоков питания к удлинителю. Включим удлинитель в розетку и включим на
удлинителе выключатель. Воткнём штекер одного из блоков питания rb750 в
роутер rb750 toBridge1. Подождём, пока роутер загрузится. Светодиодный
индикатор активности сетевого порта 5 должен начать постоянно светится.
Загорится и индикатор на соответствующем порту свича. Запустим на компьютере
утилиту winbox. В появившемся окне программы winbox нажмём кнопку с
надписью "...". Появится список включенных роутеров, подключенных через свич к
компьютеру. В списке мы видим одну строку. Обратите внимание на название
колонок списка. Нажмём в строке на значение mac-address. Выбранный mac-адрес
появится в поле ввода окна программы winbox. В окне программы winbox введём в
поле Login имя admin, поле Password оставим пустым и нажмём кнопку с надписью
"Connect". Появится графический интерфейс для конфигурации роутера toBridge1.
Скорее всего с роутером уже работали. Его надо сбросить в фабричные
настройки. Для этого выберем System->Reset configuratuon. В появившемся окне
установим галочки "No Default Configuration" и "Do Not Backup" (Без
конфигурации по умолчанию и не делать резервную копию). Нажимаем кнопку
"Reset Configuration" (Сброс конфигурации) и затем кнопку Yes. В появившемся
окне подтверждаем наше намерение о сбросе роутера. Ждём, пока роутер
перегрузится. Прогамма winbox известит о потере связи с роутером. Согласимся с
этим.
Снова запустим winbox для роутера toBridge1. Дадим операционной системе
RouterOS внутри роутера название toBridge1. Для этого выберем System->Identity,
введём в поле ввода имя toBridge1 и нажмём кнопку Ok. Закроем и запустим на
компьютере утилиту winbox. Если список в нижней половине окна программы
75
grigoryev.victor@gmail.com http://vmg.pp.ua
winbox не пустой, то очистим его с помощью команды Tools->Remove All
Addresses. Нажмём кнопку с надписью "...". В новом окне видим в строке в поле
Identity значение равное toBridge1. Нажмём в этой строке на значение mak-address.
Выбранный mac-адрес появится в поле ввода окна программы winbox. Проверим,
что в поле Login присутствует имя admin, а поле Password является пустым.
Нажимаем кнопку Save. Данные для соединения с роутером toBridge1 появятся в
нижней половине окна winbox, что позволит в дальнейшем при соединенении с
роутером обойтись без кнопки "...".
Воткнём штекер одного из блоков питания rb751u-2hnd в роутер Station.
Подождём около 30 секунд, пока роутер загрузится. Светодиодный индикатор
активности сетевых портов 2 и 5 должен начать постоянно светится. Загорится и
индикатор на соответствующем порту свича. На роутере toBridge1 должен начать
постоянно светится светодиодный индикатор активности сетевого порта 1. Это
свидетельствует о наличии связи (линка) между роутерами toBridge1 и Station
через Erthernet-кабель. Запустим на компьютере ещё один экземпляр утилиты
winbox. В появившемся окне программы winbox нажмём кнопку с надписью "...".
Появится список включенных роутеров, подключенных через свич к компьютеру.
В списке мы видим две строки. Одна из них со значением в поле Identity равным
toBridge1, относится к роутеру toBridge1. Нажмём в другой строке списке списка
на значение mak-address. Выбранный адрес появится в поле ввода окна программы
winbox. В окне программы winbox нажмём кнопку с надписью "Connect". Появится
графический интерфейс для конфигурации роутера Station. Его надо сбросить в
фабричные настройки и дать ему имя Station. Данные для соединения с роутером
Station добавим в нижнюю половину окна winbox.
Рис. 6.2. Экземпляр утилиты winbox
76
grigoryev.victor@gmail.com http://vmg.pp.ua
Воткнём штекер одного из блоков питания rb751u-2hnd в роутер AP (access
point – точка доступа). Проверим светодиодный индикатор 5 и индикатор на свиче.
Запустим на компьютере третий экземпляр утилиты winbox. Сбросим настройки
роутера и дадим ему имя AP. Данные для соединения с роутером Station добавим в
нижнюю половину окна winbox.
Воткнём штекер одного из блоков питания rb750 в роутер toBridge2. Проверим
светодиодные индикаторы на свиче и на роутерах AP и toBridge2. Запустим на
компьютере четвёртый экземпляр утилиты winbox. Сбросим настройки роутера и
дадим ему имя toBridge2. Данные для соединения с роутером toBridge2 добавим в
нижнюю половину окна winbox.
Запустив на компьютере 5-й экземпляр утилиты winbox, видим (рис. 6.2)
После нажатия на кнопку "...", видим имена и версии роутеров, а также
названия устройств (рис. 6.3). Версия и маc-адреса у вас могут быть другими.
Сохраним список соединений, выбрав Tools->Export. Закроем на компьютере 5-й
экземпляр winbox.
Не рекомендуется выключать устройство, выдёргивая шнур питания. Для
каждого роутера, выбрав в winbox System->Shutdown->Yes, плавно завершим
работу операционных систем. Сами устройства не выключатся. Выключим
устройства, вынув штекер питания. Вместо Shutdown можно дать команду Reboot
на перегрузку.
Рис. 6.3. Названия устройств
Проверим линки. В каждом из четырёх окон winbox проверим соседей,
выбирая IP->Neighbors. Для каждого роутера в колонке Identity вы должны увидеть
имена трёх соседей. Например, для роутера toBridge1, видим (рис. 6.4)
Рис. 6.4. Соседи
Имя Staion повторяется дважды, так как между роутерами toBridge1 и Staion
две связи: одна напрямую и вторая через свич.
77
grigoryev.victor@gmail.com http://vmg.pp.ua
Обеспечим возможность конфигурации роутеров с использованием протокола
IP. Для этого назначим IP-адреса на пятый порт роутеров. Все четыре адреса
должны лежать в одной подсети с IP-адресом конфигурационного компьютера и их
значения определяются системой адресации сетевого окружения, в котором
выполняется данная лабораторная работа. В период подготовки данной работы
использовались следующие адреса.
Конфигурационный компьютер
192.168.1.2/24
toBridge1
192.168.1.101/24
Station
192.168.1.102/24
AP
192.168.1.103/24
Intrernet
192.168.1.104/24
Назначьте эти адреса на интерфейс ether5 роутеров.
Если конфигурационным является кафедральный компьютер, то он имеет
адрес в сети 192.168.14.0/24 и на роутеры следует назначать свободные адреса из
этой сети. Возможно назначение на кафедральный компьютер второго адреса из
другой сети.
Из конфигурационного компьютера с помощью утилиты ping проверьте связь
с роутерами, например ping 192.168.1.101 и добавьте в winbox соединения через IPадреса со всеми роутерами (рис. 6.5).
При редактировании команд в консоли winbox при вставке из кармана
Windows могут возникнуть проблемы. В этом плане более стабильно работает
утилита putty. putty входит в комплект поставки программы gns3 под Windows.
Рис. 6.5. Соединения через IP-адреса со всеми роутерами
78
grigoryev.victor@gmail.com http://vmg.pp.ua
Откроем putty. В поле Host Name (or IP address) введём 192.168.1.101.
Connection type установим в Telnet. В поле Saved Session введём имя соединения к
роутеру, например toBridge1. В категории Connection -Data в поле Auto-login
username введём admin. Перезапустим putty. В списке Saved Session выберем
toBridge1, Нажимаем кнопки Load и затем Open. Откроется консоль роутера
toBridge1 c приглашением ввода пароля.
Откроем putty. В поле Host Name (or IP address) введём 192.168.1.101.
Connection type установим в SSH - secure shell - безопасная консоль. В поле Saved
Session введём имя соединения к роутеру, например toBridge1SSH. В категории
Connection -Data в поле Auto-login username введём admin. Перезапустим putty. В
списке Saved Session выберем toBridge1SSH. Нажимаем кнопки Load и затем Open.
Откроется окно, с вопросом о доверии к роутеру. Ответе Yes. Сразу откроется
консоль роутера toBridge1 без приглашения ввода пароля.
Настройте аналогично соединения к остальным роутерам.
В putty более корректно осуществляется вставка содержимого кармана - для
этого достаточно нажать правую кнопку мыши. Кроме того putty автоматически
вставляет в карман выделенный мышью текст.
Откройте 4 консоли putty для связи со всеми роутерами.
Снова проверим линки. В каждом из четырёх окон winbox проверим соседей,
выбирая IP->Neighbors. Для каждого роутера в колонке Ip Address вы должны
увидеть адреса соседей.
Обеспечим беспроводное соединение роутеров Station и AP. Роутер AP будет
работать в режиме точки доступа, а Роутер Station будет работать в режиме
станции. Разрешим протоколирование беспроводный событий. Откроем winbox для
роутеров AP и Station. Выберем System->Logging и в закладке Rules нажмём +. В
новом окне в списке Topic выберем Wireless и Ok
Настроим точку доступа. Откроем winbox для роутера AP. Выберем Wireless и
дважды щёлкним мышью на беспроводном интерфейсе wlan1. В открывшемся окне
сбросим интерфейс с помощью кнопки Reset Configuration. Оценим
радиообстановку в лаборатории с помощью кнопки Snooper. Запомним занятые
частоты и идентификаторы SSID активных беспроводных сетей. В закладке
Wireless выберем
Mode:
ap bridge
Band:
2GHz-B/G/N
Frequency: 2437 -незанятая частота
SSID:
AP -новый идентификатор нашей сети
Нажимаем кнопки Apply и затем Enable.
Настроим станцию. Откроем winbox для роутера Station. Выберем Wireles и
дважды щелкнем мышью на беспроводном интерфейсе wlan1. В открывшемся окне
сбросим интерфейс и с помощью кнопки Scan откроем новое окно и в нём найдём
и выберем нашу сеть AP. Нажмём Connect и Сlose. В закладке Wireless нажимаем
кнопки Apply и Enable. Должно установиться беспроводное соединение. Внизу
справа появится сообщение "searching for network" и затем "connected to ess".
Можно не использовать кнопку Scan, а сразу в закладке Wireless выбрать
79
grigoryev.victor@gmail.com http://vmg.pp.ua
Mode:
station
Band:
2GHz-B/G/N
Frequency: 2437 -наша незанятая частота
SSID:
AP -идентификатор нашей сети
О наличии соединения свидетельствует также буква R перед названием
интерфейса wlan1 в списке интерфейсов в обоих роутерах.
Так как могут существовать много радиосетей с одним и тем же идентификатором
SSID, станция ищет точку доступа с самым сильным сигналом (рис. 6.6). Это
можно увидеть в Winbox через лог системы (меню Log слева)
Рис. 6.6. Станция ищет точку доступа с самым сильным сигналом
Заставим станцию сразу подсоединятся к нашей точке доступа. Для этого
возьмём в карман Mak-адресс точки доступа (вкладка general интерфейса wlan1).
На станции в окне wirelessTables откроем вкладку ConnectList и нажмём знак +.
Вставим в новом окне Mak-адресс и имя нашей точки доступа (рис. 6.7).
Перезагрузим радиоинтерфейс (Disable-Enable). Теперь станция не ищет точку
доступа с самым сильным сигналом (рис. 6.8). В настройках станции можно
оставить только две настройки Mode: station и Band: 2GHz-B/G/N.
Рис. 6.7. Вкладка ConnectList
80
grigoryev.victor@gmail.com http://vmg.pp.ua
В роутерах AP и Station назначьте на беспроводный интерфейс адреса
10.1.1.254/24 и 10.1.1.1/24 соответственно. Проверьте связь с помощью команды
ping. Проверьте скорость беспроводного соединения в окне Tools-BandwidthTest в
различных направлениях. Вы должны получить десятки мегабит в секунду. Во
время проверки посмотрите (рис. 6.9) уровни принимаемых сигналов (WirelessRegistration-двойной щелчок мыши на строке – Signal). Видим, что сигнал состоит
из более простых сигналов различных скоростей.
Рис. 6.8. Станция не ищет точку доступа с самым сильным сигналом
Скорости 1, 2, 5.5, 11 Mbps соответствуют протоколу IEEE 802.11b, скорости
6, 9, 12, 18, 24, 36,48, 54 Mbps – протоколам 802.11а и 802.11g. Остальные скорости
соответствуют протоколу 802.11n и обозначаются в виде HTШиринаКаналаMCSindex. MCS index определён в таблице табл.1 в которой GI (guard interval) у
нас произвольный 400 или 800 ns.
Согласно рисунку рис. 6.9 самым мощным (20 децибел) является сигнал со
скоростью HTC20-4, который принимает Station от AP. Согласно обозначению,
ширина канала равна 20 Мгц. Согласно таблице видим, что используется
модуляция 16-QAM (16-ти позиционная квадратурная амплитудно-фазовая);
применяется
помехоустойчивое
кодирование
с
отношением
числа
информационных бит к общему числу бит равным ¾; скорости равны 39 и 43.3
Mbps.
На AP от Station
На Station от AP
Рис. 6.9 Уровни принимаемого сигнала
81
grigoryev.victor@gmail.com http://vmg.pp.ua
На двух роутерах удалите IP-адреса у беспроводных интерфейсов. Добавьте
мосты
[admin@ Station] > Interface bridge add
Имя у моста будет bridge1
[admin@ AP] > Interface bridge add name= bridge2
Скорости протокола IEEE 802.11b
MCS
index
Modulation
type
Coding
rate
0
1
2
3
4
5
6
7
BPSK
QPSK
QPSK
16-QAM
16-QAM
16-QAM
16-QAM
16-QAM
1/2
1/2
3/4
1/2
3/4
2/3
3/4
5/6
Табл. 5.1
Data rate (Mbit/s)
20 MHz
40 MHz channel
channel
800 ns 400
800 ns 400 ns
ns
6.5
7.2
13.5
15
13
14.4
27
30
19.5
21.7
40.5
45
26
28.9
54
60
39
43.3
81
90
52
57.8
108
120
58.5
65
121.5
135
65
72.2
135
150
Добавим в мосты порты, идущие в сторону роутеров toBridge1 и toBridge2.
[admin@AP] >interface bridge port add bridge=bridge1 interface=ether1
[admin@Station] >interface bridge port add bridge=bridge1 interface=ether1
Для организации беспроводного моста будем использовать технологию WDS
(Wireless distributed system – беспроводная распределённая система). На точке
доступа AP установите WDS-режим в динамический и укажем имя моста для
автоматического добавления туда динамически создаваемого wds-интерфейса
[admin@AP] >interface wireless set wlan1 wds-mode=dynamic wds-defaultbridge=bridge2
Беспроводный роутер Station в режиме станции (mode=station) не
поддерживает помещение беспроводного интерфейса wlan1 в мост из-за
ограничений протокола 802.11. Изменим режим работы на station-wds
[admin@ Station] >interface wireless set wlan1 mode= station-wds
Станция переподсоединится к точке доступа и на точке доступа появится
новый wds-интерфейс
[admin@AP] > interface print
Flags: D - dynamic, X - disabled, R - running, S - slave
#
NAME TYPE MTU L2MTU MAX-L2MTU
…
6 R bridge2
bridge
1500 1600
7 DR wds1
wds
1500 2290
В мост автоматически добавится wds-интерфейс
[admin@AP] > interface bridge port print
Flags: X - disabled, I - inactive, D - dynamic
82
grigoryev.victor@gmail.com http://vmg.pp.ua
# INTERFACE BRIDGE PRIORITY PATH-COST HORIZON
0
ether1
bridge2 0x80
10
none
1 D wds1 bridge2 0x80
74
none
Теперь в мост на станции можно добавить беспроводный интерфейс
[admin@Station] >inter bridge port add bridge=bridge1 interfac=wlan1
Узнаем MAC-адрес Ethernet-интерфейса ether1 на роутере toBridge2
[admin@toBridge2] > interface ethernet print
Flags: X - disabled, R - running, S - slave
#
NAME
MTU MAC-ADDRESS ARP
0R
ether1
1500 00:0C:42:E1:55:B8
enabled
Посмотрим, какие MAC-адреса и через какие интерфейсы видит мост bridge1
на роутере Station
[admin@Station] > interface bridge host print
Flags: L - local, E - external-fdb
BRIDGE
MAC-ADDRESS ON-INTERFACE AGE
bridge1
00:0C:42:E1:55:B8
wlan1
45s
L bridge1
00:0C:42:E2:54:97
ether1
0s
L bridge1
00:0C:42:E2:54:9B
wlan1
0s
bridge1
00:0C:42:E4:A7:1A
wlan1
58s
bridge1
00:0C:42:E5:EF:51
ether1
22s
Мост bridge1 на роутере Station через свой интерфейс wlan1 видит MAC-адрес
00:0C:42:E1:55:B8 Ethernet-интерфейса ether1 на роутере toBridge2. Аналогично
можно увидеть, что мост bridge2 на роутере AP через свой интерфейс wlan1 видит
MAC-адрес Ethernet-интерфейса ether1 на роутере toBridge1. Поэтому крайние
роутеры увидели друг друга как непосредственные соседи. Например для toBridge1
[admin@toBridge1] > ip neighbor print detail
…
6
interface=ether1
mac-address=00:0C:42:E1:55:B8
identity="toBridge2"
platform="MikroTik" version="5.14" unpack=none age=2s uptime=6h1m32s softwareid="8JYR-0LZN" board="RB750" ipv6=no interface-name="ether1"
Это даёт нам право поместить Ethernet-интерфейсы ether1 на роутерах
toBridge1 и toBridge2 в одну IP-сеть
[admin@toBridge1] > ip addre add address=1.1.1.2/24 interface=ether1
[admin@ toBridge2] >ip addre add address=1.1.1.1/24 interface=ether1
Проверьте связь между роутерах toBridge1 и toBridge2 с помощью пингов
Netinstall
Если к роутеру не удаётся подключиться с помощью winbox, то попробуйте
это сделать через его первый порт. Если и это не удастся, то вам надо (с
разрешения и под. присмотром преподавателя) переставить операционную систему
роутера с помощью утилиты Netinstall.
Для серии 700 маршрутизаторов Routerboard выкачиваем с официального
сайта Mikrotik последнюю версии программы Netinstall и архив all_packagesmipsbe-5.* самой операционной системы. Извлекаем в папку пакеты advanced dhcp
83
grigoryev.victor@gmail.com http://vmg.pp.ua
mpls ppp routerboard routing security system. Для беспроводных роутеров нам
понадобится и пакет wireless. Запускаем netinstall и в нём жмём кнопку Net Booting.
В открывшемся окне устанавливаем галочку Boot server enabled и в поле Client IP
address вводим адрес из той же сети, в которой находится компьютер на котором
запущен netinstall. Например, если адрес компьютера, на котором запущен netinstall
равен 192.168.1.2/24, то вводим 192.168.1.203. Соединим кабелем (напрямую или
через свич) первый порт роутера и порт компьютера с адресом 192.168.1.2/24 (на
котором запущен netinstall). С помощью тонкого длинного предмета нажимаем и
удерживаем микрокнопку в отверстии возле входа питания. Вставляем штекер
питания и ждём, пока индикатор рядом не перестанет мигать. В окне программы
netinstall в списке Routers/Drives после локальных дисков должна появиться новая
строка с указанием марки роутера и МАС-адреса. Выбираем эту строку. Используя
кнопку Browse, выбираем папку с пакетами, которые мы будем устанавливать.
Нажимаем кнопку Select all.
Убедимся, что в списке Routers/Drives выбран именно роутер, а не локальный
диск. ЕСЛИ ЭТО НЕ ТАК, ТО ВЫ УСТАНОВИТЕ RouterOS на локальный
компьютер и если это загрузочный диск, то ваша Windows перестанет грузится и
вам придется восстанавливать загрузочную запись.
Нажимаем кнопку Install. Вы увидите индикатор прогресса установки и в поле
статуса вы увидите фразу Installing. По завершении процесса установки в поле
статуса вы увидите фразу OK. Закрывайте netinstall. Система установлена, и роутер
автоматически перегрузится.
Дождитесь окончания перегрузки (индикаторы перестанут мигать), зайдите в
роутер через winbox и остановите роутер (system->shutdown) и выдерните блок
питания.
Сохраните свою конфигурацию в файл (Files-Backup), перетащите файл на
рабочий стол и заберите его домой. Принеся файл из дому, перетащите его в окно
Files и восстановите конфигурацию (Restore).
1.
2.
Требования для сдачи работы
Предъявить работающий беспроводный мост. Роутеры toBridge1 и
toBridge2 должны видеть друг друга c помощью утилиты mac-telnet.
Определите скорости соединения между роутерами Station и AP и между
роутерами toBridge1 и toBridge2
84
grigoryev.victor@gmail.com http://vmg.pp.ua
7. Маршрутизация
Статическая маршрутизация
Маска /32
Динамическая маршрутизация
RIP
OSPF
Перераспределение маршрутов и BGP
85
89
91
92
95
96
В сетевом устройстве IP-пакеты бывают входящие и выходящие. Для
входящих TCP/UDP-пакетов в устройстве должна быть запущена программа,
которая их обрабатывает. На входящие IP-пакеты ICMP-протокола (пинги)
отвечает система устройства. Выходящие пакеты могут быть как проходящими
(пробрасываемыми), так и порождаемыми процессами самого устройства. Для того
чтобы сетевое устройство пробрасывало пакеты, на нём должен работать процесс
маршрутизации. Тогда устройство становится маршрутизатором или роутером.
Для того чтобы пакет ушел из устройства для пакета должен быть прописан
маршрут. Должна быть строка в таблице маршрутов. Маршрутизация
осуществляется только по адресу назначения. Сетевые интерфейсы не понимают
IP. Они понимают пакеты 2-го сетевого уровня, например Ethernet или PPP. Для
проброса или отправки IP-пакет должен быть помещён в правильный пакет 2-го
уровня. Это делается на основании таблиц маршрутизации плюс (в случае Ethernet
) и протокола ARP. Остановимся на Ethernet .
Статическая маршрутизация
Соберём топологию routing. Воспользуйтесь шаблоном template. Для этого
сделаем копию routing папки template. Откроем routing в GNS3. Переименуйте
устройства (номер не трогайте -это номер tap-сети), измените их иконки и
соедините интерфейсы согласно рисунку рис. 7.1. Соединить, а затем
переименовать не удастся. Запомните это. Запустите топологию, назначьте имена
и адреса согласно рисунку.
Воспользуйтесь многозакладочной консолью,
настроенной ранее. Помним, что e0 это ether1, e1 это ether2. Обязательно проверьте
соседей командой ip neighbour print .
Рис. 7.1 Топология routing
Превратим устройства Sw0, Sw3, Sw5 в коммутаторы второго уровня (свичи),
объединив интерфейсы e0 и e1 в мост bridge1
interface bridge add-добавится мост с именем по умолчанию bridge1
85
grigoryev.victor@gmail.com http://vmg.pp.ua
interface bridge port add bridge= bridge1 interface=ether1
interface bridge port add bridge= bridge1 interface=ether2
Если в Ubuntu установлен Dynamips, то можно пользоваться и штатными
свичами из GNS3. Мы это не делаем из методических соображений.
К свичам sw0, sw3 и sw5 можно подсоединить ещё много сетевых устройств с
адресами из указанных на рисунке IP-сетей. Для сути дела хватит то, что
изображено.
Как только на сетевую карточку e0(ether1) R1 назначается адрес, например
1.1.1.1/24, система по маске определяет IP-сеть для этого адреса (1.1.1.0/24) и в
таблицу маршрутов добавляется строка, говорящая, что пакеты на адреса из сети
1.1.1.0/24 отправлять на ether1
[admin@R1] > ip route print
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
# DST-ADDRESS
PREF-SRC GATEWAY DISTANCE
0 ADC 1.1.1.0/24
1.1.1.1
ether1
0
1 ADC 2.2.2.0/24
2.2.2.2
ether1
0
2 ADC 10.0.1.0/24
10.0.1.1
ether7
0
В столбце PREF -SRC указан адрес источника. 24-число единиц в маске. В
других обозначениях это маска 255.255.255.0 .
Далее система сможет обработать любой выходящий или проходящий пакет с
адресом назначения, лежащим в этой сети 1.1.1.0/24. Пусть это будет пакет с
адресом назначения 1.1.1.2. Система видит, что пакет подпадает под строку
таблицы маршрутизации. И, согласно этой строке, видит, что путь к адресу 1.1.1.2
лежит через интерфейс ether1. Для определения Ethernet адреса, соответствующего
адресу 1.1.1.2, система обращается в ARP-таблицу соответствия MAС-адрес - IPадрес (ip arp print). Если такого соответствия нет, то система шлёт через
интерфейс ether1 широковещательный Ethernet-пакет с ARP-запросом "Устройство
имеющее адрес 1.1.1.2, сообщи свой MAC-адрес". Устройство R2 с адресом 1.1.1.2
в Ethernet -пакете ARP-ответа сообщает MAC-адрес М своей карточки e0 (ether1).
IP-Пакет на R1 в сторону 1.1.1.2 помещается в Ethernet пакет с MAC-адресом
назначения М и отправляется из сетевой карточки e0(ether1) R1 на сетевую
карточки e0(ether1) R2.
На устройстве R2 с адресом 1.1.1.2 в свою очередь должен быть прописан
маршрут в обратную сторону. В нашем случае он добавляется автоматически
системой
[admin@R2] > ip route print
Flags: X - disabled, A - active, D - dynamic,
C - connect, S - static, r - rip, b - bgp, o - ospf, m - mme, B - blackhole, U unreachable, P - prohibit
# DST-ADDRESS
PREF-SRC GATEWAY DISTANCE
0 ADC 1.1.1.0/24
1.1.1.2
ether1
0
1 ADC 7.7.7.0/24
7.7.7.1
ether2
0
2 ADC 10.0.2.0/24
10.0.2.1
ether7
0
86
grigoryev.victor@gmail.com http://vmg.pp.ua
То есть маршрутизатор безо всяких настроек осуществляет проброс
пришедших пакетов из одной непосредственно присоединённой IP-сети в другую.
Если надо пробросить или отправить IP-пакет, предназначенный для IP-сети,
которая не присоединена непосредственно к маршрутизатору, необходимо
добавить соответствующую строку в таблицу маршрутов. Это автоматически
делают протоколы динамической маршрутизации, согласно заданным в них
правилам. Это можно сделать и с помощью команд статической маршрутизации.
Например, команда для R1
ip route add dst-address=7.7.7.0/24 gateway=1.1.1.2
добавляет в таблицу маршрутов строку
[admin@R1] > ip route print
2 A S 7.7.7.0/24
1.1.1.2
1
o том, что пакеты на 7.7.7.0/24 отправлять на 1.1.1.2 . Здесь dst-address - сеть
назначения (7.7.7.0/24). В качестве адреса шлюза gateway надо брать ближайший
(но не свой) адрес в направлении к сети назначения. Далее система сможет
обработать любой выходящий или проходящий пакет с адресом назначения,
лежащим в сети 7.7.7.0/24. Она их будет направлять по адресу 1.1.1.2. Или точнее.
Этот адрес 1.1.1.2 лежит в сети 1.1.1.0/24, для которой уже существует строка в
таблице маршрутизации. Согласно этой строке, пакеты для 1.1.1.2 направляются
на интерфейс ether1. Они помещаются в Ethernet -пакеты с адресом назначения
равным Ethernet-адресу, соответствующему IP-адресу 1.1.1.2.
Вся IP-сеть обозначается как 0.0.0.0/0. Маршрут на неё называется
маршрутом по умолчанию. Для R1 его можно задать так
[admin@R1] > ip route add gateway=2.2.2.3
Важно, что адрес 2.2.2.3 должен лежать в присоединённой к R1 сети 2.2.2.0/24,
то есть вначале на R1 рекомендуется пропинговать шлюз
[admin@R1] > ping 2.2.2.3
Следует помнить, что для прохождения пинга из исходной точки в точку
назначения необходимо, чтобы на каждом хосте, куда попадёт пакет пинга,
должен быть маршрут в точку конечного назначения. При возврате этого пакета из
точки назначения в исходную точку на каждом хосте, куда попадёт этот пакет
пинга, должен быть маршрут в исходную точку.
Весь мир представит интерфейс-петля bridge1 на R4 с произвольным адресом
6.6.6.6/32
[admin@R4] > interface bridge add
[admin@R4]>ip address add addre=6.6.6.6/32 interface=bridge1
Теперь в нашей таблице маршрутов на R1 есть следующие строки
DST-ADDRESS
PREF-SRC GATEWAY DISTANCE
0 A S 0.0.0.0/0
2.2.2.3
1
1 ADC 1.1.1.0/24
1.1.1.1
ether1
0
2 ADC 2.2.2.0/24
2.2.2.2
ether2
0
3 A S 7.7.7.0/24
1.1.1.2
1
4 ADC 10.0.1.0/24
10.0.1.1
ether7
0
Один и тот же пакет может удовлетворять нескольким строкам таблицы. Так
пакеты в сторону сети 1.1.1.0/24 удовлетворяют и правилу 0 и правилу 1. Система
87
grigoryev.victor@gmail.com http://vmg.pp.ua
всегда использует более точное правило, или правило для сети, у которой маска
имеет больше единиц. В нашем случае это правило 1.
Добавим маршруты на остальных устройствах. Компьютер C6 видит весь
мир через адрес 7.7.7.1
admin@ C6] > ping 7.7.7.1
HOST
SIZE TTL TIME STATUS
7.7.7.1
56 64 4ms
Поэтому
admin@ C6 ] > ip route add gateway=7.7.7.1
Роутер R4 видит весь мир через 2.2.2.2
[admin@R4] > ping 2.2.2.2
HOST
SIZE TTL TIME STATUS
2.2.2.2
56 64 4ms
Поэтому
[admin@R4] > ip route add gateway=2.2.2.2
Роутер R2 видит весь мир через 1.1.1.1. Поэтому
[admin@R2] > ip route add gateway=1.1.1.1
Маршруты прописаны. Проверим, для самого тяжёлого случая: пинг из
внешнего мира в сторону C6
[admin@R4] > ping 7.7.7.2 src-address=6.6.6.6
HOST
SIZE TTL TIME STATUS
7.7.7.2
56 62 1ms
7.7.7.2
56 62 2ms
Посмотрим ARP-таблицы. Например
[admin@R2] > ip arp pr
Flags: X - disabled, I - invalid, H - DHCP, D - dynamic
# ADDRESS MAC-ADDRESS
INTERFACE
0 D 1.1.1.1
00:AA:00:A3:7E:00
ether1
1 D 7.7.7.2
00:AA:00:4C:4F:00
ether2
Найдите эти MAC-адреса Ethernet-интерфейсов у соседних устройств R1 и
С6 (команда int eth pr).
Если два устройства соединены через свич, то с точки зрения сетевого уровня
этот свич можно убрать и соединить устройства напрямую. Обратно. Если два
устройства (с адресами из какой-то IP-сети) соединены напрямую, то между ними
можно вставить свич. Причем к свичу можно подсоединить устройства с адресами
из этой сети. Эти устройства и исходные два устройства будут видеть друг друга
по протоколу IP. Т.е. при рассмотрении маршрутизации можно вообще не
принимать во внимание свичи.
Уберём свичи. Остановите топологию. Сделайте копию папки routing.
Переименуйте её в routingBezSw. Откройте routingBezSw. Измените топологию
согласно рисунку Рис. 7.2, не перепутав интерфейсы
88
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис.7. 2 Топология с рис. 7.1 без свичей
Проверим, для самого тяжёлого случая: пинг из внешнего мира в сторону C6
[admin@R4] > ping 7.7.7.2 src-address=6.6.6.6
В рамках одной Ethernet -сети можно организовать более, чем одну IP-сеть.
Задание. Организуйте Ethernet-сеть из пяти устройств (0, 1, 2, 3 и 4), путём их
подключения к одному роутеру, настроенному как свич. Топологию назовите
Zadanie.Устройства 0, 1 и 2 поместите в одну IP-сеть, а устройства 0, 3 и 4
поместите в другую IP-сеть 2.2.2.0/24. Устройство 0 лежит в двух IP-сетях и будет
маршрутизатором. У него на Ethernet-интерфейс назначьте два IP-адреса 1.1.1.1 и
2.2.2.1 из наших IP-сетей 1.1.1.0/24 и 2.2.2.0/24. Путём назначения статических
маршрутов для устройств 1, 2, 3 и 4 добейтесь, чтобы все устройства пигновали
друг друга по кругу.
Маска /32
Младший адрес в IP-сети определяет саму сеть, а старший предназначен для
широковещания. Поэтому реальное число адресов в сети равно 2 в степени d и
минус 2, где d-число нулей в маске. Для сетей с маской /24 это 2^8-2=254. Для
сетей с маской /30 это 2^8-2=2. Маска /31 - смысла не имеет
Интерес представляют адреса с маской /32, используемые при связи точкаточка. Соберём новую топологию М32 из двух устройств R1 и R2, соединив их
интерфейсы ether1. Стандартно при назначении адреса интерфейс помещается в
сеть, которая определяется этим адресом. Назначим адреса особым образом,
заменив сеть, в которую помещается интерфейс на адрес противоположной
стороны
[admin@
R1]>ip
address
add
address=2.2.2.2/32
network=3.3.3.3
interface=ether1
[admin@ R2]>ip address add addr=3.3.3.3/32 network=2.2.2.2 interface=ether1
Посмотрим таблицы маршрутов
[admin@ R1]>ip route print detail
dst-address=3.3.3.3/32 gateway=ether1
[admin@ R2]>ip route print detail
dst-address=2.2.2.2/32 gateway=ether1
R1 пингует R2 и наоборот
1. Изучим маршрутизацию для адресов с маской /32. Соберите топологию
PtPRouting, изображённую на рисунке рис.7.3. Назначим адреса. Образуем
соединение точка-точка между R2 и R3.
89
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис.7.3 Топология PtPRouting
[admin@
R2]>ip
address
add
address=1.1.1.1/32
network=2.2.2.2
interface=ether1
[admin@ R3]>ip address add address=2.2.2.2/32 network= 1.1.1.1
interface=ether1
Образуем соединение точка-точка между R3 и R4.
[admin@
R3]>ip
address
add
address=3.3.3.3/32
network=4.4.4.4
interface=ether1
[admin@
R4]>ip
address
add
address=4.4.4.4/32
network=3.3.3.3
interface=ether1
Две “точки” в R3 слились в одну на интерфейсе e0. Назначим маршруты
[admin@ R2]>ip route add dst-address=4.4.4.4/32 gateway=2.2.2.2
[admin@ R3]>ip route add dst-address=1.1.1.1/32 gateway=3.3.3.3
R2 пингует R4 и наоборот. Уберём свич, согласно рис.7.4, образуя топологию
PtPRoutingBezSw
Рис. 7.4 Топологии PtPRoutingBezSw, routingRIPPtP, routingRIPPtP1 и routingOSPFPtP
На R3 сменим интерфейс для адреса 3.3.3.3
[admin@R3] > ip ad pr
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS
NETWORK
INTERFACE
0 10.0.3.1/24
10.0.3.0
ether7
1 2.2.2.2/32
1.1.1.1
ether1
2 3.3.3.3/32
4.4.4.4
ether1
[admin@R3] > ip ad set 2 interface=ether2
Крайние роутеры опять пингуют друг друга
Рис. 7.5 Топология unnumbered
90
grigoryev.victor@gmail.com http://vmg.pp.ua
2. Для соединения двух IP-сетей обычно используют третью IP-сеть между
ними. Можно избежать привлечения третьей сети, если использовать так
называемую ненумерованную (unnumbered) адресацию. Имеем две Ethernet-сети
QEMU1,QEMU3 и QEMU2,QEMU4. В них настроены IP-сети 1.1.1.0/24 и
1.1.2.0/24. Рисунок рис.7.5 отражает упрощённую топологию unnumbered: между
QEMU1 и QEMU3 ( QEMU2 и QEMU4) можно поместить свич и к нему
присоединить устройства с адресами из сети 1.1.1.0/24 (1.1.2.0/24). Соединим
Ethernet-сети, соединив QEMU1 и QEMU2, образуя единую Ethernet-сеть
Для соединения двух IP-сетей 1.1.1.0/24 и 1.1.2.0/24 обычно используют
третью IP-сеть, скажем 1.1.3.0/30, настроенную на роутерах QEMU1 и QEMU2 .
Можно избежать привлечения третьей сети, если использовать так называемую
ненумерованную (unnumbered) адресацию.
Настроим первую IP-сеть
QEMU1>ip address add address=1.1.1.1/24 interface=ether1
Назначим ненумерованный адрес
QEMU1>ip address add address=1.1.1.1/32 network=1.1.2.1 interface=ether2
Видим, что адрес
1.1.1.1 назначен на разные интерфейсы и с разными
масками. Настроим адрес и маршрут на QEMU3.
QEMU3>ip address add address=1.1.1.2/24 nterface=ether1
QEMU3>ip route add gateway= 1.1.1.1
Настроим вторую IP-сеть
QEMU2>ip address add address=1.1.2.1/24 interface=ether1
Назначим ненумерованный адрес
QEMU2>ip address add address=1.1.2.1/32 network=1.1.1.1 interface=ether2
Опять, адрес 1.1.2.1 назначен на разные интерфейсы и с разными масками.
Настроим адрес и маршрут на QEMU4.
QEMU4>ip address add address=1.1.2.2/24 interface=ether1
QEMU4>ip route add gateway= 1.1.2.1
Настроим шлюзы между сетями
QEMU1>ip route add gateway=1.1.2.1
QEMU2>ip route add gateway=1.1.1.1
QEMU3 и QEMU4 увидят друг друга по протоколу IP. Проверьте пингом.
Динамическая маршрутизация.
Прописать все статические маршруты уже для средней сети - задача
нереальная. На помощь приходят протоколы динамической маршрутизации.
Рассмотрим, как настраивать маршрутизацию в протоколах RIP, OSPF и BGP.
Теорию рассматривать не будем. Ограничимся соображениями, относящимися
к настройке. Протоколы динамической маршрутизации работают в пределах
какой-то сети. Устройства, на которых активен данный протокол, обмениваются
маршрутной информацией друг с другом в пределах этой сети. В ходе этого обмена
у каждого устройства сети через некоторое время так изменяется таблица
маршрутов, что устройства в сети начинают видеть друг друга. Конкретно, кто
кого увидит, определяется начальными настройками протоколов маршрутизации
на каждом устройстве.
91
grigoryev.victor@gmail.com http://vmg.pp.ua
Протокол BGP предназначен для обмена маршрутной информацией между
автономными системами - большими сетями с единым администратором, в
которых уже настроена маршрутизация. При настройке BGP следует явно указать,
с какими автономными системами надо установить канал обмена маршрутной
информацией. BGP в других автономных системах также должно установить
канал. Стороны на концах каналов называют пирами.
Для протоколов
RIP и OSPF устройство обменивается маршрутной
информацией со своими соседями. Состав информации определяется настройками.
В рамках OSPF устройство отсылает соседям информацию о своих связях с
соседями. Оно же и получает такую информацию от своих соседей. Далее каждое
устройство на основании полученной информации строит карту (граф, топологию)
всей сети. Затем по этой карте создаёт таблицу маршрутов.
В рамках RIP устройства обмениваются между собой целыми таблицами
маршрутов. В начале, устройство отправляет соседям только информацию о
непосредственно присоединённых сетях и получает такую же от соседей. Далее
устройство отправляет соседям обновлённую таблицу. Принцип прост: если от
непосредственного соседа с адресом 1.1.1.1 в присланной таблице маршрутов есть
строка 7.7.7.0/24 *, то сосед знает, что делать с пакетами в сеть 7.7.7.0/24 и значит
их можно ему отправлять, то есть в свою таблицу надо добавить строку 7.7.7.0/24
1.1.1.1
При настройке RIP и OSPF следует указать адреса сетей, которые мы хотим
включить в процесс маршрутизации. Для настройки BGP надо указать адрес пира.
Можно настроить протоколы, чтобы они получали маршрутную информацию
из таких источников: непосредственно-подключенные маршруты, статические
маршруты и другие протоколы маршрутизации. То есть использовать
перераспределение (redistribution) маршрутов. Например. Пусть в сети А
используется OSPF, а в сети В - RIP. Имеется общий для двух сетей
маршрутизатор Z. Тогда на маршрутизаторе Z для
RIP надо включить
перераспределение OSPF, а для OSPF надо включить перераспределение RIP.
RIP
Сделаем копию routingRIP топологии routingBezSw. Запустим routingRIP и
убъём все статические маршруты на всех устройствах. Например для R1
[admin@R1] > ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#DST-ADDRESS
PREF-SRC
GATEWAY DISTANCE
0 A S 0.0.0.0/0
2.2.2.3
1
1 ADC 1.1.1.0/24
1.1.1.1 ether1
0
2 ADC 2.2.2.0/24
2.2.2.2 ether2
0
3 A S 7.7.7.0/24
1.1.1.2
1
4 ADC 10.0.1.0/24
10.0.1.1 ether7
0
[admin@R1] > ip ro remove 0,3
[admin@R1] > ip ro pr
0 ADC 1.1.1.0/24
1.1.1.1
ether1
0
92
grigoryev.victor@gmail.com http://vmg.pp.ua
1 ADC 2.2.2.0/24
2.2.2.2
ether2
0
2 ADC 10.0.1.0/24
10.0.1.1
ether7
0
Добавим на R6 интерфейс-петлю bridge1 с адресом 5.5.5.5/32 (рис.7.6)
[admin@R6] > interface bridge add
[admin@R6]>ip addre add address= 5.5.5.5/32 interface=bridge1
Рис.7.6. Топологии routingRIP, routingRIP1, routingOSPF
1. На всех устройствах разрешим перераспределение непосредственноподключенных маршрутов
routing rip set redistribute-connected=yes
Укажем соседей, которым передаётся маршрутная информация
[admin@R4] routing rip neighbor add address=2.2.2.2
[admin@R1] routing rip neighbor add address=2.2.2.3
[admin@R1] routing rip neighbor add address=1.1.1.2
[admin@R2] routing rip neighbor add address=1.1.1.1
[admin@R2] routing rip neighbor add address=7.7.7.2
[admin@C6] routing rip neighbor add address=7.7.7.1
Крайние роутеры пингуют друг друга
[admin@R4] ping 5.5.5.5 src-address=6.6.6.6
[admin@C6] ping 6.6.6.6 src-address= 5.5.5.5
Натроим лог
[admin@C6] >sys log add topics=route action= memory
Посмотрим лог
[admin@C6] >log print follow-only
17:38:10 route,rip,debug ---=== RIPv2 RESPONSE ===--17:38:10 route,rip,debug prefix=5.5.5.5/32 metric=16 nexthop=0.0.0.0
17:38:10 route,rip,debug prefix=6.6.6.6/32 metric=3 nexthop=0.0.0.0
17:38:36 route,rip,debug 44 bytes sent to 224.0.0.9 via bridge1:
17:38:36 route,rip,debug ---=== RIPv2 RESPONSE ===--17:38:36 route,rip,debug prefix=5.5.5.5/32 metric=16 nexthop=0.0.0.0
17:38:36 route,rip,debug prefix=6.6.6.6/32 metric=4 nexthop=0.0.0.0
17:38:36 route,rip,debug 44 bytes sent to 7.7.7.1 via ether1:
Видим, что широковещание (адрес 224.0.0.9)
17:38:36 route,rip,debug 44 bytes sent to 224.0.0.9 via bridge1:
пойдёт через bridge1 и не выйдет во внешний мир. Маршрутная информация будет
передана в режиме точка-точка
17:38:36 route,rip,debug 44 bytes sent to 7.7.7.1 via ether1:
2. Сделаем копию routingRIP1 топологии routingRIP. Работаем с копией. На
всех устройствах отключим перераспределение непосредственно-подключенных
маршрутов
93
grigoryev.victor@gmail.com http://vmg.pp.ua
routing rip set redistribute-connected=no
Добавим сети для маршрутизации по протоколу RIP
[admin@R4] > routing rip network add network=6.6.6.6/32
[admin@C6] >routing rip network add network=5.5.5.5/32
Интересно наблюдать, что такие пинги проходят
[admin@R4] > ping 5.5.5.5 src-address=6.6.6.6
[admin@C6] > ping 6.6.6.6 src-address=5.5.5.5
У пингов адрес источника либо приёмника равен 5.5.5.5 или 6.6.6.6 .
Посмотрите таблицы маршрутов на всех устройствах, и вы увидите маршруты на
соответствующие сети.
А такие пинги не проходят
[admin@R4] > ping 5.5.5.5
[admin@C6] > ping 6.6.6.6
Рассмотрим ping 5.5.5.5. У ICMP-пакета адрес источника равен адресу R4
2.2.2.3. Пакет дойдёт до адреса 5.5.5.5 на С4, но не вернётся, так как на С4
маршрута в сторону сети 2.2.2.0/24 -нет.
Укажем протоколу RIP рекламировать маршруты о присоединённых сетях
[admin@R4] > routing rip network add network=2.2.2.0/24
[admin@R1] > routing rip network add network=2.2.2.0/24
[admin@R1] > routing rip network add network=1.1.1.0/24
[admin@R2] > routing rip network add network=1.1.1.0/24
[admin@R2] > routing rip network add network=7.7.7.0/24
[admin@C6] >routing rip network add network=7.7.7.0/24
Теперь все устройства в сети попарно пингуют друг друга.
Снова посмотрим лог
[admin@C6] >log print follow-only
Увидим, что широковещание
17:51:26 route,rip,debug 104 bytes sent to 224.0.0.9 via ether1:
пойдёт через ether1 и выйдет во внешний мир. Если C6 подключен к R2 через
свич (как оно обычно и бывает), то широковещание пойдёт на другие устройства,
подключенные к свичу, что не всегда желательно.
Таким образом, использование при настройке RIP рекламирования маршрутов
о присоединённых сетях приводит к широковещанию и лучше вместо него
указывать соседей, как в п.1.
3. Рассмотрим RIP для соединений точка-точка. Возьмите топологию
PtPRoutingBezSw, изображённую на Рис.7.4. Сделайте копию routingRIPPtP.
Запустите её и уничтожьте статические маршруты. На всех устройствах разрешим
перераспределение непосредственно-подключенных маршрутов
routing rip set redistribute-connected=yes
Укажем соседей
[admin@R2] > routing rip neighbor add address=2.2.2.2
[admin@R3] > routing rip neighbor add address=1.1.1.1
[admin@R3] > routing rip neighbor add address=4.4.4.4
[admin@R4] > routing rip neighbor add address=3.3.3.3
Крайние роутеры пингуют друг друга.
94
grigoryev.victor@gmail.com http://vmg.pp.ua
В таблицах маршрутах появятся маршруты на сети чужих tap-интерфейсов,
например
[admin@R2] > ip ro pr
2 ADC 10.0.2.0/24
10.0.2.1
ether7
0
3 ADr 10.0.3.0/24
2.2.2.2
120
4 ADr 10.0.4.0/24
2.2.2.2
120
tap-интерфейс 10.0.4.1 в R4 пингуется из R2 . Другая сторона tap-интерфейса
10.0.4.2 (которая в Ubuntu) нет. Это потому, что у Ubuntu нет маршрута в нашу
сеть.
Сделаем копию routingRIPPtP1 топологии routingRIPPtP. Работаем с копией.
На всех устройствах отключим перераспределение
непосредственноподключенных маршрутов. routing rip set redistribute-connected=no. Соседей
можно убрать
routing rip neighbor remove [find]
Добавим особым образом сети для маршрутизации по протоколу RIP.
[admin@R2] > ip ad pr
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS
NETWORK
INTERFACE
0 10.0.2.1/24
10.0.2.0
ether7
1 1.1.1.1/32
2.2.2.2
ether1
[admin@R2] > routing rip network add network=2.2.2.2
[admin@R3] > ip ad pr
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS
NETWORK
INTERFACE
0 10.0.3.1/24
10.0.3.0
ether7
1 2.2.2.2/32
1.1.1.1
ether1
2 3.3.3.3/32
4.4.4.4
ether2
[admin@R3] > routing rip network add network=1.1.1.1
[admin@R3] > routing rip network add network=4.4.4.4
[admin@R4] > ip ad pr
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS
NETWORK
INTERFACE
0 10.0.4.1/24
10.0.4.0
ether7
1 4.4.4.4/32
3.3.3.3
ether1
[admin@R4] > routing rip network add network=3.3.3.3
[admin@R4] > ping 1.1.1.1
HOST
SIZE TTL TIME STATUS
1.1.1.1
56 63 1ms
Пинги идут. В таблицах маршрутах нет путей на сети чужих tap-интерфейсов,
например
[admin@R2] > ip ro pr
0 ADC 2.2.2.2/32
1.1.1.1
ether1
0
1 ADr 4.4.4.4/32
2.2.2.2
120
2 ADC 10.0.2.0/24
10.0.2.1
ether7
0
95
grigoryev.victor@gmail.com http://vmg.pp.ua
OSPF
1. Возьмите топологию routingRIP на рис. 7.6. Сделайте копию routingOSPF.
Запустите её и уничтожьте RIP-настройки. Настроим OSPF самым простым
образом
[admin@R4]>rout ospf netw add netw=6.6.6.6.32 area=backbone
[admin@R4]>rout ospf netw add netw=2.2.2.0/24 area=backbone
[admin@R1]>rout ospf netw add netw=2.2.2.0/24 area=backbone
[admin@R1]>rout ospf netw add netw=1.1.1.0/24 area=backbone
[admin@R2]>rout ospf netw add netw=1.1.1.0/24 area=backbone
[admin@R2]>rout ospf netw add netw=7.7.7.0/24 area=backbone
[admin@C6]>rout ospf netw add netw=7.7.7.0/24 area=backbone
[admin@C6]>rout ospf netw add netw=5.5.5.5/32 area=backbone
Появились необходимые маршруты, например
[admin@C6] > ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#
DST-ADDRESS
PREF-SRC
GATEWAY
DISTANCE
0 ADo 1.1.1.0/24
7.7.7.1
110
1 ADo 2.2.2.0/24
7.7.7.1
110
2 ADC 5.5.5.5/32
5.5.5.5
bridge1
0
3 ADo 6.6.6.6/32
7.7.7.1
110
4 ADC 7.7.7.0/24
7.7.7.2
ether1
0
5 ADC 10.0.6.0/24
10.0.6.1
ether7
0
Проверим
[admin@C6] > ping 6.6.6.6 src-address=5.5.5.5
HOST
SIZE TTL TIME STATUS
6.6.6.6
56 62 12ms
2. Рассмотрим OSPF для соединений точка точка. Возьмите топологию
routingRIPPtP. Сделайте копию routingOSPFPtP. Запустите её и уничтожьте там
RIP-настройки.
Добавим особым образом сети для маршрутизации по протоколу OSPF.
[admin@R2]>routi ospf netw add netwo=2.2.2.2 area=backbone
[admin@R3]>routi ospf netw add networ=1.1.1.1 area=backbone
[admin@R3]>routi ospf netw add networ=4.4.4.4 area=backbone
[admin@R4]>routi ospf netw add networ=3.3.3.3 area=backbone
Проверим
[admin@R4] > ping 1.1.1.1
HOST
SIZE TTL TIME STATUS
56 63 1ms
Рис 7.7. Топология bgp
96
grigoryev.victor@gmail.com http://vmg.pp.ua
Перераспределение маршрутов и BGP
Соберите топологию bgp изображённую на Рис 7.7. Запустите её и назначьте
адреса согласно рисунку. В каждом устройстве создайте пустые мосты bridge1 и
назначьте на них адреса 2.2.2.2, 11.0.1.1, 11.1.1.1 и 3.3.3.3 с маской /32 согласно
рисунку. Остальные адреса имеют маску /24.
Топология состоит из двух автономных систем 1 и 2. В каждой из них
настройте OSPF. Для автономной системы 1
[admin@R0]>rout ospf netw add netw=1.1.2.0/24 area=backbone
[admin@R2]>rout ospf netw add netw=1.1.2.0/24 area=backbone
[admin@R2]>rout ospf netw add netw=2.2.2.2/32 area=backbone
Для автономной системы 2
[admin@R1]>rout ospf netw add netw=1.1.3.0/24 area=backbone
[admin@R3]>rout ospf netw add netw=1.1.2.0/24 area=backbone
[admin@R3]>rout ospf netw add netw=3.3.3.3/32 area=backbone
На R0 и R1 благодаря OSPF появятся маршруты на сети мостов
[admin@R0] > ip route print
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#
DST-ADDRESS
PREF-SRC
GATEWAY
DISTANCE
2 ADo 2.2.2.2/32
1.1.2.2
110
[admin@R1] > ip route print
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#
DST-ADDRESS
PREF-SRC
GATEWAY
DISTANCE
2 ADo 3.3.3.3/32
1.1.3.2
110
Настроим BGP для связи автономных систем AS1 и AS1. Назначим номера
автономных систем 1 и 2
[admin@R0] >routing bgp instance set 0 as=1 router-id=11.0.1.1
[admin@R1] >routing bgp instance set 0 as=2 router-id=11.1.1.1
Рекомендуется устанавливать BGP-сессию между интерфейсами петлями, в
роли которых у нас выступают пустые мосты. Но сначала необходимо настроить
маршрут между адресами мостов 11.0.1.1 и 11.1.1.1
[admin@R0] >ip ro add dst-address=11.1.1.1/32 gateway=1.1.1.2
[admin@R1] >ip ro add dst-address=11.0.1.1/32 gateway=1.1.1.1
Установим BGP-сессию
[admin@R0]>routing bgp peer add remote-address=11.1.1.1 remote-as=2
multihop=yes update-source=bridge1
[admin@R1]> routing bgp peer add remote-address=11.0.1.1 remote-as=1
multihop=yes update-source=bridge1
В качестве источника BGP-обновлений выбран мост bridge1.
Об установке BGP-сессии лучше нам покажет Windox в поле Uptime меню
routing bgp peer. Для всех роутеров в winbox cмотрим на таблицы маршрутов (ip
route). Они не поменялись. Включим в BGP перераспределение OSPF-маршрутов
[admin@R0] > routing bgp instance set 0 redistribute-ospf=yes
97
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@R1] > routing bgp instance set 0 redistribute-ospf=yes
На R0 и R1 появятся новые маршруты,
[admin@R0] > ip route print
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#DST-ADDRESS PREF-SRC GATEWAY DISTANCE
2 ADo 2.2.2.2/32
1.1.2.2
110
3 ADb 3.3.3.3/32
11.1.1.1
20 (от OSPF на R1)
[admin@R1] > ip route print
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#DST-ADDRESS PREF-SRC GATEWAY DISTANCE
2 ADb 2.2.2.2/32
11.0.1.1
20 (от OSPF на R0)
3 ADo 3.3.3.3/32
1.1.3.2
110
На R2 и R3 ничего не изменилось. Включим в OSPF перераспределение BGP
-маршрутов.
Заметим, что в реальности это делать нельзя, так как размеры BGP-таблиц
включают маршруты для всего мира и содержат миллионы строк. В корпоративной
сети эти маршруты вовсе не надо.
[admin@R0]>routin ospf instanc set 0 redistribute-bgp=as-type-1
[admin@R1]>routin ospf instanc set 0 redistribute-bgp=as-type-1
На R0 и R1 ничего не изменилось. Но на R2 и R3 появились новые
маршруты.
[admin@R2] > ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#DST-ADDRESS PREF-SRC GATEWAY DISTANCE
2 ADo 3.3.3.3/32
1.1.2.1
110
(от BGP на R0)
[admin@R3] > ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
1 ADo 2.2.2.2/32
1.1.3.1
110
(от BGP на R1)
Следующие пинги будут успешными
[admin@R2] > ping 3.3.3.3 src-address=2.2.2.2
[admin@R3] > ping 2.2.2.2 src-address=3.3.3.3
А эти нет
[admin@R2] > ping 3.3.3.3
[admin@R3] > ping 2.2.2.2
Пинги дойдут до назначения но не смогут вернуться. Это объясняется тем, что
по пути обратного следования пакеты пингов не найдут маршрута к источнику.
Заставим BGP анонсировать сети
[admin@R0] > routing bgp network add network=1.1.2.0/24
[admin@R1] > routing bgp network add network=1.1.3.0/24
Теперь пинги пойдут.
98
grigoryev.victor@gmail.com http://vmg.pp.ua
Итоговая таблица маршрутов (без маршрутов на сети присоединённых
интерфейсов)
[admin@R2] > ip ro pr
1 ADo 1.1.3.0/24
1.1.2.1
110
3 ADo 3.3.3.3/32
1.1.2.1
110
[admin@R0] > ip route print
2 ADb 1.1.3.0/24
11.1.1.1
20
3 ADo 2.2.2.2/32
1.1.2.2
110
4 ADb 3.3.3.3/32
11.1.1.1
20
7 A S 11.1.1.1/32
1.1.1.2
1
admin@R1] > ip route print
1 ADb 1.1.2.0/24
11.0.1.1
20
3 ADb 2.2.2.2/32
11.0.1.1
20
4 ADo 3.3.3.3/32
1.1.3.2
110
6 A S 11.0.1.1/32
1.1.1.1
1
[admin@R3] > ip ro pr
0 ADo 1.1.2.0/24
1.1.3.1
110
2 ADo 2.2.2.2/32
1.1.3.1
110
Например, ни из R2 ни из R3 недоступна сеть 1.1.1.0/24. В этом нет
недостатка. Эта сеть ничто иное, как канал связи между автономными системами.
Устройства, входящие в эту сеть пингуются по другим своим адресам. При
желании легко настроить недостающие маршруты в эту сеть. Мы не будем этого
делать.
Требования для сдачи работы
Предъявить 13 работающих топологий routing, routingBezSw, Zadanie, М32,
PtPRoutingBezSw,
unnumbered,
routingRIP,
routingRIP1,
routingRIPPtP,
routingRIPPtP1, routingOSPF, routingOSPFPtP и bgp.
99
grigoryev.victor@gmail.com http://vmg.pp.ua
8. Балансировка нагрузки
Монопольный канал
Равномерное распределение
100
103
Собираем топологию lb1 согласно рисунку Рис.8.1. Роутеры R1 и R4
взаимодействуют с роутером R3 через роутер R2. Между R2 и R3 есть два канала
связи.
Рассмотрим 2 варианта балансировки нагрузки: монопольный канал и
равномерное распределение.
1. Монопольный канал. Потребуем, чтобы трафик от роутера R1 всегда шел
по каналу связи от интерфейса e0 роутера R2 к интерфейсу e0 роутера R3, а трафик
от R4 всегда шел от интерфейса e1 R2 к интерфейсу e1 R3
Рис.8.1. Топология lb1
Назначаем адреса и шлюзы
[admin@R2] >ip ad ad address=1.2.3.2/24 interface=ether1
[admin@R2] >ip ad ad address=2.2.3.2/24 interface=ether2
[admin@R2] >ip ad ad address=1.1.2.2/24 interface=ether3
[admin@R2] >ip ad ad address=1.4.2.2/24 interface=ether4
[admin@R1] >ip ad ad address=1.1.2.1/24 interface=ether1
[admin@R1] >ip ro add g= 1.1.2.2
[admin@R4] >ip ad ad address=1.4.2.1/24 interface=ether1
[admin@R4] >ip ro add g= 1.4.2.2
R3
[admin@R3] >ip ad ad address=1.2.3.3/24 interface=ether1
[admin@R3] >ip ad ad address= 2.2.3.3/24 interface=ether2
Явно пропишем на R3 желаемые маршруты для обратного трафика в сторону
R2
Через e0 (ether1 )
[admin@R3] >ip ro add dst-address=1.1.2.0/24 gateway=1.2.3.2
Через e1 (ether2)
[admin@R3] >ip ro add dst-address=1.4.2.0/24 gateway=2.2.3.2
100
grigoryev.victor@gmail.com http://vmg.pp.ua
С прямым трафиком от R2 к R3 сложнее. Пометим на R2 пакеты метками
1.1.2.0in либо 1.4.2.0in в зависимости от сети источника 1.1.2.0/24(от R1) или
1.4.2.0/24 (от R4)
[admin@R2] >ip firewall mangle add chain=prerouting action= mark-routing
new-routing-mark=1.1.2.0in src-address=1.1.2.0/24
[admin@R2]>ip firewall mangle add chain=prerouting action= mark-routing
new-routing-mark=1.4.2.0in src-address=1.4.2.0/24
Рис.8.2. Тест полосы пропускания
Рис.8.3. Трафик на R3
101
grigoryev.victor@gmail.com http://vmg.pp.ua
В зависимости от полученной метки 1.1.2.0in либо 1.4.2.0in, роутер R2
направляет пакеты на различные адреса и различные интерфейсы:
[admin@R2]>ip ro add gateway=1.2.3.3%ether1 routing-mark=1.1.2.0in
[admin@R2] >ip ro add gateway==2.2.3.3%ether2 routing-mark=1.4.2.0in
Запустим Winbox на R1 и выполним тест полосы пропускания в сторону
адреса 2.2.2.3 на R3 (Рис.8.2). На Рис.8.3 видим, что весь трафик на R3 пошёл через
ether1, то есть по пути от R2 e0 к R3 e0.
Рис.8.4. Тест полосы пропускания
Запустим Winbox на R4 и выполним тест полосы пропускания в сторону
адреса 1.2.3.3 на R3 (Рис.8.4). На Рис.8.5 видим, что весь трафик на R3 пошёл через
ether2, то есть по пути от R2 e1 к R3 e1.
Рис.8.5. Трафик на R3
102
grigoryev.victor@gmail.com http://vmg.pp.ua
2. Равномерное распределение. Делаем копию lb1 топологии lb. Потребуем,
чтобы трафик от R1 и R4 к R3 равномерно распределялся по двум путям
1. От интерфейса e0 роутера R2 к интерфейсу e0 роутера R3
2. От интерфейса e1 роутера R2 к интерфейсу e1 роутера R3
Уберём старую маркировку пакетов на R2
[admin@R2] >ip firewall mangle print
[admin@R2] >ip firewall mangle rem
и сделаем новую маркировку
[admin@R2]>ip firewall mangle add chain=prerouting action= mark-routing
new-routing-mark=gw1 passthrough=no nth=2,1
[admin@R2]>ip firewall mangle add chain=prerouting action=mark-routing
new-routing-mark=gw2 passthrough=no nth=2,2
Все пакеты перед маршрутизацией получат номера 1,2,1,2,1,2, образуя пары.
Каждый первый пакет в каждой паре получает маркер gw1, каждый второй в
каждой паре получает маркер gw2.
Найдите на R2 маршруты с опцией routing-mark
[admin@R3] >ip ro pri
и удалите их
[admin@R3] >ip ro rem …
Добавляем маршруты с новой опцией routing-mark
[admin@R2] >ip route add gateway=2.2.3.3 routing-mark=gw1
[admin@R2] >ip route add gateway=1.2.3.3 routing-mark=gw2
Тем самым мы равномерно распределили прямой трафик. Распределим
обратный трафик. Сделать это проще всего, если указать два шлюза. Уберём на R3
старые два маршрута для обратного трафика (ip ro pri, ) и добавляем сразу два
шлюза
[admin@R3] >ip ro add gateway=1.2.3.2,2.2.3.2
Запуская на R1 или R4 тест полосы пропускания в сторону адреса 1.2.3.3
или 2.2.3.3 на R3. На Рис.8.6 видим одновременную загрузку двух интерфейсов.
Рис.8.6. Одновременная загрузка двух интерфейсов
Требования для сдачи работы
Предоставить работающие топологии lb и lb1
103
grigoryev.victor@gmail.com http://vmg.pp.ua
9. Производные от PPP протоколы и OpenVPN
PPP
Протоколы PPTP, SSTP, L2TP, OpenVPN и PPPoE
Протоколы системных событий
Настройка PPP
Настройка PPTP
Настройка L2TP
RSA-сертификаты
Настройка SSTP
Настройка OpenVPN
Особенности работы из командной строки
104
106
108
108
111
113
114
116
119
121
PPP
PPP (англ. Point-to-Point Protocol) — двухточечный протокол канального
уровня сетевой модели OSI. Обычно используется для установления прямой связи
между двумя узлами сети, причем он может обеспечить аутентификацию
соединения, шифрование и сжатие данных. Используется на многих типах
физических сетей: нуль-модемный кабель, телефонная линия, сотовая связь,
последовательные каналы связи и т. д.
PPP представляет собой целое семейство протоколов: протокол управления
линией связи (LCP - Link Control Protocol), протокол управления сетью (NCP Network Control Protocol), протоколы аутентификации (PAP, CHAP),
многоканальный протокол PPP (MLPPP), протокол сжатия CCP (Compression
Control Protocol), протокол шифрования ECP (Encryption Control Protocol) и т. д.
PPP протокол был разработан на основе протокола HDLC и дополнен
некоторыми возможностями, которые до этого встречались только в коммерческих
протоколах.
PPP позволяет работать нескольким протоколам сетевого уровня на одном
канале связи. Другими словами, внутри одного PPP-соединения могут передаваться
потоки данных различных сетевых протоколов (IP, Novell IPX и т. д.), а также
данные протоколов канального уровня локальной сети. После установления
соединение для настройки каждого сетевого протокола используется протокол NCP.
Он используется для согласования и определения настроек сетевого уровня, таких
как сетевой адрес или настройки сжатия.
Каждый кадр PPP всегда начинается и завершается флагом 0x7E. Затем следует
байт адреса и байт управления, которые тоже всегда равны 0xFF и 0x03
соответственно. В связи с вероятностью совпадения байтов внутри блока данных с
зарезервированными флагами, существует система автоматической корректировки
«проблемных» данных с последующим восстановлением.
Флаг Адрес
0x7E 0xFF
1
1
Управление
0x03
1
Данные
1-1500
Контрольная сумма
2
Флаг 0x7E
1
Поля «Флаг», «Адрес» и «Управление» образуют заголовок кадра HDLC.
104
grigoryev.victor@gmail.com http://vmg.pp.ua
Заголовок HDLC может быть опущен и не передаваться, если PPP в процессе
конфигурирования с помощью LCP договорится об этом с другой стороной.
Поле «Данные», PPP кадра, в свою очередь разбиты ещё на два поля: флаг
протокола (1-2 байта), который определяет тип данных до конца кадра и сами
данные.
Флаги протокола от 0x0XXX до 0x3XXX идентифицируют протоколы сетевого
уровня. Например, популярному IP протоколу соответствует флаг 0x0021, а
Novell IPX — 002B.
•
Флаги протокола от 0x4XXX до 0x7XXX идентифицируют протоколы с низким
уровнем трафика.
•
Флаги протокола от 0x8XXX до 0xBXXX идентифицируют протокол
управления сетью (NCP).
•
Флаги протокола от 0xCXXX до 0xEXXX идентифицируют управляющие
протоколы. Например, 0xC021 обозначает, что кадр содержит данные
протокола управления соединением LCP.
Фазы PPP:
1. Link Dead. Эта фаза наступает, когда связь нарушена, либо одной из сторон
указали не подключаться (например, пользователь завершил модемное
соединение.)
2. Установки связи (Link Establishment Phase). В данной фазе проводится
настройка линии с помощью протокола LCP. Если настройка была успешно,
управление переходит в фазу аутентификации, либо в фазу Network-Layer
Protocol, в зависимости от того, требуется ли аутентификация.
3. Аутентификации
(Authentication
Phase).
Данная
фаза
является
необязательной. Она позволяет сторонам проверить друг друга перед
установкой соединения. Если проверка успешна, управление переходит в фазу
Network-Layer Protocol.
4. Протокола сетевого уровня (Network-Layer Protocol Phase). В данной фазе
вызывается NCP для желаемого протокола. Например, IPCP используется для
установки IP сервисов. Передача данных также проходит в этой фазе. Закрытие
сетевых протоколов тоже включается в данную фазу.
5. Link Termination Phase. Эта фаза закрывает соединение. Она вызывается в
случае ошибок аутентификации, если было настолько много ошибок
контрольных сумм, что обе стороны решили закрыть соединение, если
соединение неожиданно оборвалось, либо если пользователь отключился.
Данная фаза пытается закрыть все настолько аккуратно, насколько возможно в
данных обстоятельствах.
•
Протокол LCP обеспечивает автоматическую настройку интерфейсов на
каждом конце (например, установка размера пакетов). Так как LCP
инкапсулируется в кадры РРР, то необходимо установление первоначального
соединения РРР. После установления PPP-соединения передающее и принимающее
устройство обмениваются пакетами LCP для уточнения параметров соединения и
специфической информации, которая потребуется при передаче данных. Далее
105
grigoryev.victor@gmail.com http://vmg.pp.ua
LCP переопределяет это соединение. Устройства не могут передавать данные друг
другу по сети, прежде чем LCP пакеты не определят доступность устанавливаемого
соединения.
LCP протокол осуществляет идентификацию соединяющихся устройств.
Далее он: разрешает или отклоняет установку соединения; определяет приемлемый
размера кадров для передачи (MTU) и приёма (MRU); осуществляет ограничение
по ширине канала; шифрует и аутентифицирует соединения; сжимает данные;
обнаруживает петли маршрутизации; проверяет синтаксис и ошибки в
конфигурации; разрывает соединения, если какое-либо значение превышает
заданный параметр.
Среди протоколов аутентификации известен CHAP (Challenge-Handshake
Authentication Protocol), который является предпочтительным для соединений с
провайдерами. Всё еще иногда используется устаревший протокол PAP (Password
Authentication Protocol ). Другим вариантом аунтентификации через PPP является
Extensible Authentication Protocol (EAP).
После того, как соединение было установлено, поверх него может быть
настроен сетевой уровень. Если в качестве протокола сетевого уровня используется
IP, то для настройки используется протокол IPCP (Internet Protocol Control Protocol
- протокол управления IP) как частный случай протокола NCP. IPCP использует тот
же механизм обмена пакетами, что и LCP. Обмен пакетами IPCP не происходит до
тех пор, пока PPP не завершит успешно фазу установки связи по протоколу LCP и,
если требуется и аутентификация, то и фазу аутентификации. В ходе фазы
протокола сетевого уровня PPP-серверу назначается IP-адрес. Далее клиенту по
протоколу IPCP передаётся назначенный ему IP-адрес.
После установки соединения, стороны, участвующие в соединении, могут
быть объединены в мост. Для согласования параметров мостов используется ещё
одна разновидность NCP – протокол управления мостами BCP (bridge control
protocol)
Протоколы PPTP, SSTP, L2TP, OpenVPN и PPPoE
PPTP (Point-to-Point Tunneling Protocol) — туннельный протокол типа точкаточка. L2TP (Layer 2 Tunneling Protocol — протокол туннелирования второго
уровня. Все они основываются на протоколе PPP, включают его в себя полностью и
отличаются от него лишь способом организации канала связи. Во всех случаях для
организации канала используется уже существующая связь между клиентом и
сервером по протоколу IP.
Мы можем с помощью анализаторе пакетов Wireshark мониторить трафик и
наблюдать инкапсуляцию протоколов.
После организации PPTP-туннеля (на рис. 9.1 приведён соответствующий
снимок мониторинга трафика) и установления TCP/IP-соединения поверх туннеля,
имеет место следующая инкапсуляция протоколов (если не используется
шифрование и сжатие): TCP в IP в PPP в GRE в IP. Стек протоколов можно видеть
на Рис. 9.2.
106
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 9.1. Мониторинг PPTP-трафика
Рис. 9.2. Стек протоколов PPTP
Протокол L2TP и для организации связи и для передачи данных использует
UDP-протокол. Для установки связи используется UDP порт 1701. Далее всё берёт
на себя PPP. На Рис. 9.3 приведён соответствующий снимок мониторинга трафика
Рис. 9.3 Мониторинг L2TP -трафика
107
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 9.4 Стек протоколов L2TP
После организации связи и установления TCP-соединения поверх L2TPтуннеля имеет место следующая инкапсуляция протоколов (если не используется
шифрование и сжатие): TCP в IP в PPP в L2TP в UDP в IP. Стек протоколов можно
видеть на Рис. 9.4.
В протоколе SSTP (Secure Socket Tunneling Protocol – протокол безопасного
туннелирования сокетов) для организации канала используется
шифрование по
протоколу SSL. В SSTP установка соединения и обмен данными происходит в
зашифрованном виде и мы не сможем с помощью программы Wireshark наблюдать
инкапсуляцию протоколов.
OpenVPN не использует PPP. OpenVPN для организации связи и для передачи
данных использует протокол UDP или TCP. Далее в поля данных этих протоколов
помещаются кадры протоколов IP (интерфейс tun) или Ethernet (интерфейс tap),
которые шифруются с помощью OpenSSL. Процедура установки
связи и
поддержка протокола сетевого уровня являются оригинальными разработками. Для
установки связи по OpenSSL протоколу клиент и сервер используют сертификаты
и/или пароли. В OpenVPN установка соединения и обмен данными происходит в
зашифрованном виде и мы ничего не увидим в анализаторе пакетов.
PPPoE (Point-to-point protocol over Ethernet) — протокол передачи кадров PPP
через Ethernet. В основном используется устройствами широкополосного доступа
DSL. PPPoE позволяет организовать через Ethernet соединение с именем и паролем.
Клиент посылает широковещательный Ethernet-фрейм, на который должен
ответить один из PPPoE-серверов. PPPoE-сервера посылает клиенту ответ. Клиент
выбирает подходящий сервер и посылает ему запрос на соединение. Сервер
посылает клиенту подтверждение. Между сервером и клиентом создается
виртуальный канал, который идентифицируется идентификатором сессии и MACадресами клиента и сервера. Затем в этом канале поднимается PPP соединение.
Протоколы системных событий
В случае неудачи при соединении по всем протоколам, рассматриваемым в
этой работе, надо смотреть протоколы системных событий (логи). Вначале
добавим лог для нужного протокола: system->loginf->+. В появившемся окне New
Log Rule в поле Topics добавляем нужный протокол PPP, PPTP, L2TP, SSTP,
OpenVPN или PPPoE. Сам лог смотрим в пункте Log главного меню Winbox во
время попытки соединения.
Настройка PPP
Воспользовавшись шаблоном, создайте топологию PPP (рис. 9.5). Выбирая в
GNS3 в контекстном меню маршрутизаторов configure -> qemu options, добавим в
108
grigoryev.victor@gmail.com http://vmg.pp.ua
маршрутизатор
(к
существующей
конфигурации
тап-интерфейсов)
последовательные порты, соединённые друг с другом с помощью UDP
R0 -serial udp::D555@:D556
R1 -serial udp::D556@:D555
Рис. 9.5. Топология PPP.
D – ваш номер. Имеем модель соединения двух устройств с помощью
последовательного канала связи или, если конкретно, то с помощью нуль-модема.
Запустим топологию.
Наберём в консоли ubuntu netstat –u –p
Рис. 9.6. Два UDP-соединения
и видим на рис. 9.6, что два экземпляра программы qemu (внутри qemu запущен
маршрутизатор) установили между собой два UDP-соединения, что обеспечило
между ними двустороннюю дуплексную связь. Это соединение моделирует связь
последовательных портов двух маршрутизаторов через ноль-модем.
В консоли R0 вводим
[admin@R0] > port print detail
name="serial0" used-by="Serial Console" channels=1 baud-rate=9600 data-bits=8
parity=none stop-bits=1 flow-control=none
name="serial1" used-by="" channels=1 baud-rate=9600 data-bits=8 parity=none
stop-bits=1 flow-control=none
Видим, что появился новый последовательный порт serial1, который работает
на скорости 9600 бит в секунду, с длинной байта в 8 бит, без контроля чётности, с
одним стоп-битом и без управления передачей. Маршрутизатор Mikrotik имеет
встроенный последовательный порт serial0. Этот порт используется консолью
(терминалом) маршрутизатора.
Назначим на тап-интерфейсы маршрутизаторов R0 и R1 адреса 10.D.1.1 и
10.D.0.1. Запустим в Ubuntu два экземпляра программы winbox для конфигурации
маршрутизаторов через тап-интерфейс.
Итак, между маршрутизаторами R0 и R1 установлен последовательный канал
связи. Осуществим через этот канал соединение маршрутизаторов по проколу PPP.
Пусть R0 будет PPP-сервером, а R1 - PPP-клиентом.
109
grigoryev.victor@gmail.com http://vmg.pp.ua
Mikrotik RouterOS обеспечивает масштабируемую аутентификацию,
авторизацию и учёт пользователей AAA(Authentication, Athorization and
Accounting). Локальная аутентификация выполняется с помощью базы данных
профилей и базы данных пользователей. Действительная конфигурация для
данного пользователя составляется из записи базы данных пользователей,
соответствующей записи из базы данных профилей и записи из базы данных
профилей, которая является записью по умолчанию для той службы, к которой
пытается подсоединиться пользователь. Запись по умолчанию из базы данных
профилей имеет самый низкий приоритет. Запись из записи базы данных
пользователей имеет наивысший приоритет, за некоторыми исключениями,
касающимися адресации.
Рис. 9.7. PPP-сервер
В winbox для R0 добавим PPP-пользователя q с паролем q (PPP->Secrets +).
Добавим PPP-сервер (PPP->Interfaces + PPP-server), связав его с новым
последовательным портом serial в режиме ноль-модема (рис. 9.7).
Рис.9.8 PPP-клиент
110
grigoryev.victor@gmail.com http://vmg.pp.ua
В winbox R1 добавим PPP-клиент (PPP->Interfaces + PPP-client ->advanced
mode) связав его с новым последовательным портом serial в режиме ноль-модема
(рис. 9.8). В закладке PPP добавим PPP-пользователя q с паролем q, очистив флаги
соединения по запросу, default route и DNS. рис. 9.9.
Рис. 9.9. PPP-клиент
У клиента и сервера видим статус connected (соединён). Они соединились на
втором сетевом уровне.
Настройка PPTP
Для реализации PPTP-, SSTP-, L2TP- и OpenVPN- канала между
маршрутизаторами R0 и R1 в топологии, изображённой на рис. 9.5 нужно иметь IPканал между этими маршрутизаторами. Сделаем его с помощью модели Интернета.
Для этого, как и ранее пропишем маршруты в сторону тап-инерфейса Ubuntu (тапсеть 0).
Рис. 9.10. Топология PPPInet (тап-сеть 0).
[admin@R0]>ip rou add dst-address=10.0.1.0/16 gatewa=10.0.0.2
111
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@R1]>ip rou add dst-address=10.0.0.0/16 gatewa=10.0.1.2
Теперь маршрутизаторы R0 и R1 видят друг друга по IP. Полученную
топологию назовём PPPInet и изобразим в виде рис. 9.10. Осуществим соединение
маршрутизаторов по протоколу PPTP. Пусть R0 будет PPTP-сервером, а R1 PPTPклиентом.
В winbox R0 добавим PPTP-сервер (PPP->кнопка PPTP-server) (рис. 9.11).
Рис. 9.11. PPTP-сервер
.
Рис. 9.12. PPTP-клиент
112
grigoryev.victor@gmail.com http://vmg.pp.ua
В winbox R1 добавим PPTP-клиент (PPP->Interfaces + PPTP-client ->Dial Out),
указав адрес PPTP-сервера 10.0.0.1 и добавив созданного ранее PPP-пользователя
q с паролем q. рис. 9.12. У клиента и сервера видим статус connected (соединён).
Они соединились на втором сетевом уровне
Рис. 9.13. L2TP –сервер
Настройка L2TP
Осуществим соединение маршрутизаторов по протоколу L2TP. Процесс
соединения аналогичен PPTP. Пусть R0 будет L2TP-сервером, а R1 L2TPклиентом. В winbox R0 добавим L2TP-сервер (PPP->кнопка L2TP-server) (рис.
9.13). В winbox R1 добавим L2TP-клиент (PPP->Interfaces + L2TP-client ->Dial Out),
указав адрес L2TP-сервера 10.0.0.1 и добавив созданного ранее PPP-пользователя
q с паролем q (рис. 9.14).
Рис. 9.14. L2TP –клиент
113
grigoryev.victor@gmail.com http://vmg.pp.ua
У клиента и сервера видим статус connected (соединён). Они соединились на
втором сетевом уровне.
RSA-сертификаты
Механизм сертификатов основан на технологии
несимметричного
шифрования, осуществляемой парой ключей – открытым и закрытым. Если
сообщение зашифровано открытым ключом, то может быть расшифровано только
закрытым ключом и если сообщение зашифровано закрытым ключом, то может
быть расшифровано только открытым ключом. Обмениваются только открытыми
ключами.
Можно предложить такой механизм аутентификации (проверки подлинности),
основанный на несимметричном шифровании
Б шлёт А запрос на аутентификацию.
А в ответ шлёт Б случайную последовательность.
Б шифрует её закрытым ключом и отправляет зашифрованное А.
А расшифровывает принятое открытым ключем и сравнивает с отосланным.
Если совпало, то Б это Б.
А аутентифицировал Б и сообщает ему об этом
Раздачей сертификатов управляет удостоверяющий центр. Сертификат
содержит «паспортные» данные получателя сертификата, открытый ключ и
цифровую подпись удостоверяющего центра (зашифрованные открытым ключом
удостоверяющего центра паспортные данные и открытый ключ из этого
сертификата).
Обмен сертификатами равносилен обмену открытыми ключами. Два
корреспондента получив сертификаты, могут ими обменятся и затем проверить их
на подлинность, если у них есть сертификат удостоверяющего центра. Для этого
они должны зашифровать данные этого сертификата открытым ключом
удостоверяющего центра и сравнивают с цифровой подписью проверяемого
сертификата.
Сертификаты можно использовать для аутентификации (проверки
подлинности). Уже сама проверка подписи присланного сертификата может
являться аутентификацией отправителя.
В домашних условиях вы можете попрактиковаться с сертификатами,
используя программу openssl, встроенную в пакет openvpn для Windows. openssl
расположена в папке easy-rsa. Работать с openssl надо только через cmd. Перейдите
в папку easy-rsa.
Способов работы с сертификатами с помощью openssl много. Так вместе с
openvpn поставляется набор командных файлов для работы с сертификатами.
Порядок работы с ними описан в файле readme.txt. Анализируя командные файлы
можно понять принцип работы с сертификатами. Рассмотрим эти принципы.
Вам надо стать удостоверяющим центром. Для этого создаём закрытый ключ
удостоверяющего центра по алгоритму DES длиной 1024 бит
openssl genrsa -des3 -out ca.key 1024
Generating RSA private key, 1024 bit long modulus
..............++++++
114
grigoryev.victor@gmail.com http://vmg.pp.ua
..........................++++++
e is 65537 (0x10001)
Enter pass phrase for ca.key:qqqqq
Verifying - Enter pass phrase for ca.key:qqqqq
Далее на основании этого закрытого ключа создаём самоподписанный
корневой сертификат CA (Certificate Authority) ca.crt
openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -config openssl.cnf
Отредактируйте паспортные данные в файле openssl.conf, анализируя
полученные ошибки. Так, например строку $ENV::KEY_COUNTRY надо будет
заменить на UA. При использовании командных файлов используются значения
переменных окружения, устанавливаемых в файле vars.bat. В результате получим
Country Name (2 letter code) [UA]:
State or Province Name (full name) [DP]:
Locality Name (eg, city) [DNSK]:
Organization Name (eg, company) [DNU]:
Organizational Unit Name (eg, section) [FFECS]:
Common Name (eg, your name or your server's hostname) [CA]:
Name [name_default]:
Email Address [mail@ca.com]:
Для
получения сертификата в удостоверяющем центре надо: создать
закрытый ключ, создать на основе этого ключа запрос на сертификат и отослать
запрос в удостоверяющий центр. Удостоверяющий центр на основании запроса
создаёт и подписывает сертификат и отправляет его запросившему сертификат.
Для простоты будем получать сертификаты у самого себя.
Создаём закрытый ключ qqq.key по алгоритму DES длиной 1024 бит
openssl genrsa -des3 -out qqq.key 1024
Создаём
запрос на сертификат у самого себя, то есть у своего
удостоверяющего центра
openssl req -new -key qqq.key -out qqq.csr -config openssl.cnf
Country Name (2 letter code) [UA]:
State or Province Name (full name) [DP]:
Locality Name (eg, city) [DNSK]:
Organization Name (eg, company) [DNU]:
Organizational Unit Name (eg, section) [FFECS]:
Common Name (eg, your name or your server's hostname) [CA]:CNqqq
Name [name_default]:Nameqqq
Email Address [mail@ca.com]:qqq@mail.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
115
grigoryev.victor@gmail.com http://vmg.pp.ua
Отправлять запрос qqq.csr самому себе. Тем самым создаём и подписываем
сертификат qqq.crt
openssl x509 -req -days 3650 -in qqq.csr -CA ca.crt -CAkey ca.key -set_serial
01 -out qqq.crt
Signature ok
subject=/C=UA/ST=DP/L=DNSK/O=DNU/OU=FFECS/CN=CNqqq/name=Nameq
qq/emailAddress=qqq@mail.com
Getting CA Private Key
Enter pass phrase for ca.key:qqqqq
Теперь мы понимаем, что такое сертификаты как их создавать. Заметим, что
мы предельно упростили процесс получения сертификата. Наш сертификат не
содержит паспортных данных. Всё изложенное надо понимать только как
иллюстрацию к процессу получения сертификата. В реальности надо работать с
командными файлами.
Настройка SSTP
Осуществим соединение маршрутизаторов по протоколу SSTP. Пусть R0 будет
SSTP-сервером, а R1 SSTTP-клиентом. SSTP соединение требует RSAсертификатов.
В Ubuntu для работы с программой openssl создан командный интерфейс.
Воспользуемся им. Перепишем папку /usr/share/doc/openvpn/examples/easy-rsa/2.0 в
свою папку. Распакуем в ней 2 архива. Определим в файле Makefile
DESTDIR=/home/ВашаПапка и PREFIX=RSA. Инсталлируйте: make install.
Войдём из консоли в появившуюся папку RSA. Выполните
. vars (через пробел)
./clean-all
Исправьте данные в файле vars на данные о себе (не обязательно) и выполните
команды для установки переменных окружения и очистки базы сертификатов
source ./vars
./clean-all
Создайте один раз корневой сертификат
CA (Certificate Authority),
необходимый для подписи сертификатов клиента и сервера.
./pkitool --initca
Создайте сертификат сервера
./pkitool --server server
Создайте сертификат клиента
./pkitool client
Здесь server и client – любые имена.
Сертификаты появятся в папке keys. Перейдите в неё.
Посмотрите файл базы сертификатов index.txt.
Всегда перед началом выполнения команд в этой папке установите
переменные окружения командой . vars или source ./vars
Перепишем сертификаты и ключ из Ubuntu в SSTP-сервер маршрутизатора
Mikrotik .
116
grigoryev.victor@gmail.com http://vmg.pp.ua
ftp 10.0.0.1
name: admin
password;
bin
put ca.crt
put server.crt
put server.key
Аналогично перепишем сертификаты и ключ в SSTP- клиент.
В winbox R0 в позиции Files проверим наличие переданных файлов ca.crt
server.crt server.key. Выберем System -> Certificates нажимая 3 раза кнопку Import
последовательно импортируем файлы ca.crt server.crt server.key. После импорта
server.key соответствующая строка получит метку KR. Дважды щёлкнув на этой
строке, изменим имя сертификата на srv (рис. 9.15).
Рис. 9.15. Импорт сертификатов
Рис. 9.16. SSTP-сервер
В winbox R1 в позиции Files проверим наличие переданных файлов ca.crt
client.crt client.key. Выберем System -> Certificates, нажимая 3 раза кнопку Import
последовательно импортируем файлы ca.crt client.crt client.key. После импорта
client.key соответствующая строка получит метку KR. Дважды щёлкнув на этой
строке, изменим имя сертификата на cli
117
grigoryev.victor@gmail.com http://vmg.pp.ua
В winbox R0 добавим SSTP-сервер (PPP->кнопка SSTP-server), указав в нём
имя серверного сертификата srv c проверкой сертификата клиента (рис. 9.16).
В winbox R1 добавим SSTP-клиент (PPP->Interfaces + L2TP-client ->Dial Out),
указав адрес SSTP-сервера 10.0.0.1, добавив созданного ранее PPP-пользователя q
с паролем q и указав имя клиентского сертификата cli c проверкой сертификата
сервера (рис. 9.17). Сбросим флажок verify-server-address-from-certificate.
У клиента и сервера видим статус connected (соединён). Они соединились на
втором сетевом уровне.
Рис. 9.17. SSTP-клиент
Если флажок verify-server-address-from-certificate установлен, то SSTP-клиент
производит сравнени адреса (10.0.0.1) SSTP-сервера со значением параметра
“common name” сертификата, полученного от этого сервера. Чтобы эта проверка
прошла, следует создать правильный сертификат сервера. Для этого в файле vars
надо определить
export KEY_ORG="10.0.0.1"
и выполнитить команды
source ./vars
./clean-all
./pkitool --initca
./pkitool --server 10.0.0.1
118
grigoryev.victor@gmail.com http://vmg.pp.ua
Настройка OpenVPN
Осуществим соединение маршрутизаторов по протоколу OpenVPN. Пусть R0
будет OpenVPN -сервером, а R1 OpenVPN -клиентом. OpenVPN соединение
требует RSA-сертификатов.
Воспользуемся сертификатами srv и cli, импортированными при создании
SSTP соединения
В winbox R0 добавим OpenVPN-сервер (PPP->кнопка OVPN-server), указав в
нём имя серверного сертификата srv c проверкой сертификата клиента и режим
Ethernet, который понадобится для организации моста (рис. 9.18).
Добавим в winbox R0 мост (Bridge и +).
В протоколе OpenVPN у сервера надо задать локальный и удалённый адрес,
даже если мы его не будем использовать. Заметим, что OpenVPN–сервер
использует профиль default. Откроем его (PPP->profiles->default) и укажем в нём
мост и произвольные (пока) локальный и удалённый адрес 192.169.100.1 и
192.169.200.1. (рис. 9.19).
Рис. 9.18. OpenVPN-сервер
В winbox R1 добавим мост (Bridge+). Заметим, что OpenVPN –клиент
использует профиль default. Откроем его (PPP->profiles->default) и укажем в нём
мост для единообразия настройки (рис. 9.20).
В winbox R1 добавим OpenVPN -клиент (PPP->Interfaces + OpenVPN -client
->Dial Out) режиме Ethernet (который понадобится для организации моста), указав
адрес OpenVPN -сервера 10.0.0.1, добавив созданного ранее PPP-пользователя q с
паролем q и указав имя клиентского сертификата cli c проверкой сертификата
сервера (рис. 9.21).
119
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 9.19. Профиль для OpenVPN-сервера.
Рис. 9.20. Профиль для OpenVPN-клиента
У клиента и сервера видим статус connected (соединён). В winbox видим (IP>addresses), что сервер и клиент получили назначенные адреса 192.169.100.1/32 и
192.169.200.1/32.
Итак маршрутизаторы R0 и R1 соединены по 5 каналам. (рис. 9.22 и 9.23.)
120
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 9.21. OpenVPN –клиент
Рис. 9.22. 5 соединенных серверов
Рис. 9.23. 5 соединенных клиентов
Особенности работы из командной строки
База данных профилей управляется из подменю /ppp profile. Профили PPP
используются для определения значений по умолчанию для записи пользователя,
определённой с помощью подменю /ppp secret. Установки в /ppp secret подавляют
соответствующие установки, сделанные па подменю /ppp profile, за исключением
того, что назначение единственного IP-адреса всегда имеет приоритет над адресом,
121
grigoryev.victor@gmail.com http://vmg.pp.ua
взятым из назначенного пула IP-адресов. Значения свойств профиля PPP
приведены в табл. 9.1.
Значения свойств профиля PPP
Таблица 9.1.
Свойство
Значения Описание
addressстрока
Имя списка адресов, к которому будет добавлен адрес,
list
назначенный PPP
bridge
строка
Имя моста, к которому будет добавлен PPP-интерфейс
как порт.
changeyes | no | Изменить MSS (Maximum Segment Size) соединения.
tcp-mss
default
yes– подогнать MSS соединения
no – не подгонять MSS соединения
default – взять это значение из профиля по умолчанию
для интерфейса; no если это и есть профиль по
умолчанию
Используется для избежание фрагментации пакетов.
dns-server IP
idletimeout
incoming- строка
filter
localaddress
name
only-one
outgoingfilter
IP
IP-адрес DNS-сервера, назначаемый клиенту
Допустимое время неактивности, после которого линк
будет разорван
Имя цепочки фаервола для входящих пакетов, которая
берёт контроль над каждым пакетом, приходящим от
клиента. Цепочка должна быть добавлена вручную
IP-адрес или имя пула IP-адресов для PPP-сервера
строка
Имя этого профиля
yes | no | Определяет, разрешено ли пользователю иметь боле
default
одного соединения
yes - нельзя
no - можно
default - взять это значение из профиля по умолчанию
для интерфейса
строка
Имя цепочки фаервола для исходящих пакетов, которая
берёт контроль над каждым пакетом, идущим к
клиенту. Цепочка должна быть добавлена вручную.
строка
Ограничение скорости
IP
IP-адрес или имя пула IP-адресов для PPP-клиента
rate-limit
remoteaddress
sessionМаксимальное время, которое соединения может
timeout
оставаться активным
useyes | no | Определяет, используется ли сжатие данных
compressio default
yes - да
n
no - нет
default - взять это значение из профиля по умолчанию
для интерфейса; no если это и есть профиль по
умолчанию
122
grigoryev.victor@gmail.com http://vmg.pp.ua
useyes | no | Определяет, используется ли шифрование данных
encryption default | yes - да
required
no - нет
default - взять это значение из профиля по умолчанию
для интерфейса; no если это и есть профиль по
умолчанию
require - явно требовать шифрования
use-ipv6
yes | no | Определяет, разрешён ли IPv6. По умолчанию
default | разрешён, если IPv6 установлен.
required
yes - да
no - нет
default - взять это значение из профиля по умолчанию
для интерфейса; no если это и есть профиль по
умолчанию
require - явно требовать поддержки IPv6
use-mpls
yes | no | Определяет, разрешён ли MPLS через PPP.
default | yes - да
required
no - нет
default - взять это значение из профиля по умолчанию
для интерфейса; no если это и есть профиль по
умолчанию
require - явно требовать поддержки MPLS
use-vjyes | no | Определяет, используется ли алгоритм сжатия
compressio default
заголовков Van Jacobson
n
yes - да
no - нет
default - взять это значение из профиля по умолчанию
для интерфейса; no если это и есть профиль по
умолчанию
winsIP
IP-адрес WINS-сервера, назначаемый клиенту
server
Есть два профиля по умолчанию, которые нельзя удалить
/ppp profile print
Flags: * - default
0 * name="default" use-compression=no use-vj-compression=no useencryption=no only-one=no change-tcp-mss=yes
1
*
name="default-encryption"
use-compression=default
use-vjсompression=default use-encryption=yes only-one=default change-tcp-mss=default
База данных пользователей управляется из подменю /ppp secret. Значения
свойств пользователей PPP приведены в табл. 9.2.
Значения свойств пользователей PPP
Свойство
caller-id
Значения
строка
Таблица 9.2.
Описание
Для PPTP и L2TP это IP-адрес, из которого клиент
123
grigoryev.victor@gmail.com http://vmg.pp.ua
limitbytes-in
limitbytes-out
localaddress
name
password
profile
remoteaddress
remoteipv6-prefix
routes
service
IP
должен соединяться. Для PPPoE это MAC-адрес из
которого клиент должен соединяться. Используется
только при необходимости
Максимальное число байт, которое может выгрузить
клиент
Максимальное число байт, которое может загрузить
клиент
IP-адрес или имя пула IP-адресов для PPP-сервера
строка
строка
строка
IP
Имя пользователя для аутентификации
Пароль для аутентификации
Какой профиль пользователя использовать
IP-адрес или имя пула IP-адресов для PPP-клиента
IPv6
Префикс IPv6 для PPP-клиента
целое
целое
строка
Маршруты, которые появятся на сервере, когда клиент
соединится. Формат маршрута: dst-address gateway
metric (например, 10.1.0.0/ 24 10.0.0.1 1). Несколько
маршрутов разделяются запятыми. Игнорируется для
OpenVPN
any
| Определяет сервисы, доступные этому пользователю
async
|
isdn | l2tp
| pppoe |
pptp
|
ovpn
Проанализируем общие параметры настройки PPP, PPTP, L2TP, SSTP, PPOE и
OpenVPN серверов и клиентов. Общие параметры серверов приведены в табл. 9.3.
Общие параметры серверов
Свойство
max-mtu
max-mru
mrru
authentication
keepalive-timeout
certificate
verify-client-certificate
Port
l2tp
+
+
+
+
Таблица 9.3.
ovpn ppp
+
+
+
+
+
+
pppoe
+
+
+
+
+
+
+
+
Общие параметры клиентов приведены в таблице. 9.4.
124
pptp
+
+
+
+
+
sstp
+
+
+
+
+
+
+
+
grigoryev.victor@gmail.com http://vmg.pp.ua
Общие параметры клиентов
Свойство
max-mtu
max-mru
mrru
connect-to
User,password
add-default-route
dial-on-demand
authentication
port
certificate
use-peer-dns
keepalive-timeout
l2tp
+
+
+
+
+
+
+
+
Таблица 9.4.
ovpn ppp
+
+
+
+
+
+
+
+
+
+
+
+
+
+
pppoe
+
+
+
+
+
+
+
pptp
+
+
+
+
+
+
+
+
sstp
+
+
+
+
+
+
+
+
+
+
+
+
+
Объяснение значений свойств из табл. 9.3 и табл. 9.4 приведены в табл. 9.5
.
Объяснение значений свойств клиентов и серверов Таблица. 9.5.
Свойство
max-mtu
max-mru
mrru
authentication
keepalive-timeout
certificate
verify-client-certificate
port
connect-to
User,password
add-default-route
dial-on-demand
use-peer-dns
Пояснение
Максимальный размер пакета, передаваемый без
фрагментации. Для Ethernet -1500
Максимальный размер пакета, принимаемый без
фрагментации Для Ethernet -1500
Максимальный
размер
принимаемого
пакета.
Позволяет передавать Ethernet-фреймы через туннель.
Если пакет больше, чем max-mru он будет разбит.
Использовать протокол проверки подлинности
mschap2, mschap1, chap или pap
Время активности
Имя сертификата
Проверять ли сертификат клиента
TCP-порт
Адрес для соединения
Имя и пароль
Добавить маршрут по умолчанию
Обратный вызов по требованию
Испоьзовать DNS пира
Значения max-mtu и max-mtu могут быть меньше, чем 1500. Например, PPPoE
требует для себя дополнительные 6 байт. 2 байта добавляет само PPP. Остаётся
1492 байта для IP-датаграмы. Следовательно, max-mtu и max-mtu для PPPoE не могут превышать 1492.
Сейчас мы поэкспериментируем с настройками через командную строку.
125
grigoryev.victor@gmail.com http://vmg.pp.ua
Возьмите чистую копию PPPcmd топологии PPPInet с рис.9.10 у которой настроена
только связь между маршрутизаторами через тап-интерфейс. Добавим пользователя
q
[admin@R0] > ppp secret add
name: q
Имеем
[admin@R0] > ppp secret print detail
name="q" service=any caller-id="" password="" profile=default routes="" limitbytes-in=0 limit-bytes-out=0
Есть встроенные сервера PPTP, L2TP, SSTP и OpenVPN
[admin@R0] > interface pptp-server server print
enabled: yes
max-mtu: 1460
max-mru: 1460
mrru: disabled
authentication: mschap1,mschap2
keepalive-timeout: 30
default-profile: default
[admin@R0] > interface l2tp-server server print
enabled: no
max-mtu: 1460
max-mru: 1460
mrru: disabled
authentication: pap,chap,mschap1,mschap2
default-profile: default-encryption
[admin@R0] > interface sstp-server server print
enabled: no
port: 443
max-mtu: 1500
max-mru: 1500
mrru: disabled
keepalive-timeout: 60
default-profile: default
authentication: pap,chap,mschap1,mschap2
certificate: none
verify-client-certificate: no
[admin@R0] > interface ovpn-server server print
enabled: no
port: 1194
mode: ip
netmask: 24
mac-address: FE:8C:42:2D:6D:A2
max-mtu: 1500
keepalive-timeout: 60
default-profile: default
126
grigoryev.victor@gmail.com http://vmg.pp.ua
certificate: none
require-client-certificate: no
auth: sha1,md5
cipher: blowfish128,aes128
Добавляем сервер PPP
[admin@R0] > interface ppp-server add disabled=no port=serial1 nullmodem=yes
Активируем сервера PPTP, L2TP, SSTP и OpenVPN
[admin@R0]>interface l2tp-server server set enabled=yes
[admin@R0]>interface ovpn-server server set enabled=yes
[admin@R0]>interface pptp-server server set enabled=yes
[admin@R0]>interface sstp-server server set enabled=yes
После активации и соединении клиентов автоматически создаются
соответствующие интерфейсы.
При необходимости, можно создать дополнительные сервера. Для этого
служат команды
interface l2tp-server add
interface ovpn-server add
interface pptp-server add
interface sstp-server add
При этом запрашивается, для какого пользователя создаётся интерфейс. Мы
этого делать не будем.
Начинаем настраивать клиентов. Начнём с протокола PPP
[admin@R1]>int ppp-client add port=serial1 null-modem=yes user=q
disabled=no
[admin@R1]>int ppp-client pr det
Flags: X - disabled, R - running
0 R name="ppp-out1" max-mtu=1500 max-mru=1500 mrru=disabled port=serial1 datachannel=0 info-channel=0 pin="" user="0" password="0" profile=default phone="" dialcommand="ATDT" modem-init="" null-modem=yes dial-on-demand=no add-defaultroute=no use-peer-dns=no keepalive-timeout=10 allow=pap,chap,mschap1,mschap2
Флаг R свидетельствует об установлении соединении.
Перейдём к выяснению минимального количества параметров необходимых
для добавления клиентов протоколов l2tp, pptp, sstp и OpenVPN.
[admin@R1] > int l2tp-client add
connect-to: 10.0.0.1
user: q
[admin@R1] > int l2tp-client pr det
Flags: X - disabled, R - running
0 X name="l2tp-out1" max-mtu=1460 max-mru=1460 mrru=disabled connectto=10.0.0.1 user="q" password="" profile=default-encryption add-default-route=no dialon-demand=no allow=pap,chap,mschap1,mschap2
[admin@R1] > int ovpn-client add
127
grigoryev.victor@gmail.com http://vmg.pp.ua
connect-to: 10.0.0.1
user: q
[admin@R1] > int ovpn-client pr det
Flags: X - disabled, R - running
0 name="ovpn-out1" mac-address=FE:F8:51:31:89:E0 max-mtu=1500 connectto=10.0.0.1 port=1194 mode=ip user="q" password=""
profile=default
certificate=none auth=sha1 cipher=blowfish128 add-default-route=no
[admin@R1] > int pptp-client add
connect-to: 10.0.0.1
user: q
[admin@R1] > int pptp-client pr det
Flags: X - disabled, R - running
0 X name="pptp-out1" max-mtu=1460 max-mru=1460 mrru=disabled connectto=10.0.0.1 user="q" password="" profile=default-encryption add-default-route=no dialon-demand=no allow=pap,chap,mschap1,mschap2
[admin@R1] > int sstp-client add
connect-to: 10.0.0.1
user: q
[admin@R1] > int sstp-client print detail
Flags: X - disabled, R - running
0 X name="sstp-out1" max-mtu=1500 max-mru=1500 mrru=disabled connectto=10.0.0.1 :443 http-proxy=0.0.0.0:443 certificate=none verify-server-certificate=no
user="q" password="" profile=default keepalive-timeout=60 add-default-route=no dialon-demand=no authentication=pap,chap,mschap1,mschap2
Видим в параметрах всех интерфейсов установленных флаг X: после создания
все клиенты находятся в неактивном состоянии. Активировать их можно двумя
способами. Например, для l2tp
[admin@R1]>int l2tp-client set 0 disabled=no
[admin@R1]>int l2tp-client enable 0
где 0 – номер интерфейса можно получить командой l2tp-client print. Снова введя
эту команду, видим, что клиент соединился с сервером. Об этом свидетельствует
флаг R. Активация остальных протоколов производится аналогично. Клиенты и
сервера протоколов l2tp и sstp соединяются. Однако для протокола OpenVPN
соединения не происходит. Не хватает ряда параметров. Воспользовавшись
вышеизложенным материалом по настройке протокола OpenVPN с помощью
утилиты winbox, добейтесь соединения из командной строки. Смена параметров
производится как обычно. Например
[admin@R1]>int ovpn-client print detail
[admin@R1]>int ovpn-client set
Требования для сдачи работы
В топологии PPPInet с помощью утилиты winbox осуществить связь между
клиентами и серверами по протоколам PPP, PPTP, L2TP, SSTP и OpenVPN.
Предъявить 5 соединенных серверов (рис. 9.22) и 5 соединенных клиентов
(рис. 9.23).
В топологии PPPcmd с помощью командной строки осуществить связь между
128
grigoryev.victor@gmail.com http://vmg.pp.ua
клиентами и серверами по протоколам PPTP, L2TP, SSTP и OpenVPN.
Предъявить 4 соединенных сервера (рис. типа 9.22) и 4 соединенных клиента
(рис. типа 9.23).
129
grigoryev.victor@gmail.com http://vmg.pp.ua
10. Построение VPN второго уровня c помощью производных от
PPP протоколов и OpenVPN
1. Настройка с помошью Winbox
1.1 PPP
1.2 PPTP
1.3 L2TP
1.4 SSTP
1.5 OpenVPN
2. Настройка с помощью командной строки
2.1 PPP
2.2 PPTP
2.3 L2TP
2.4 SSTP
2.5 OpenVPN
Распределённый мост
Использование профилей пользователя
131
133
133
134
137
137
138
140
140
141
141
142
143
144
Изучим организацию VPN второго уровня c помощью производных от PPP
протоколов и OpenVPN с использованием мостов.
Так как у нас используется один пользователь q и два пофиля default и default
encryption для всех соединений, то во избежание взаимного влияния будем строить
мосты по очереди для одного типа PPP-соединения, оставляя другие соединения
неактивными.
Запустим топологию на рис. 9.10, у которой настроены все пять соединений,
согласно предыдущему разделу. Деактивируем всех клиентов, нажимая в winbox
R1->PPP значок X на каждом клиенте. Деактивируем сервера (winbox R0->PPP),
снимая галочку enable в их настройках. Сервер PPP R0 (winbox R0->PPP)
деактивируется нажатием кнопки disable в его настройках.
Рис. 10.1. Топология для VPN уровня 2
Остановим топологию, добавим два элемента qemu host, соединив их, как
указано на рисунке Рис. 10.1.
130
grigoryev.victor@gmail.com http://vmg.pp.ua
Последовательно используем все 5 видов соединений для организации моста
между R2 и R3. При успешном создании моста R2 и R3 будут в одном Ethernetсегменте, образуя VPN уровня 2. Адреса для R2 и R3 можно назначать из одной
IP-подсети, например 172.16.1.0/24
1. Настройка с помошью Winbox
Запустим топологию. Назначим адаптерам адреса согласно рис. 10.1. И на
клиенте R1 и на сервере R0 добавим в созданный мост bridge1 интерфейс ether1. (В
winbox это Bridge->ports +). Проверим, чтобы этот мост фигурировал в настройках
профиля default и на клиенте R1 и на сервере R0 (PPP->profiles->default). В
настройках по умолчанию используется также профиль default encryption. Сделаем
так, чтобы мост bridge1 фигурировал в настройках этого профиля и на клиенте R1
и на сервере R0 (PPP->profiles->default encryption). См. рис. 10.2.
Рис. 10.2. Добавление моста в профиль
Рис. 10.3. Мост в PPP
131
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 10.4. Мост в PPTP
Рис. 10.5. Установление PPTP-соединения в режиме моста.
132
grigoryev.victor@gmail.com http://vmg.pp.ua
1.1 PPP.
Активируем сервер PPP на R0, нажав в winbox кнопку enable в его
настройках. Активируем клиент PPP на R1, нажав в winbox на строке ppp правой
кнопкой и выбрав enable. И на клиенте R1 и на сервере R0 у PPP-интерфейсов
должна появиться метка R. PPP-интерфейс автоматически добавится в мост bridge1
(рис.10.3).
R3 видит R2 по протоколу Ethernet и наоборот. Проверьте это с помощью
утилиты tool mac-telnet. Мы создали между R3 и R2 VPN второго уровня.
Естественно, что R3 видит R2 по IP и наоборот. Проверьте это утилитой пинг.
Деактивируем PPP -клиента, нажимая в winbox R1значок X на
соответствующей строке. Деактивируем PPP-сервер, снимая галочку enable в его
настройках.
1.2 PPTP
Активируем сервер PPTP на R0, установив галочку enable в его настройках.
По умолчанию PPTP-клиент и сервер использует профиль default encryption.
Активируем клиент PPTP на R1, нажав на строке pptp правой кнопкой и выбрав
enable. И на клиенте R1 и на сервере R0 у PPTP -интерфейсов должна появиться
метка R, а эти интерфейсы автоматически добавятся в мост bridge1 (рис. 10.4).
Рис. 10.6. Стек протоколов для PPTP-соединения в режиме моста при отключенном
шифровании
После организации связи и установки telnet- соединения (рис. 10.5) видим
такой стек протоколов (рис. 10.6) : IP над GRE над PPP над BCP над Ethernet над
IP над TCP.
Приведенные скриншоты получены при отключенном шифровании. Как
правило, в протоколе PPTP, пакеты, вложенные в PPP-кадры, шифруются. В этом
случае видимые на рис. 10.6 адреса (172.16.1.2 172.16.1.1) будут зашифрованы
(равно как и данные) и будут недоступны для наблюдения (рис. 10.7).
Рис. 10.7. Стек протоколов для PPTP-соединения в режиме моста при включенном
шифровании
Деактивируем PPTP-клиента, нажимая в winbox значок X на соответствующей
строке. Деактивируем PPTP сервер, снимая галочку enable в его настройках.
133
grigoryev.victor@gmail.com http://vmg.pp.ua
1.3 L2TP
Активируем сервер L2TP на R0, установив галочку enable в его настройках.
По умолчанию L2TP-клиент и сервер использует профиль default encryption.
Активируем клиент L2TP R1, нажав на строке l2tp правой кнопкой и выбрав
enable. И на клиенте R1 и на сервере R0 у L2TP -интерфейсов должна появиться
метка R, а эти интерфейсы автоматически добавятся в мост bridge1 (рис. 10.8).
R3 и R2 видят друг друга по протоколам Ethernet и IP. Проверьте это. Мы
создали между R3 и R2 VPN второго уровня.
В домашних условиях и при наличии прав вы можете воспользоваться
анализатором пакетов Wireshark. При установлении L2TP-соедиенеия вы увидите
картину, изображённую на рис. 10.9.
После организации связи и установки telnet-соединения (рис. 10.9) видим (рис.
10.10) такой стек протоколов: IP над UDP над L2TP над PPP над BCP над Ethernet
над IP над TCP.
Приведенные скриншоты получены при отключенном шифровании. Как
правило, в протоколе L2TP, пакеты, вложенные в PPP-кадры, шифруются. Реально
вы ничего не увидите (рис. 10.11).
Рис. 10.8. Мост в L2TP
Деактивируем L2TP -клиента, нажимая в winbox R1 значок X на
соответствующей строке. Деактивируем L2TP сервер, снимая галочку enable в его
настройках.
134
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис.10.9.Установление L2TP-соединения в режиме моста.
Рис. 10.10. Стек протоколов для L2TP-соединения в режиме моста при отключенном
шифровании
Рис. 10.11. Стек протоколов для L2TP-соединения в режиме моста при включенном
шифровании
135
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 10.12. Мост в SSTP
Рис. 10.13. Установление SSTP-соединения в режиме моста.
1.4 SSTP
136
grigoryev.victor@gmail.com http://vmg.pp.ua
1.4 SSTP
Активируем сервер SSTP R0 (winbox R0->PPP), установив галочку enable в
его настройках. По умолчанию SSTP-клиент использует профиль default encryption.
Активируем клиент SSTP R1 (winbox R0->PPP), нажав на строке sstp правой
кнопкой и выбрав enable. И на клиенте R1 и на сервере R0 у SSTP -интерфейсов
должна появиться метка R, а эти интерфейсы автоматически добавятся в мост
bridge1 (рис. 10.12).
R3 и R2 видят друг друга по протоколам Ethernet и IP. Проверьте это. Мы
создали между R3 и R2 VPN второго уровня.
В протоколе SSTP для организации канала используется
шифрование по
протоколуTLS V1 SSL. В SSTP установка соединения и обмен данными
происходит в зашифрованом виде, и в Wireshark мы ничего не увидим (рис. 10.13).
Деактивируем SSTP -клиента, нажимая в winbox R1->PPP значок X на
соответствующей строке. Деактивируем SSTP сервер (winbox R0->PPP), снимая
галочку enable в его настройках
Рис. 10.14. Мосты в OpenVPN
1.5 OpenVPN
Активируем сервер OpenVPN в R0, установив в winbox галочку enable в его
настройках. Активируем клиент OpenVPN в R1, нажав на строке Ovpn правой
кнопкой и выбрав enable. И на клиенте R1 и на сервере R0 у OpenVPNинтерфейсов должна появиться метка R, а эти интерфейсы автоматически
добавятся в мост bridge1 (рис. 10.14)
R3 и R2 видят друг друга по протоколам Ethernet и IP. Проверьте это. Мы
создали между R3 и R2 VPN второго уровня.
137
grigoryev.victor@gmail.com http://vmg.pp.ua
OpenVPN–сервер использует профиль default в котором для него необходимо
указать локальный и удалённый адреса. Мы взяли адреса 192.168.100.1 и
192.168.200.1, которые никак не влияют на созданный мост. Эти адреса OpenVPN
назначил на OpenVPN-интерфейсы.
Рис. 10.15. OpenVPN назначил адреса для клиента и сервера
Посмотрите в winbox R0 и R1 пункт IP->adresses (рис. 10.15). Пропингуйте из
R0 в R1 и из R1 в R0 по этим адресам.
Для остальных 4-х соединений PPP, PPTP, L2TP и SSTP адреса 192.168.100.1
и 192.168.200.1 в профиле default не используется.
Рис. 10.16. Установка соединения и обмен данными в OpenVPN
В OpenVPN установка соединения и обмен данными происходит в
зашифрованном виде и мы ничего не увидим в анализаторе пакетов (рис. 10.16).
Деактивируем OpenVPN-клиента, нажимая в winbox R1 значок X на
соответствующей строке. Деактивируем OpenVPN-сервер R0, снимая галочку
enable в его настройках
2. Настройка с помощью командной строки
Добавьте в топологию на рис. 10.1 новые 4-е устройства qemu host. Назначьте
адреса и имена в новую топологию l2vpn согласно рис. 10.17. Обеспечим
взаимную
138
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 10.17. Топология l2vpn
видимость тап-интерфейсов роутеров R0, R1, R4 и R5 по протоколу IP (тап-сеть 0)
[admin@R4] >ip ro add dst-address=10.0.0.0/16 gateway=10.0.4.2
[admin@R5] >ip ro add dst-address=10.0.0.0/16 gateway=10.0.5.2
Для новых маршрутизаторов R4, R5, R6 и R7 осуществим настройки из
командной строки и без помощи winbox. При этом повторим для новых
маршрутизаторов те же настройки, которые мы осуществили для старых
маршрутизаторов R0, R1, R2 и R3 с помощью утилиты winbox.
На R4 и R5 осуществим следующие действия
1. Добавим мост и интерфейс в него
int br add
int bridge port add bridge=bridge1 interface=ether1
2. Этот мост добавим в профили по умолчанию
ppp profile print
ppp profile set 0,1 bridge=bridge1
3. Добавим пользователя с паролем
ppp secret add name=q password=q
139
grigoryev.victor@gmail.com http://vmg.pp.ua
2.1 PPP
Запускаем PPP сервер на R4
[admin@R4] >int ppp-server add port=serial1 null-modem=yes disabled=no
Запускаем PPP клиент на R5
[admin@R5] >interface ppp-client add user=q password=q disabled=no dialon-demand=no null-modem=yes port=serial1 use-peer-dns=no add-defaultroute=no
Видим поднявшиеся PPP – интерфейсы (буква R). Клиент
[admin@ R5] > interface ppp-clien pr
Flags: X - disabled, R - running
0 R name="ppp-out1" max-mtu=1500 max-mru=1500 mrru=disabled port=serial1
data-channel=0 info-channel=0 pin="" user="q" password="q"
profile=default
phone="" dial-command="ATDT" modem-init=""
null-modem=yes dial-ondemand=no add-default-route=no use-peer-dns=no
keepalive-timeout=10
allow=pap,chap,mschap1,mschap2
Сервер
[admin@ R4] > int ppp-serve pr det
Flags: X - disabled, R - running
0 R name="ppp-in1" max-mtu=1500 max-mru=1500 mrru=disabled port=serial1 datachannel=0 authentication=pap,chap,mschap1,mschap2 profile=default modem-init=""
ring-count=1 null-modem=yes
И в R4 и в R5 в мост добавился интерфейс c неизвестным именем, например
для R4
[admin@ R4] > interface bridge port print
Flags: X - disabled, I - inactive, D - dynamic
#INTERFACE BRIDGE PRIORITY PATH-COST HORIZON
0 ether1
bridge1
0x80 10
none
1 D (unknown)
bridge1
0x80 10
none
R6 и R7 видят друг друга по протоколам Ethernet и IP. Проверьте это.
Остановим сервер и клиент
[admin@ R4] >int ppp-server set 0 disabled=yes
[admin@ R5] >int ppp-client set 0 disabled=yes
2.2 PPTP
Запускаем PPTP-сервер R4
[admin@ R4] >interface pptp-server server set enabled=yes
Запускаем PPTP-клиент R5
[admin@ R5] >int pptp-client add user=q password=q connect-to=10.0.4.1
disabled=no
Видим поднявшиеся PPP – интерфейсы (буква R). У сервера
[admin@ R4] >interface pptp-serve pr detail
Flags: X - disabled, D - dynamic, R - running
0 DR name="<pptp-q>" user="q" mtu=1460 mru=1460 client-address="10.0.5.1"
uptime=4m29s encoding="MPPE128 stateless"
У клиента
140
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@ R5] > int pptp-client print detail
Flags: X - disabled, R - running
0 R name="pptp-out1" max-mtu=1460 max-mru=1460 mrru=disabled connectto=10.0.4.1 user="q" password="q" profile=default-encryption add-default-route=no
dial-on-demand=no allow=pap,chap,mschap1,mschap2
Команда interface bridge port print покажет, что и в R4 и в R5 в мост
добавился интерфейс. R6 и R7 видят друг друга по протоколам Ethernet и IP.
Проверьте это.
Остановим сервер и клиент
[admin@ R4] >int pptp-server set 0 disabled=yes
[admin@ R5] >int pptp-client set 0 disabled=yes
2.3 L2TP
L2TP полностью аналогичен PPTP (поменяйте в командах строку pptp на
строку l2tp)
2.4 SSTP
Надо импортировать сертификаты. Сертификаты мы создали ранее и они
находятся в Ubuntu в папке easy-rsa/keys. Перейдите в неё. Перепишем
сертификаты и ключ из Ubuntu в SSTP-сервер.
ftp 10.0.4.1
Перепишем сертификаты и ключ в SSTP- клиент.
ftp 10.0.5.1
Импортируем сертификаты в сервере
[admin@ R4] > certificate import file-name=ca.crt
[admin@ R4] > certificate import file-name=server.crt
[admin@ R4] > certificate import file-name=server.key
На запрос passphrase – просто жмём enter
Проверим
[admin@ R4] > certificate pr
Flags: K - decrypted-private-key, Q - private-key, R - rsa, D - dsa
0 name="cert1" subject=C=US,ST=CA,L=SanFrancisco,O=FortFunston,CN=Fort-Funston CA,emailAddress=me@myhost.mydomain
issuer=C=US,ST=CA,L=SanFrancisco,O=Fort-Funston,CN=Fort-Funston CA,
emailAddress= me@myhost.mydomain serial-number="C8A494A29F4DC49F" email=
me@myhost.mydomain
invalid-before=may/11/2011 15:34:56 invalid-after=
may/08/2021 15:34:56 ca=yes
1 KR name="cert2" subject=C=US,ST=CA,L=SanFrancisco, O=FortFunston,CN=server,
emailAddress=me@myhost.mydomain
issuer=C=US,ST=CA,L= SanFrancisco,O=Fort-Funston,CN=Fort-Funston CA,
emailAddress= me@myhost.mydomain serial-number= "01" email=me
@myhost.mydomain
invalid-before=may/11/2011 15:35:13 invalidafter=may/08/2021 15:35:13 ca=yes
Переименовываем KR сертификат
[admin@ R4] > sys certificate set 1 name=srv
141
grigoryev.victor@gmail.com http://vmg.pp.ua
Импортируем сертификаты у клиента
[admin@ R5] >certificate import file-name=ca.crt
[admin@ R5] >certificate import file-name=client.crt
[admin@ R5] >certificate import file-name=client.key
На запрос passphrase – просто жмём enter
Проверим
[admin@ R5] >certificate print detail
Flags: K - decrypted-private-key, Q - private-key, R - rsa, D - dsa
0 name="cert1" subject=C=US,ST=CA,L=SanFrancisco,O=FortFunston,CN=Fort-Funston CA,emailAddress=me@myhost.mydomain
issuer=C=US,ST=CA,L=SanFrancisco,O=Fort-Funston,CN=Fort-Funston
CA,emailAddress=me@myhost.mydomain serial-number= C8A494A29F
email=me@myhost.mydomain invalid-before =may /11/2011 15:34:56 invalidafter=may/08/2021 15:34:56
ca=yes
1 KR name="cert2" subject=C=US,ST=CA,L=SanFrancisco,O=FortFunston,CN=client, emailAddress=me@myhost.mydomain issuer=C=US,
ST=CA,L=SanFrancisco,O=Fort-Funston,CN=Fort-Funston CA,
mailAddress=me@myhost.mydomain serial-number="02" email=me
@myhost.mydomain invalid-before=may/11/2011 15:35:33 invalid-after= may/08/2021
15:35:33 ca=yes
Переименовываем KR сертификат клиента
[admin@ R5] >certificate set 1 name=cli
Запускаем SSTP сервер R4
[admin@R4]>interface sstp-server server set enabled=yes certificate=srv
verify-client-certificate=yes
Запускаем SSTP клиент R5
[admin@R4]>int sstp-client add user=q password=q connect-to=10.0.4.1
disabled=no certificate=cli verify-server-certificate=yes
Интерфейсы поднялись. И в R4 и в R4 в мост добавился интерфейс. R6 и R7
видят друг друга по протоколам Ethernet и IP. Проверьте это.
Остановим сервер и клиент
[admin@ R4] >int sstp-server set 0 disabled=yes
[admin@ R5] >int sstp-client set 0 disabled=yes
2.5 OpenVPN
Пропишем в профиле сервера локальный и удалённый адреса
[admin@ R4] >ppp profile pr
[admin@ R4]>ppp profile set 0 local-address=192.168.100.1 remoteaddress=192.168.200.1
Запускаем OpenVPN-сервер R4
[admin@ R4] >interface ovpn-server server set enabled=yes certificate=srv
require-client-certificate=yes mode=Ethernet
Запускаем OpenVPN-клиент R5
[admin@ R5] >interface ovpn-client add user=q password=q connectto=10.0.4.1 disabled=no certificate=cli mode=Ethernet
142
grigoryev.victor@gmail.com http://vmg.pp.ua
Интерфейсы поднялись (буква D). [admin@ R4] >interface bridge port print
detail
Flags: X - disabled, I - inactive, D - dynamic
0 interface=ether1 bridge=bridge1 priority=0x80 path-cost=10 edge=auto pointto-point=auto external-fdb=auto horizon=none
1 D interface=<ovpn-q> bridge=bridge1 priority=0x80 path-cost=10 edge=no
point-to-point=yes external-fdb=no horizon=none
И в R4 и в R4 в мост добавился интерфейс
[admin@ R5] >interface bridge port print detail
Flags: X - disabled, I - inactive, D - dynamic
0 interface=ether1 bridge=bridge1 priority=0x80 path-cost=10 edge=auto pointto-point=auto external-fdb=auto horizon=none
1 D interface=ovpn-out1 bridge=bridge1 priority=0x80 path-cost=10 edge=no
point-to-point=yes external-fdb=no horizon=none
R6 и R7 видят друг друга по протоколам Ethernet и IP. Проверьте это.
Остановим сервер и клиент
[admin@ R4] >int ovpn-server set 0 disabled=yes
[admin@ R5] >int ovpn-client set 0 disabled=yes
Рис. 10.18. Топология l2vpn1
Распределённый мост
Рассмотрим более сложные варианты использования мостов. Возьмём
протокол PPTP. Для остальных протоколов конфигурация аналогична. Соберём
топологию, изображённую на рис. 10.18. Назначьте адреса согласно этому рисунку.
Во всех маршрутизаторах R0, R1, R4 и R5 добавим мосты и в них Ethernetинтерфейс, идущий к подсоединённому компьютеру R2, R3, R6 и R7,
соответственно.
interface bridge add
143
grigoryev.victor@gmail.com http://vmg.pp.ua
interface bridge port add bridge=bridge1 interface=ether1
Маршрутизаторы R0, R1 и R4 будут PPTP-серверами, а маршрутизаторы R1,
R4 и R5 – PPTP-клиентами. То есть R1 и R4 являются одновременно и серверами и
клиентами.
Определим в серверах пользователя q с паролем q.
ppp secret add name=q password=q
По умолчанию сервера и
клиенты имеют профиль default encription.
Пользователь по умолчанию имеет профиль default. Профиль пользователя
подавляет профиль сервера. В каком профиле определить мост? И на серверах и на
клиентах определим мост в профиле default.
ppp profile set 0 bridge=bridge1
Здесь 0 - номер профиля default, который можно увидеть из команды ppp
profile print
В самих клиентах заменим профиль default encription на профиль default,
зададим пользователя q с паролем, зададим адреса серверов и активируем их
[admin@R1]>interface pptp-client add profile=default user=q password=q
connect-to=10.0.0.1 disabled=no
[admin@R4]>interface pptp-client add profile=default user=q password=q
connect-to=10.0.1.1 disabled=no
[admin@R5]>interface pptp-client add profile=default user=q password=q
connect-to=10.0.4.1 disabled=no
Активируем сервера.
interface pptp-server server set enabled=yes
В консолях маршрутизаторов R0, R1, R4, R5 введём команду interface bridge
port print. Видим, что в мостах появятся новые динамические PPTP интерфейсы.
Причем в маршрутизаторах R1, R4 их будет два: для клиента и сервера.
Получился распределённый мост (или свич): все компьютеры R2, R3, R6, R7
лежат в одной Ethernet-сети.
R2 и R7 видят друг друга по протоколам Ethernet и IP. Проверьте это.
Повторите всё для протоколов L2TP, SSTP и OpenVPN.
Использование профилей пользователя.
Соберём топологию l2vpn2, изображённую на рис. 10.19. В ней адреса
компьютеров R2 и R3 лежат в сети 172.16.1.0/24. Адреса компьютеров R6 и R7
лежат в той же сети 172.16.1.0/24. Назначьте адреса и имена согласно рисунку.
Маршрутизатор R0 будет PPTP-сервером, а маршрутизаторы R1, R4- PPTP
клиентами. Во всех клиентах R1 и R4 добавьте мосты и в них Ethernet-интерфейс,
идущий к подсоединённому компьютеру. На клиентах в профиле default определим
мост
ppp profile set 0 bridge=bridge1
Здесь 0 - номер профиля default, который можно увидеть из команды ppp
profile print
144
grigoryev.victor@gmail.com http://vmg.pp.ua
На сервере добавим два моста и в каждый из них добавим по одному Ethernet
интерфейсу, идущему к разным компьютерам. Пусть ether1 идёт к R2, а ether2 идёт
к R7.
Рис. 10.19. Топология l2vpn2
[admin@R0]>interface bridge add
[admin@R0]>interface bridge add (2 раза)
[admin@R0]>int bridge port add bridge=bridge1 int= ether1
[admin@R0]>int bridge port add bridge=bridge2 int= ether2
Создадим для моста bridge1 профиль 1, а для моста bridge2 профиль 2
[admin@R0]>ppp profile add name=1 bridge=bridge1
[admin@R0]>ppp profile add name=2 bridge=bridge2
Создадим пользователей 1 и 2 с профилями 1 и 2, соответственно
[admin@R0]>ppp secret add name=1 password=1 profile=1
[admin@R0]>ppp secret add name=2 password=1 profile=2
Активируем сервер
interface pptp-server server set enabled=yes
В самих клиентах заменим профиль default encription на профиль default,
зададим разных пользователей с паролем, зададим адрес сервера и активируем их
[admin@R1]>interface pptp-client add profile=default user=1 password=1
connect-to=10.0.0.1 disabled=no
[admin@R4]>interface pptp-client add profile=default user=2 password=2
connect-to=10.0.0.1 disabled=no
145
grigoryev.victor@gmail.com http://vmg.pp.ua
В консолях маршрутизаторов R0, R1 и R4 введём команду interface bridge
port print. Видим, что в мостах появятся новые динамические PPTP-интерфейсы.
Причем в маршрутизаторе R0 они располагаются в разных мостах.
Мы получили два независимых распределённых виртуальных моста (свича).
Компьютеры R2 и R3 лежат в одной Ethernet-сети, а компьютеры R6 и R7 лежат в
другой Ethernet-сети. Эти Ethernet-сети никак не связаны, и в них даже можно
назначать одинаковые адреса, например из сети 172.16.1.0.24. Проверим
[admin@R3]>system telnet 172.16.1.1
Попадём в R2. Выход ctrl-d.
[admin@R6]>system telnet 172.16.1.1
Попадём в R7. Выход ctrl-d.
Повторите всё для протоколов L2TP, SSTP и OpenVPN.
1.
2.
3.
4.
Требования для сдачи работы
Для топологии, изображённой на рис.10.1 объединить, используя утилиту
winbox, компьютеры R2 и R3 в VPN второго уровня c помощью протоколов
PPP, PPTP, L2TP, SSTP и OpenVPN.
Для топологии, изображённой на рис.10.17 объединить, используя командную
строку, компьютеры R6 и R7 в VPN второго уровня c помощью протоколов
PPP, PPTP, L2TP, SSTP и OpenVPN.
Настроить распределённый мост, изображённый на рис. 10.18 с помощью
протоколов PPTP, L2TP, SSTP и OpenVPN. Крайние роутеры R2 и R7 должны
пинговать друг друга.
С помощью протоколов PPTP, L2TP, SSTP и OpenVPN для топологии,
изображённой на рис. 10.19 настроить две независимые VPN второго уровня.
В первую VPN входят роутеры R2 и R3, а во вторую – R6 и R7.
146
grigoryev.victor@gmail.com http://vmg.pp.ua
11. Построение VPN третьего уровня c помощью производных от
PPP протоколов и OpenVPN
Маршрутизация RIP
Маршрутизация OSPF
VPN уровня 3 через NAT
Протоколы GRE и IPIP
148
149
151
152
Соберём топологию, изображённую рис. 11.1. Назначьте имена и адреса
согласно рисунку. Пропишем на компьютерах R2, R3 и R6 маршрут по умолчанию
[admin@R2]>ip route add gateway = 192.168.100.1
[admin@R3]>ip route add gateway = 192.168.101.1
[admin@R6]>ip route add gateway = 192.168.102.1
Рис. 11.1. Топология l3vpnrip
Объединим компьютеры R2, R3 и R6 в VPN третьего уровня.
R0 сделаем PPPT-сервером, а R3 и R6 - PPPT-клиентами. Поставим задачу
так организовать маршрутизацию, чтобы компьютеры R2, R3 и R6 видели бы друг
друга по протоколу IP.
Если мы не используем мосты, то надо определится с адресами, назначаемыми
на PPPTP-интерфейсы после установки PPPT-соединения.
Добавим в PPPT-сервере R0 пул адресов, назначаемых подсоединившимся
PPPTP-клиентам
[admin@R0]>ip pool add ranges=172.16.1.2-172.16.1.254 name=pool
Пропишем это в профиле default. Адрес 172.16.1.1 мы будем назначать на
интерфейс PPPT-сервера
[admin@R0]>ppp profile set 0 local-address=172.16.1.1 remote-address=pool
147
grigoryev.victor@gmail.com http://vmg.pp.ua
Не забудьте убрать из профиля мост (если он там остался). Создадим
пользователя
[admin@R0]>ppp secret add name=q password=q
Активируем сервер
interface pptp-server server set enabled=yes
В самих клиентах R1 R4 зададим пользователя q с паролем и зададим адрес
сервера
interface pptp-client add profile=default user=q password=q connectto=10.0.0.1 disabled=no
На сервере появилось два одинаковых адреса, но в разных сетях
[admin@R0]>ip ad pr
0
10.0.0.1/24
10.0.0.0
ether7
1
192.168.100.1/24
192.168.100.0
ether1
2D
172.16.1.1/32
172.16.1.253
<pptp-q-1>
3D
172.16.1.1/32
172.16.1.254
<pptp-q>
На клиенте R1 появился адрес 172.16.1.254
[admin@ R1] > ip ad pr
0
10.0.1.1/24
10.0.1.0
ether7
1
192.168.101.1/24
192.168.101.0
ether1
2D
172.16.1.254/32
172.16.1.1
pptp-out1
На клиенте R4 появился адрес 172.16.1.253
[admin@ R4] > ip ad pr
0
10.0.4.1/24
10.0.4.0
ether7
1
192.168.102.1/24
192.168.102.0
ether1
2D
172.16.1.253/32
172.16.1.1
pptp-out2
Обратите внимание на маску назначенных адресов и сети. В нашей топологии
фигурирует 3 сети с маской /24 192.168.100.0/24 192.168.101.0/24 192.168.102.0/24
и в общем случае переменное число сетей с маской /32. Это число зависит от
количества клиентов. В нашем случае имеем 3 сети 172.16.1.1 172.16.1.253
172.16.1.254
Можно прописать маршрутизацию статически (сделайте это).
Маршрутизация RIP
Воспользуемся протоколом RIP. Так как нельзя предсказать, какие адреса
будут назначены клиентам, будем оперировать сетью 172.16.1.0/24.
[admin@R0]>routing rip network add network=172.16.1.0/24
[admin@R0]>routing rip network add network=192.168.100.0/24
[admin@R1]>routing rip network add network=172.16.1.0/24
[admin@R1]>routing rip network add network=192.168.101.0/24
[admin@R4]>routing rip network add network=172.16.1.0/24
[admin@R4]>routing rip network add network=192.168.102.0/24
Посмотрим созданные RIP-маршруты
[admin@R4]> ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
148
grigoryev.victor@gmail.com http://vmg.pp.ua
#
DST-ADDRESS
PREF-SRC
GATEWAY
DISTANCE
0AS
10.0.0.0/16
10.0.4.2
1
1 ADC
10.0.4.0/24
10.0.4.1
ether7
0
2 ADC
172.16.1.1/32
172.16.1.253
pptp-out2
0
3 ADr 172.16.1.254/32
172.16.1.1
120
4 ADr 192.168.100.0/24
172.16.1.1
120
5 ADr 192.168.101.0/24
172.16.1.1
120
6 ADC192.168.102.0/24 192.168.102.1 ether1
0
Есть маршруты на сети 192.168.100.0/24 и192.168.101.0/24 и компьютеров R2
и R3, соответственно.
[admin@R1]> ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#
DST-ADDRESS
PREF-SRC
GATEWAY
DISTANCE
0AS
10.0.0.0/16
10.0.1.2
1
1 ADC
10.0.1.0/24
10.0.1.1
ether7
0
2 ADC
172.16.1.1/32
172.16.1.254
pptp-out1
0
3 ADr
172.16.1.253/32
172.16.1.1
120
4 ADr
192.168.100.0/24
172.16.1.1
120
5 ADC
192.168.101.0/24 192.168.101.1
ether1
0
6 ADr
192.168.102.0/24
172.16.1.1
120
Есть маршруты на сети 192.168.100.0/24 и192.168.102.0/24 и компьютеров R2
и R6, соответственно.
Аналогично на R2 есть маршруты на сети 192.168.101.0/24 и192.168.102.0/24
и компьютеров R3 и R6, соответственно.
R2, R3 и R6 увидят друг друга по IP. VPN третьего уровня создана.
Такой трюк с сетью 172.16.1.0/24 для OSPF не проходит
Маршрутизация OSPF
Теперь переделаем конфигурацию для маршрутизации путём назначения
каждому клиенту определённого адреса. Этого добьемся путем назначения
каждому клиенту отдельного имени со своим профилем. Сделайте копию l3vpnospf
топологии l3vpnrip. На сервере R0 создадим 2 профиля
[admin@R0]>ppp profile add name=1 local-address=172.16.1.1 remoteaddress=172.16.1.2
[admin@R0]>ppp profile add name=2 local-address=172.16.1.1 remoteaddress=172.16.1.3
Создадим пользователей 1 и 2 с профилями 1 и 2, соответственно
[admin@R0]>ppp secret add name=1 password=1 profile=1
[admin@R0]>ppp secret add name=2 password=2 profile=2
Активируем сервер
[admin@R0]>interface pptp-server server set enabled=yes
Убъём старых pptp клиентов на R1 R4
interface pptp-client rem 0
149
grigoryev.victor@gmail.com http://vmg.pp.ua
Добавим новых
[admin@R1]>interface pptp-client add user=1 password=1 connect-to=10.0.0.1
disabled=no
[admin@R4]>interface pptp-client add user=2 password=2 connect-to=10.0.0.1
disabled=no
На сервере появилось два одинаковых адреса, но в разных сетях
[admin@ R0] > ip ad pr
Flags: X - disabled, I - invalid, D - dynamic
#
ADDRESS
NETWORK
INTERFACE
0
10.0.0.1/24
10.0.0.0
ether7
1
192.168.100.1/24
192.168.100.0
ether1
2 D 172.16.1.1/32
172.16.1.3
<pptp-2>
3 D 172.16.1.1/32
172.16.1.2
<pptp-1>
На клиентах появились адреса
[admin@ R1] > ip ad pr
Flags: X - disabled, I - invalid, D - dynamic
#
ADDRESS
NETWORK
INTERFACE
0
10.0.1.1/24
10.0.1.0
ether7
1
192.168.101.1/24
192.168.101.0
ether1
2 D 172.16.1.2/32
172.16.1.1
pptp-out1
[admin@ R4] > ip ad pr
Flags: X - disabled, I - invalid, D - dynamic
#
ADDRESS
NETWORK
INTERFACE
0
10.0.4.1/24
10.0.4.0
ether7
1
192.168.102.1/24
192.168.102.0
ether1
2 D 172.16.1.3/32
172.16.1.1
pptp-out1
Воспользуемся протоколом OSPF
[admin@R0]>routing ospf network add network=172.16.1.2 area=backbone
[admin@R0]>routing ospf network add network=172.16.1.3 area=backbone
[admin@R0]>routing ospf network add network=192.168.100.0/24
area=backbone
[admin@R1]>routing ospf network add network=172.16.1.1 area=backbone
[admin@R1]>routing ospf network add network=192.168.101.0/24
area=backbone
[admin@ R4]>routing ospf network add network=172.16.1.1 area=backbone
[admin@R4]>routing ospf network add network=192.168.102.0/24
area=backbone
Обратите внимание, что в настройках сетей для OSPF (как и в RIP)
экспортируется сеть, а не адрес. Посмотрим созданные OSPF маршруты
[admin@ R4] > ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#
DST-ADDRESS
PREF-SRC
GATEWAY
DISTANCE
0AS
10.0.0.0/16
10.0.4.2
1
1 ADC
10.0.4.0/24
10.0.4.1
ether7
0
150
grigoryev.victor@gmail.com http://vmg.pp.ua
2 ADC
172.16.1.1/32
172.16.1.3
pptp-out1
0
3 ADo
172.16.1.2/32
172.16.1.1
110
4 ADo
172.16.1.3/32
172.16.1.1
110
5 ADo
192.168.100.0/24
172.16.1.1
110
6 ADo
192.168.101.0/24
172.16.1.1
110
7 ADC 192.168.102.0/24 192.168.102.1 ether1
0
Есть маршруты на сети 192.168.100.0/24 и192.168.101.0/24 и компьютеров R2
и R3, соответственно
[admin@ R1] > ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
#
DST-ADDRESS
PREF-SRC
GATEWAY
DISTANCE
0AS
10.0.0.0/16
10.0.1.2
1
1 ADC
10.0.1.0/24
10.0.1.1
ether7
0
2 ADC
172.16.1.1/32
172.16.1.2
pptp-out1
0
3 ADo
172.16.1.2/32
172.16.1.1
110
4 ADo
172.16.1.3/32
172.16.1.1
110
5 ADo
192.168.100.0/24
172.16.1.1
110
6 ADC
192.168.101.0/24 192.168.101.1
ether1
0
7 ADo
192.168.102.0/24
172.16.1.1
110
Есть маршруты на сети 192.168.100.0/24 и192.168.102.0/24 и компьютеров R2
и R6, соответственно.
Аналогично на R2 есть маршруты на сети 192.168.101.0/24 и192.168.102.0/24
и компьютеров R3 и R6, соответственно.
R2, R3 и R6 увидят друг друга по IP. R6 и наоборот. VPN третьего уровня
создана
Повторите настройки OSPF для протоколов L2TP, SSTP и OpenVPN.
VPN уровня 3 через NAT
Соберём топологию, изображённую рис. 11.2. Проверьте соседей. Здесь R3 и
R4 – маршрутизаторы Интернет-провайдера. Назначьте для R2 и R3 адреса из
сети 192.168.1.0/24 согласно рисунку. Для R2 назначьте шлюз 192.168.1.1.
Назначьте для R4 и R6 адреса из сети 192.168.2.0/24. Для R2 назначьте шлюз
192.168.2.1. Назначьте на тап-интерфейсы R4 и R6 адреса, согласно номеру своей
тап-сети. Обеспечьте маршрутизацию между тап-интерфейсами. Назначьте на тапинтерфейс R4 второй адрес
[admin@R4]>ip ad ad address=10.0.4.22/24 interface=ether7
Настройте NAT для исходящих
[admin@R3]>ip firewall nat add chain=srcnat action=masquerade outinterface=ether7
и приходящих адресов
[admin@R4]>ip firewall nat add chain=dstnat action=dst-nat toaddresses=192.168.2.2 dst-address=10.0.4.22
Набрав на R2
[admin@R2] > sys telnet 10.0.4.22
151
grigoryev.victor@gmail.com http://vmg.pp.ua
должны попасть в 192.168.2.2 (R6). Выход CtrlD
Настроим PPTP, полагая, что профиль default имеет номер 0
[admin@R6] > ppp profile set 0 local-address=172.16.1.1 remoteaddress=172.16.1.2
[admin@R6] > ppp secret add name="q" service=pptp password="q"
profile=default
Запускаем PPTP сервер на R6
[admin@R6] >interface pptp-server server set enabled=yes
Настроим PPTP-клиент на R2. Соединяемся к PPTP-серверу R6 через NAT
т.е. через адрес 10.0.4.22, а не через адрес 192.168.2.2 PPTP-сервера R6 .
[admin@R2] > interface pptp-client add connect-to=10.0.4.22 user="q"
password="q" disabled=no
Проверим доступность R6 из R2 по новому адресу
[admin@R2] ping 172.16.1.1
Рис. 11.2 VPN 3 уровня через NAT
Рис. 11.3. Топология
Протоколы GRE и IPIP
Помимо протоколов PPTP, L2TP, SSTP и OpenVPN для организации VPN третьего
уровня можно использовать протоколы GRE или IPIP. Соберём топологию на рис.
11.4. Назначим на Ethernet-интерфейсы адреса из сети 1.1.1.0/24.
С помощью Winbox (Interfaces->+->GRE Tunnel) GRE-туннель и назначьте на
его концы адреса из сети 11.1.1.0/24. Пустите пинг из Qemu2 на адрес туннеля
11.1.1.1.
152
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 11.4. GRE и IPIP
Деактивируйте GRE-туннель и настройте IPIP-туннель (Interfaces->+->IP
Tunnel). Назначьте на его концы адреса из сети 11.1.1.0/24. Пустите пинг из Qemu2
на адрес туннеля 11.1.1.1.
Если вы обладаете правами суперпользователя, то в GNS3 с помощью
Wirehark можно увидеть иерархию протоколов, изображённую на рис. 11.5 и 11.6.
Рис. 11.5. Иерархия протоколов для GRE
Рис. 11.6. Иерархия протоколов для IPIP
153
grigoryev.victor@gmail.com http://vmg.pp.ua
Требования для сдачи работы
Для топологии на рис. 11.3 настроить VPN 3 уровня через NAT для
протоколов PPTP, L2TP, SSTP и OpenVPN. Протокол маршрутизации
выбрать самостоятельно.
В топологии на рис. 11.4 предъявить работающие GRE и IPIP туннели.
154
grigoryev.victor@gmail.com http://vmg.pp.ua
12. PPPoE
Протокол Ethernet не имеет средств для аутентификации, сжатия данных и
шифрования. Протокол PPPOE предоставляет эти дополнительные возможности.
Рассмотрим типичную локальную сеть (рис. 12.1), состоящую из свича Sw3 и трёх
сетевых устройств Srv0, Cli1 и Cli2. На уровне протокола Ethernet все эти
устройства доступны друг другу без всяких паролей. Протокол PPPOE позволяет,
по крайней мере, ввести доступ к локальной сети только через пароль.
Помним, что свич Sw3 это обычный роутер, у которого интерфейсы e0, e1 и e2
объеденены в мост. Srv0 будет PPPoE-сервером. Добавим пользователей PPPoE
[admin@Srv0]>ppp secret add
name="1" service=pppoe password="1"
profile= default
[admin@Srv0]>ppp secret add
name="2" service=pppoe password="2"
profile=default
Рис. 12.1. Локальная сеть
Настроим в сервере PPPoE пул адресов. PPPoE-клиенты Cli1 и Cli2 будут
получать адреса из этого пула
[admin@Srv0]>ip pool add name="pool1" ranges=192.168.1.100-192.168.1.200
Изменим профиль по умолчанию, указав в нём созданный пул адресов, а в
качестве локального адреса PPPoE-сервера укажем адрес 192.168.1.1
[admin@Srv0]>ppp profile set 0 local-address=192.168.1.3 remoteaddress=pool1
где 0-номер профиля по умолчанию.
Настроим сервер PPPoE на интерфейсе ether1 (e0) с профилем по умолчанию
[admin@Srv0]>interface pppoe-server server add interface=ether1 defaultprofile=default
Настроим клиентов PPPoE, указывая Erthernet-интерфейсы через которые они
будут соединяться с PPPoE-сервером, а также имя и пароль для доступа в сеть
155
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@Cli1]>interface pppoe-client add interface=ether1 user="1"
password="1" profile=default
[admin@Cli2]>interface pppoe-client add interface=ether1 user="2"
password="2" profile=default
Установятся два PPPoE-соединения (флаг R)
[admin@Srv0] > int pppoe-server pr
Flags: X - disabled, D - dynamic, R - running
#NAME USER SERVICE REMOTE-ADDRESS ENCODING UPTIME
0 DR <pp... 2
service1 00:AA:00:28:B...
40m36s
1 DR <pp... 1
service1 00:AA:00:BD:1...
40m33s
[admin@Cli1] > int pppoe-client pr
Flags: X - disabled, R - running
0
R name="pppoe-out1" max-mtu=1480 max-mru=1480 mrru=disabled
interface=ether1 user="1" password="1" profile=default service-name="" ac-name=""
add-default-route=yes
dial-on-demand=no
use-peer-dns=no
allow=pap,chap,mschap1,mschap2
[admin@Cli2] > int pppoe-client pr
Flags: X - disabled, R - running
0
R name="pppoe-out1" max-mtu=1480 max-mru=1480 mrru=disabled
interface=ether1 user="2" password="2" profile=default service-name="" ac-name=""
add-default-route=yes
dial-on-demand=no
use-peer-dns=no
allow=pap,chap,mschap1,mschap2
Клиентам динамически назначаться IP-адреса с маской /32 из указанного пула.
[admin@Cli1] > ip ad pri
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS
NETWORK
INTERFACE
1 D 192.168.1.253/32 192.168.1.1 pppoe-out1
[admin@Cli2] > ip ad pri
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS
NETWORK
INTERFACE
1 D 192.168.1.254/32 192.168.1.1 pppoe-out1
Обратите внимание на сеть 192.168.1.1. Это адрес PPPoE-сервера, который
будет ему назначен дважды, но с разными сетями 192.168.1.253 и 192.168.1.254,
определяемыми адресами клиентов
[admin@Srv0] > ip ad pr
Flags: X - disabled, I - invalid, D - dynamic
# ADDRESS
NETWORK
INTERFACE
1 D 192.168.1.1/32 192.168.1.254 <pppoe-2>
2 D 192.168.1.1/32 192.168.1.253 <pppoe-1>
У клиентов добавится маршрут по умолчанию 192.168.1.1
и маршрут
в сторону PPPoE-сервера
[admin@Cli1] > ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o
- ospf, m - mme,B - blackhole, U - unreachable, P - prohibit
# DST-ADDRESS
PREF-SRC GATEWAY
DISTANCE
156
grigoryev.victor@gmail.com http://vmg.pp.ua
0 ADS 0.0.0.0/0
192.168.1.1
1
2ADC 192.168.1.1/32
192.168.1.253 pppoe-out1
0
[admin@Cli2] > ip ro pr
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o
- ospf, m - mme, B - blackhole, U - unreachable, P -prohibit
#
DST-ADDRESS
PREF-SRC
GATEWAY
DISTANCE
0 ADS 0.0.0.0/0
192.168.1.1
1
2ADC 192.168.1.1/32 192.168.1.254
pppoe-out1
0
У сервера добавится два маршрут в сторону PPPoE-клиентов
[admin@Srv0] > ip ro pr
Flags: X - disabled, A - active, D - dynamic,C - connect, S - static, r - rip, b - bgp, o
- ospf, m - mme,B - blackhole, U - unreachable, P - prohibit
#
DST-ADDRESS
PREF-SRC GATEWAY DISTANCE
1 ADC 192.168.1.253/32 192.168.1.1 <pppoe-1>
0
2 ADC 192.168.1.254/32 192.168.1.1 <pppoe-2>
0
Клиенты видят друг друга по протоколу IP, будто бы работают в чистой
Ethernet сети безо всякого PPPoE. Однако, не зная пароль, они в сеть не попадут.
[admin@Cli1] > ping 192.168.1.254
HOST
SIZE TTL TIME STATUS
192.168.1.254
56 63 12ms
sent=1 received=1 packet-loss=0% min-rtt=12ms avg-rtt=12ms max-rtt=12ms
[admin@Cli2] > ping 192.168.1.253
HOST
SIZE TTL TIME STATUS
192.168.1.254
56 63 12ms
sent=1 received=1 packet-loss=0% min-rtt=12ms avg-rtt=12ms max-rtt=12ms
PPPoE допускает более сложные конфигурации. Соберите топологию,
приведенную на рисунке рис. 12.2. Назначьте имена согласно рисунку. Назначьте
на R7, R6 и R4 адреса 192.168.1.1/24, 192.168.1.2/24 192.168.1.3/24 согласно
рисунку.
В этой топологии мы видим
локальную Erthernet-сеть, образованную
компьютерами R7, R6 и маршрутизатором R4. Мы хотим через роутер R4 с
помощью протокола PPPoE присоединить к этой Erthernet-сети новые компьютеры
R2 и R3.
R4 будет PPPoE-сервером. Добавим пользователей PPPoE
[admin@R4] > /ppp secret add
name="1" service=pppoe password="1"
profile=defaul
[admin@R4] > /ppp secret add
name="2" service=pppoe password="2"
profile=default
Настроим в сервере PPPoE пул адресов. Адреса пула должны лежать в уже
существующей сети 192.168.1.0/24
[admin@R4] >ip pool add name="pool1" ranges=192.168.1.100-192.168.1.200
Изменим профиль по умолчанию, указав в нём созданный пул адресов, а в
качестве локального адреса PPPoE-сервера укажем уже занятый этим роутером R4
адрес 192.168.1.3
[admin@R4]>ppp profile set 0 local-address=192.168.1.3 remote-address=pool1
157
grigoryev.victor@gmail.com http://vmg.pp.ua
Настроим PPPoE-сервер на интерфейсе ether1 (e0)
[admin@R4]>interface pppoe-server server add interface=ether1defaultprofile=default
Настроим клиентов PPPoE, указывая им Erthernet-интерфейсы через которые
они будут соединяться с PPPoE-сервером
[admin@R3] >interface pppoe-client add interface=ether1 user="1"
password="1" profile=default
[admin@R2]>interface
pppoe-client
add
interface=ether2
user="2"
password="2" profile=default
Рис. 12.2. Более сложная конфигурация PPPoE
Проверьте, что установились два PPPoE-соединения (int pppoe-server pr, int
pppoe-client pr) и динамически назначены IP-адреса с маской /32 клиентам из
указанного пула и адрес 192.168.1.3 серверу (ip ad pri). Адрес 192.168.1.3 у R4
повторяется три раза, но сети у адресов разные и они (сети) определяются
клиентскими адресами.
Чтобы PPPoE клиенты R2 и R3 могли связаться по IP с компьютерами R6 и
R7 они должны быть в состоянии послать им ARP-запрос и получить от них ARPответ. Но между ними лежит устройство R4. Нужно сделать так, чтобы R4
транслировало ARP-пакеты. Поэтому в R4 организуем прокси-ARP для интерфейса
ether2(e1), так как e1 смотрит в сторону R6 и R7
158
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@R4] > interface ethernet print
0 R ether1
1500 00:AA:00:E5:69:00 enabled
1 R ether2
1500 00:AA:00:E5:69:01 enabled
[admin@R4] > interface ethernet set 1 arp=proxy-arp
Теперь каждое устройство пингует каждое. Проверьте.
Мы объединили два сегмента Ethernet в одну IP-сеть.
Требования для сдачи работы
Предоставить работающие топологии, изображённые на рис. 12.1 и рис. 12.2.
159
grigoryev.victor@gmail.com http://vmg.pp.ua
13. Ipsec
Состав IPsec
SA (Security Association)
Политики IPsec
Фазы IKE
Конфигурация IPsec в Mikrotik RouterOS
Шифрация соединения точка-точка
Организация VPN типа сайт-сайт с помощью IPsec
`
160
161
162
162
163
166
169
Состав IPsec
Ipsec (Internet Protocol Security) это конструктор, набор протоколов,
фреймворк, позволяющий обеспечить требуемую безопасность передачи
Фреймворк Ipsec.
Таблица 13.1
Ipsec-протокол
AH
ESP, ESP+AH
Конфиденциальность
DES, 3DES, AES, SEAL
и др
Целостность
MD5, SHA
Аутентификация
PSK, RSA
Алгоритм
Диффи Группа Диффи-Хеллмана (сила
Хеллмана
шифра)
IKE – Протокол обмена Интернет-ключей
Конфиденциальность обеспечивается протоколами шифрования DES, 3DES,
AES, SEAL. Приведены протоколы в порядке возрастания безопасности. Чем
безопасней протокол, тем он требует больших вычислительных мощностей.
Целостность – гарантия того, что данные не были изменены во время
передачи. Для этого по алгоритму MD5 или SHA вычисляют хеш данных о
целостности которых беспокоятся. Хеш вместе с данными передаются по сети.
Для аутентификации участников сетевого обмена применяется или заранее
известный обеим сторонам ключ
(PSK - Preshared Keys) или цифровые
сертификаты RSA.
Алгоритм Диффи-Хеллмана предлагает процедуру обмена данными между
двумя сторонам через небезопасное соединение, которая приводит к генерации
общего секретного ключа для шифрования. Сам ключи не передаётся.
Есть два варианта Ipsec-протокола: AH и ESP. Протокол AH (Authentication
Header - заголовок аутентификации) обеспечивает проверку подлинности
содержания IP-датаграммы путем добавления в датаграмму контрольного хешзначения, которое рассчитывается на основе этой датаграммы. Какие части
датаграммы используются для расчета, а также размещение полей датаграммы,
зависит от того, какой режим используется: туннельный или транспортный.
В транспортном режиме AH-заголовок вставляется после заголовка IP. AHзаголовок содержит контрольное хеш-значение. Для его расчета используется IPданные и заголовки. IP-поля, которые могут меняться во время транзита, какие как
TTL, приводятся к нулевым значениям до аутентификации.
160
grigoryev.victor@gmail.com http://vmg.pp.ua
В туннельном режиме исходный пакет IP инкапсулируется в новый пакет IP.
Весь исходный пакет IP проходит проверки подлинности. AH-заголовок
вставляется после нового заголовка IP
AH это протокол, который не шифрует датаграмму. Для шифрования
используется другой протокол ESP. Основным и единственным назначением AH
является обеспечение защиты от атак, связанных с несанкционированным
изменением содержимого пакета, и в том числе от подмены исходного адреса
сетевого уровня.
Протокол ESP (Encapsulating Security Payload - Инкапсуляция зашифрованных
данных)
использует
общий
ключ
шифрования
для
обеспечения
конфиденциальности данных. ESP также поддерживает свою собственную схему
аутентификации, подобную той, которая используется в AH, или может быть
использован в сочетании с АH.
В транспортном режиме IP-заголовки не подвергаются аутентификации и
шифрованию, а IP-даные подвергаются.
В туннельном режиме исходный пакет IP инкапсулируется в новый пакет IP,
обеспечивая шифрование IP-данных и IP-заголовка.
Аппаратное шифрование позволяет значительно ускорить процесс
шифрования с помощью встроенной внутри процессора устройства шифрования.
Для сравнения маршрутизатор RB1100AH с использованием алгоритма AES-128
может обработать 550 Мбит/с зашифрованного трафика. Без аппаратной
поддержки он может обработать только 150 Мбит/с зашифрованного трафика.
Протокол IKE (Internet Key Exchange) используется для построения и
защищенного согласования параметров IPsec –туннеля. Для создания общих
ключей IKE использует протокол Oakely и Алгоритм Диффи-Хеллмана .
SA (Security Association)
Гарантии целостности и конфиденциальности данных в спецификации IPsec
обеспечиваются за счет использования механизмов аутентификации и шифрования
соответственно. Последние, в свою очередь, основаны на предварительном
согласовании
сторонами
информационного
обмена
применяемых
криптографических алгоритмов, алгоритмов управления ключевой информацией и
их параметров. После согласования возникает ассоциация безопасности SA
(Security Association). В SA хранится протокол, алгоритмы и ключи, которые будут
использованы для шифрования или подписи передаваемых данных. Каждый SA
используется только в одном направлении. Для двунаправленной связи требуется
два SA. Каждый SA реализует один Ipsec-протокол. Если для одного пакета
необходимо использовать два протокола (например, AH и ESP), то требуется два
SA. SA динамически создаётся с помощью IKE до начала обмена данными между
двумя пирами. SA содержится в базе SAD (Security Association Database).
Каждое SA единственным образом определяется тремя параметрами
* Security Parameter Index (SPI): 32-битовое число, назначаемое SA и
имеющее только локальное значение. SPI включается в заголовки AH и ESP, чтобы
получатель смог выбрать корректный SA для обработки получаемого пакета.
161
grigoryev.victor@gmail.com http://vmg.pp.ua
* IP-адрес получателя - адрес противоположной стороны, с которой
установлена ассоциация безопасности.
* Security Protocol Identifier: указывает, какой протокол IPSec используется
на SA (AH или ESP).
Политики IPsec
Политика определяют, что делать с группой пакетов, удовлетворяющих
некоему условию. Политики хранятся в SPD (Security Policy Database - База
данных политики безопасности) и базе SAD. Политика может указать для пакета
данных одно из трёх действий: отбросить пакет, не обрабатывать пакет с помощью
IPSec и обработать пакет с помощью IPSec. В последнем случае политика также
указывает, какой SA необходимо использовать (если, конечно, подходящий SA уже
был создан) или указывает, с какими параметрами должен быть создан новый SA.
IPsec согласовывает с другой стороной по протоколу IKE создание нового SA и его
параметры
Устройство проверяет базу данных SPD для определения, что делать с
конкретной датаграммой. SPD может ссылаться на конкретный SA в SAD. Если
это так, то устройство будет искать этот SA и использовать его для обработки
датаграммы
SPD является очень гибким механизмом управления, который допускает очень
хорошее управление обработкой каждого пакета. Пакеты классифицируются по
большому числу полей, и SPD может проверять некоторые или все поля для того,
чтобы определить соответствующее действие. Это может привести к тому, что весь
трафик между двумя машинами будет передаваться при помощи одного SA, либо
отдельные SA будут использоваться для каждого приложения, или даже для
каждого TCP соединения.
Фазы IKE
Основное время служба IKE ничего не делает. Если имеется некий трафик,
соответствующий правилу политики, который нуждается в шифровании или
аутентификации, но политика не имеет никакого SA, то политика извещает об этом
службу IKE и она инициирует связь к удалённому хосту. IKE выполняет две фазы:
Фаза 1. Производится аутентификация сторон, и согласовываются их IPSecполитики. С помощью Алгоритм Диффи-Хеллмана рассчитываются общие ключи
для SA. Создаётся слабый туннель, позволяющий начать обмен IKE для фазы 2.
Есть два режима фазы 1 обычный и агрессивный (за три пакета).
Фаза 2. Производится согласование параметров SA
с целью создания
туннеля IPSec. Устанавливается однонаправленный SA для каждой комбинации
алгоритма и протокола. Создаётся сильный туннель.
Все SA, установленные службой IKE, будут иметь значение времени жизни.
Имеются два значения времени жизни - твёрдое и мягкое. Когда SA достигает
своего мягкого порога, служба IKE получает извещение и запускает ещё одну фазу
2 обмена для освежения SA . Если SA достигли твёрдого времени жизни, то они
отбрасываются.
162
grigoryev.victor@gmail.com http://vmg.pp.ua
Генерация ключей требует значительных вычислительных затрат. Это обычно
имеет место один раз в течение фазы 1.
Конфигурация IPsec в Mikrotik RouterOS
Конфигурация пиров осуществляется через подменю /ip ipsec peer
согласно табл.13.2. Конфигурации используются для установки соединения между
службами IKE (1-я фаза). Это соединение далее используется в процессе
согласования ключей и алгоритмов для SA.
Конфигурация пиров
Таблица 13.2
Свойство
Описание
Адресный префикс. Если адрес удалённого
address (IP[/Netmask]:port; Default:пира подпадает под этот префикс, то эта
0.0.0.0/32:500)
конфигурация
используется
в
аутентификации и установке фазы 1.
Метод аутентификации:
pre-shared-key - аутентификации по общей
auth-method (pre-shared-key | rsaдля пиров парольной строке
signature; Default: pre-shared-key)
rsa-signature – аутентификация с помощью
пары RSA -сертификатов
Имя локального сертификата. Он должен
certificate (string; Default: )
иметь закрытый ключ. Применимо при
аутентификации RSA-signature
dh-group (ec2n155 | ec2n185
Группа Diffie-Hellman (сила
| modp1024 | modp1536 | modp768
шифра)
; Default: modp1024)
Интервал обнаружения отсутствия пира.
dpd-interval (disable-dpd | time; Default:
При
disable-dpd
обнаружения
не
disable-dpd)
производится
dpd-maximum-failures (integer: 1..100;Максимальное
количество
сбоев
до
Default: 5)
определения пира как отсутствующего
enc-algorithm (3des | aes-128 | aes-192 |
aes-256 | des | blowfish | camellia-128 |
Алгоритм шифрования
camellia-192 | camellia-256; Default:
3des)
exchange-mode (aggressive | base | Режим обмена в фазе 1. Не меняйте, если не
main; Default: main)
понимаете
Позволяет пиру установить SA для
несуществующей
политики.
Политика
generate-policy (yes | no; Default: no) создаётся динамически во время жизни SA.
Этот
способ
полезен,
когда
адрес
удалённого пира неизвестен
hash-algorithm (md5 | sha1; Default:Алгоритм хеширования. SHA сильнее, но
md5)
медленнее
lifebytes
(Integer:
0..4294967295;Время жизни первой фазы. Определяет
Default: 0)
сколько байт может быть передано до того
163
grigoryev.victor@gmail.com http://vmg.pp.ua
как SA будет отброшено. Если указан 0, то
SA не отбрасывается.
Время жизни фазы 1: определяет время
lifetime (time; Default: 1d)
действительности SA
Использование механизма Linux NATnat-traversal (yes | no; Default: no)
traversal для разрешения несовместимости
IPsec и NAT
Логика проверки времени жизни фазы 2:
claim – взять самое короткое из
предложенных времён жизни и известить
инициатора об этом
proposal-check (claim | exact | obey | exact – требовать, чтобы время жизни было
strict; Default: obey)
такое же
obey – принять всё, что пошлёт инициатор
strict – если предложенное время больше,
чем время по умолчанию, то отбросить.
Иначе принять предложенное
Имя сертификата для аутентификации
удалённой стороны. Закрытый ключ не
remote-certificate (string; Default: )
требуется. Применимо при аутентификации
RSA-signature
Парольная
строка.
Применимо
при
аутентификации pre-shared key. Если
secret (string; Default: "")
начинается с 0x, то рассматривается как 16-е
число
send-initial-contact (yes | no; Default:Определяет отсылать ли начальную IKEyes)
информацию или ждать удалённую сторону
При смене этой конфигурации на лету, информация о фазах IPSec
уничтожается, однако пакеты продолжают шифроваться и дешифроваться согласно
установленным SA.
Политика IPsec настраивается в подменю /ip ipsec policy
согласно табл.2. Таблица политик предназначена для определения того,
какие установки безопасности будут применены к пакету
Конфигурация политик
Таблица 13.3
Свойство
Описание
Определяет, что делать с пакетом, который
удовлетворяет политике.
action (discard | encrypt | none;none – пропустить пакет без изменения
Default: encrypt)
discard - отбросить пакет
encrypt
–
применить
преобразование,
определённое в этой политике и SA
dst-address (IP/Mask:Port; Default:
Адресный префикс и порт назначения.
0.0.0.0/32:any)
ipsec-protocols (ah|esp; Default: esp) Определяет какая комбинация протоколов AH
и ESP будет применена к трафику, который
164
grigoryev.victor@gmail.com http://vmg.pp.ua
удовлетворяет политике.
Определяет, что делать, если некоторые SA
для этой политике не могут быть найдены:
use – пропустить это преобразование, не
отбрасывать пакет и не получать SA от IKElevel (require | unique | use; Default:
службы
require)
require - отбросить пакет и получить SA
unique - отбросить пакет и получить
уникальный SA , который только и
используется для этой конкретной политики
Классификатор порядка политик (целое со
priority
(Integer:
знаком). Большее число значит больший
2147483646..2147483647; Default: 0)
приоритет
Имя предлагаемой информации, которое будет
proposal (string; Default: default)
передано IKE-службой для установки SA для
этой политики
protocol (all | egp | ggp | icmp | igmp
Для каких протоколов использовать
| ...; Default: all)
sa-dst-address (IP; Default: 0.0.0.0)
Удалённый IP-адрес SA (удалённый пир).
sa-src-address (IP; Default: 0.0.0.0)
Локальный IP-адрес SA (локальный пир).
src-address (IP/Mask:Port; Default:
Адресный префикс и порт источника.
0.0.0.0/32:any)
Определяет, использовать ли туннельный
tunnel (yes | no; Default: no)
режим
В транспортном режиме следует указать dst-address= sa-dst-address и srcaddress= sa-dst-address. Для шифрования трафика между сетями следует
использовать туннель. Пакет из сети src-address в сеть dst-address будет помещён в
новый пакет с адресом источника sa-src-address и адресом приёмника sa-dstaddress.
Установка предлагаемой информации производится в подменю /ip ipsec
proposal согласно Таблица 13.4. Предлагаемая информация отсылается
службой IKE для установки SA для политики. Имя предлагаемой информации
устанавливается в политике.
Установка предлагаемой информации
Таблица 13.4
Свойство
Описание
auth-algorithms
(md5|sha1|null;Разрешённые
алгоритмы
проверки
Default: sha1)
подлинности
enc-algorithms (null|des|3des|aes-128|
aes-192|aes-256|blowfish|camellia-128
Разрешённые алгоритмы шифрования
| camellia-192 | camellia-256 | twofish;
Default: 3des)
lifetime (time; Default: 30m)
Время жизни SA
pfs-group (ec2n155 | ec2n185 |
Группа Diffie-Helman для Perfect Forward
modp1024 | modp1536 | modp768 | ...;
Secrecy.
Default: modp1024)
165
grigoryev.victor@gmail.com http://vmg.pp.ua
Подменю
/ip
ipsec
installed-sa
предоставляет
информацию об
установленных SA и их ключах. С помощью команды /ip ipsec installed-sa flush
можно вручную сбросить SA, которые некорректно установлены IKE. Подменю / ip
ipsec remote-peers содержим информацию только для чтения об активных
удалённых пирах.
Шифрация соединения точка-точка
Соберём топологию ipsec1, изображённую на Рис. 13.1, в которой роутеры
соединяются друг с другом через нашу модель Интернета. Вместо приведенных
адресов используйте адреса из своей tap-сети. Пропишите для этого в роутерах
соответствующие маршруты. Пусть первый пакет исходит от R1. В winbox для
настройки пиров R0 и R1 выбираем IP->IPsec->Peers->+. Вводим секретную фразу
и адрес противоположной стороны (рис. 13.2).
Рис. 13.1 Топология ipsec1
Рис. 13.2 Настройка пира R0
166
grigoryev.victor@gmail.com http://vmg.pp.ua
Настраиваем генерацию политики по запросу на шифрование от R1. В R1
настраиваем инициацию шифрования (Рис. 13. 3).
Для определения политики в R1 выбираем в winbox IP->IPsec->Policies->+ и
вводим адреса Src.Address: 10.0.1.1. Dst.Address: 10.0.1.1. SA Src.Address: 10.0.1.1.
SA Dst.Address: 10.0.1.1. (рис. 13.4). Не нажимая Apply, переходим к вкладке
Action и вводим те же адреса (Рис. 13. 5). Нажимаем Ok и инициируем
шифрование, запуская на R1 в сторону R0 пинги (Tools->Ping). Видим некоторую
задержку (рис. 13.6).
Проверяем. На R0 появилась политика (IP>IPsec->Policies). И R0 и R1
увидели удалённого собеседника (IP->IPsec->Remote Peers). И на R0 и на R1
инсталлировались SA (IP->IPsec->Installed SAs). Трафик шифруется.
Рис. 13.3 Настройка пира R1
167
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 13.4. Настройка политики в R1
Рис. 13.5. Дальнейшая настройка политики в R1
Рис. 13.6. Шифрация началась
Задание. В Windows протокол L2TP представлен не в чистом виде, а в
сочетании c IPsec. Сделайте копию IPsecL2TP последней топологии, организуйте
L2TP соединение от R1 к R0 и организуйте поверх него IPsec.
168
grigoryev.victor@gmail.com http://vmg.pp.ua
Организация VPN типа сайт-сайт с помощью IPsec
Соберём топологию ipsec2, изображённую на рис. 13.7. Внешние адреса
10.0.0.1 и 10.0.1.1 измените согласно своему номеру тап-сети. У кого номер тап
сети равен 1, измените внутренние адреса сетей 10.1.101.0/24 и 10.1.101.0/24.
Рис. 13.7. Топология ipsec2
Рис. 13.8. Настройка пира R0
169
grigoryev.victor@gmail.com http://vmg.pp.ua
Дайте сетевым устройствам имена внутри RouterOS. Превратите sw6 и sw7 в
свичи, поместив используемые Ethernet-интерфейсы в мост. Проверьте соседей.
Назначьте адреса согласно рисунку. На R2 и R3 пропишите маршрут по
умолчанию на 10.1.202.1. На R4 и R5 пропишете маршрут по умолчанию на
10.1.101.1
Рис. 13.9. Настройка пира R1
На R0 пропишем маршрут на R1 через модель Интернета
[admin@R0] > Route add dst=10.0. 1.0/24 gate=10.0.0.2
На R1 пропишем маршрут на R0 через модель Интернета
[admin@R1] > Route add dst=10.0. 0.0/24 gate=10.0.1.2
На R0 пропишем маршрут на сеть 10.1.101.0/24 через 10.0.0.2
[admin@R0] > Route add dst=10.1.101.0/24 gate=10.0.0.2
На R1 пропишем маршрут на сеть 10.1.202.0/24 через 10.0.1.2
[admin@R1] > Route add dst=10.1.202.0/24 gate=10.0.1.2
170
grigoryev.victor@gmail.com http://vmg.pp.ua
Компьютеры из сети 10.1.101.0/24 не увидят компьютеры из сети 10.1.202.0/24
и наоборот. Это естественно. Ubuntu не знает, что делать с пакетами из этих сетей.
Выполните в Ubuntu команду Netstat –r и вы не увидите маршрутов на эти сети.
Мы не знаем, кто инициирует шифрование. Поэтому произведём
симметричную конфигурацию пиров, указав адрес собеседника и секрет (Рис. 13. 8
и 9).
Определим на R0 политику, задающую шифрование от сети Src.Address:
10.1.202.0/24 к сети Dst.Address: 10.1.101.0/24 (Рис. 13.10). Для SA в качестве
адреса источника SA Src.Address возьмём внешний адрес 10.0.0.1 R0, а в качестве
адреса приёмника SA Dst.Address возьмём внешний адрес 10.0.1.1 R1. Обмен
осуществляется в туннельном режиме (Рис. 13.11).
Определим на R1 политику, задающую шифрование от сети Src.Address:
10.1.101.0/24 к сети Dst.Address 10.1.202.0/24 (Рис. 13.12). Для SA в качестве
адреса источника возьмём внешний адрес SA Src.Address 10.0.1.1 R1, а в качестве
адреса приёмника SA Dst.Address возьмём внешний адрес 10.0.0.1 R0. Обмен
осуществляется в туннельном режиме (Рис. 13.13).
Убедимся, что мы с помощью IPsec создали VPN типа сайт-сайт между сетями
10.1.101.0/24 и 10.1.101.0/24. Для этого протрассируем пакеты из сети 10.1.101.0/24
в сеть 10.1.101.0/24. Наберём в R4 команду
[admin@ R4] > tools tracert 10.1.202.2
где 10.1.202.2 – это адрес R2.
Пакеты протокола ICMP между сайтами пошли (Рис. 13.14). VPN создано.
Рис. 13.10. Политика на R0
171
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 13.11. Политика на R0. SA
Рис. 13.12. Политика на R1
172
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 13.13. Политика на R1. SA
На Рис. 13.14 видим отсутствие внешних адресов 10.0.0.1 и 10.0.0.1
маршрутизаторов R0 и R1, хотя трафик не может через них не проходить. Это
объясняется тем, что ICMP в R4 и R6 не может знать, что пакеты будут
зашифрованы и помещены в пакеты с адресами 10.0.0.1/24 и 10.0.1.1/24.
Компьютеры из сети 10.1.101.0/24 не видят компьютеры из сети 10.1.202.0/24
и наоборот. Это естественно. Так как Ubuntu не знает, что делать с пакетами из
сетей 10.1.101.0/24 и 10.1.202.0/24. Что случилось? Как образовалась VPN?
Просто теперь пакеты из этих сетей зашифрованы и посещены в пакеты с адресами
10.0.0.1/24 и 10.0.1.1/24, с которыми Ubuntu знает, что делать. Если вы обладаете
правами суперпользователя, то это можно увидеть с помощью программы
анализатора сетевых пакетов Wireshark (Рис. 13.15).
Рис. 13.14. Прохождение пакетов ICMP между сайтами в VPN
Рис. 13.15. Wireshark показывает шифрование пакетов
173
grigoryev.victor@gmail.com http://vmg.pp.ua
Проверяем. И R0 и R1 увидели удалённого собеседника (IP->IPsec->Remote
Peers). И на R0 и на R1 инсталлировались SA (IP->IPsec->Installed SAs).
Задание. Организуйте VPN типа сайт-сайт с помощью IPsec для топологии
ipsec3, представленной на Рис. 13.16. Внешние адреса R0, R1 и R10 измените
согласно своему номеру тап-сети. У кого номер 1 измените адреса сетей.
Рис. 13.16. Топология ipsec3
Требования для сдачи работы
Предъявить работающие топологии IPsecL2TP и ipsec3
174
grigoryev.victor@gmail.com http://vmg.pp.ua
14. MPLS в роутерах Mikrotik.
LDP
Фильтрация меток
RSVP TE
176
182
182
MPLS это многопротокольная коммутация по меткам (MultiProtocol Label
Switching). Она отчасти заменяет IP-маршрутизацию - решение о пересылке пакета
(исходящий интерфейс и следующий хоп маршрута) принимается не на основе
адреса назначения этого пакета и таблицы маршрутизации, а на основе метке,
которая прикреплена к пакету. Такой подход ускоряет процесс пересылки, потому
что поиск следующего хопа становится значительно проще по сравнению с
поиском самого длинного соответствующего префикса в таблице маршрутов.
Эффективность пересылки это не основное преимущество MPLS. MPLS
вносит в сетевые технологии качественно новые возможности, например
маршрутизация по адресу источника.
MPLS-метка IP-пакета является целым числом и располагается в резервном
поле его заголовка второго уровня (рис.14.1) Как правило, вторым уровнем для
локальных сетей является Ethernet.
Рис 14.1 IP-пакет в составе Ethernet-пакета, содержащего MPLS метку 18. Получено с
помощью анализатора пакетов Wireshark.
В простейшей форме MPLS можно рассматривать как улучшение
маршрутизации - помеченный пакет проходит тот же путь, который он бы прошёл,
если он не был бы маркирован. Этот путь коммутации по метке (LSP -label
switching path) обеспечивает передачу данных на выход облака MPLS.
Маршрутизатор внутри облака MPLS, осуществляющий коммутацию пакетов по
меткам, называют
LSR (label switch router). Когда LSR получает пакет, он
использует метку пакета для определения следующего хопа в LSP. При этом LSR
меняет у пакета метку перед его отправкой.
LSR-роутеры, связывающие MPLS-облако с внешним миром называют
граничными роутерами (см. рис. 14.2).
175
grigoryev.victor@gmail.com http://vmg.pp.ua
Метки внутри облака MPLS распределяются с помощью протокола
распределения меток LDP (Label Distribution Protocol). Другой способ установки
пути LSP для прохождения пакетов обеспечивают TE-туннели (traffic engineering инжениринг трафика), использующие модификацию протокола резервирования
ресурсов RSVP (Resource Reservation Protocol) RSVP TE. TE-туннели позволяют
явно определить пути LSP при ограничениях в виде ограниченной полосы
пропускания интерфейсов.
LDP
Рассмотрим вначале протокол LDP. В результате LDP-сессий между LSRмаршрутизаторами в MPLS-облаке устанавливается согласованная система меток,
которая строится с использованием существующих активных маршрутов.
MPLS работает с классами эквивалентности при пересылке (forwarding
equivalence class -FEC). Примеры классов FEC:
• Множеств пакетов с одинаковой сетью назначения.
• Множеств пакетов с одинаковой сетью назначения и одинаковой сетью
источником.
• Множество пакетов с одинаковыми портами назначения и т. д.
Для пакета при входе в MPLS-облако всегда определяется его класс FEC. В
MPLS-облаке для пакетов из каждого класса FEC с помощью протокола LDP
назначается своя система меток. Пакеты с метками из одного FEC обрабатываются
одинаковым образом. Где бы пакет не находился в MPLS-сети, метка определяет к
какому классу FEC пакет относится. То есть пакет помнит своё происхождение.
Именно этим свойством MPLS вносит принципиально новое качество в
современные сетевые технологии. Рассмотрим сеть на рис. 14.2.
Рис. 14.2. MPLS-сеть из 6-и LSR-роутеров с назначенными адресами на интерфейсы
петли c маской /32. Маски сетей между роутерами равны /24. Роутеры LSR1 и LSR6 —
граничные.
176
grigoryev.victor@gmail.com http://vmg.pp.ua
Хотя это и не строгое требование, желательно в LSR-маршрутизаторах,
назначать IP-адрес на интерфейс петли Loopback, и использовать этот адрес для
установки LDP-сессий. Так как может быть только одна LDP-сессия между двумя
маршрутизаторами вне зависимости от того, сколько линков соединяет их,
использование IP-адреса на интерфейс Loopback гарантирует, что работа LDP не
будет зависеть от смены состояния и адресов этих линков.
Интерфейс петля не связан с каким-то реальным устройством. В качестве
такого интерфейса в RouterOS может служить пустой мост. Создадим такие
интерфейсы и назначим на них адреса согласно рисунку. Например, для LSR1
[admin@LSR1]>interface bridge add name=loopback
[admin@R1]>ip address add address=9.9.9.1/32 interface=loopback
Адреса и маски можно брать произвольные. Маска /32 взята, чтобы
подчеркнуть изолированность интерфейса.
Так как LDP распределяет метки по активным маршрутам, важным
требованием является правильная настройка IP-маршрутизации. Используем
протокол маршрутизации OSPF, анонсируя на каждом LSR-маршрутизаторе все
присоединённые сети. Например, на LSR1 OSPF может быть настроен с помощью
следующих команд:
[admin@LSR1] > routing ospf network add area=backbone network=172.16.0.0/16
[admin@LSR1] > routing ospf network add area=backbone network=9.9.9.1/32
[admin@LSR1] > routing ospf network add area=backbone network=1.1.1.0/24
[admin@LSR1] > routing ospf network add area=backbone network=4.4.4.0/24
На остальных маршрутизаторах настройку OSPF осуществлена подобным
образом. На внешних по отношению к облаку MPLS маршрутизаторах назначим
маршрут по умолчанию. Например
[admin@L] > ip route add gateway=172.16.0.1
Проверим правильность настройки маршрутизации, направив ICMP-пакеты
от роутера L (172.16.0.2 ) к роутеру M
[admin@L] > ping 172.17.0.2
На каждом LSR-роутере посмотрим маршруты в сторону сети 172.17.0.0/16
маршрутизатора M.
[admin@LSR1] > ip route print detail where dst-address =172.17.0.0/16
ADo
dst-address=172.17.0.0/16 gateway=1.1.1.1,4.4.4.1 gateway-status=1.1.1.1
reachable via ether1,4.4.4.1 reachable via ether2
[admin@LSR2] > ip route print detail where dst-address =172.17.0.0/16
ADo dst-address=172.17.0.0/16 gateway=2.2.2.2 gateway-status=2.2.2.2 reachable via
ether2
[admin@LSR3] > ip route print detail where dst-address =172.17.0.0/16
ADo dst-address=172.17.0.0/16 gateway=3.3.3.2 gateway-status=3.3.3.2 reachable via
ether2
[admin@LSR4] > ip route print detail where dst-address =172.17.0.0/16
16 ADo dst-address=172.17.0.0/16 gateway=5.5.5.1 gateway-status=5.5.5.1 reachable
via ether2
[admin@LSR5] > ip route print detail where dst-address =172.17.0.0/16
ADo dst-address=172.17.0.0/16 gateway=6.6.6.2 gateway-status=6.6.6.2 reachable via
177
grigoryev.victor@gmail.com http://vmg.pp.ua
ether2
[admin@LSR6] > ip route print detail where dst-address =172.17.0.0/16
ADC
dst-address=172.17.0.0/16 pref-src=172.17.0.1 gateway=ether3 gatewaystatus=ether3 reachable via ether3
Флаги перед маршрутом означают: A-активный маршрут, D-динамически
создан системой, o-создан протоколом OSPF, С-непосредственно соединённая сеть.
В параметре gateway показаны все возможные адреса следующего перехода по
направлению к сети назначения. Параметр gateway-status указывает на активный
адрес следующего перехода по направлению к сети назначения. После фразы
«reachable via» можно увидеть через какой интерфейс достижима сеть назначения.
Результаты вывода команд сведём в таблицу 14.1
Маршруты на сеть 172.17.0.0/24
Хост
Таблица 14.1
IP-адресс
и
хост Выходной интерфейс
следующего перехода
Routeros (GNS3)
LSR1
1.1.1.1
LSR2
ether1 (e0)
LSR2
2.2.2.2
LSR3
ether2 (e1)
LSR3
3.3.3.2
LSR6
ether2 (e1)
LSR4
5.5.5.1
LSR5
ether2 (e1)
LSR5
6.6.6.2
LSR6
ether2 (e1)
LSR6
Локально
в
ether3 (e2)
Для распределения меток активируем на каждом LSR-маршрутизаторе
протокол LDP. Транспортный адрес установим как адрес интерфейса Loopback.
Это заставляет маршрутизатор рекламировать соседям по LDP этот адрес как
транспортный адрес. Объявим интерфейсы, смотрящие внутрь MPLS–сети, как
интерфейсы, участвующие в обмене меток.
У LSR1и LSR6 интерфейс ether3 не участвует в работе протокола LDP.
Например, для LSR1 используем команды
[admin@LSR1]>mpls ldp set enabled=yes transport-address=9.9.9.1 lsr-id=9.9.9.1
[admin@LSR1]>mpls ldp interface add interface=ether1
[admin@LSR1]>mpls ldp interface add interface=ether2
Для LSR2 это делается командами
[admin@LSR2]>mpls ldp set enabled=yes transport-address=9.9.9.2 lsr-id=9.9.9.2
[admin@LSR2]>mpls ldp interface add interface=ether1
[admin@LSR2]>mpls ldp interface add interface=ether2
[admin@LSR2]>mpls ldp interface add interface=ether3
Остальные маршрутизаторы настраиваются подобным образом. LDP
активируется на интерфейсах, идущих в сторону MPLS-облака и не активируется
на интерфейсах, идущих в сторону маршрутизаторов L и M.
178
grigoryev.victor@gmail.com http://vmg.pp.ua
После установления LDP сессии и отработки LDP-протокола у LSRмаршрутизаторов появляются LDP-соседи. Например, на LSR1
[admin@LSR1] > mpls ldp neighbor print
Flags: X - disabled, D - dynamic, O - operational, T - sending-targeted-hello, V - vpls
# TRANSPORT LOCAL-TRANSPORT PEER
ADDRESSES
0 DO 9.9.9.2
9.9.9.1
9.9.9.2:0 1.1.1.1 2.2.2.1 7.7.7.1 9.9.9.2
1 DO 9.9.9.4
9.9.9.1
9.9.9.4:0 4.4.4.1 5.5.5.2 7.7.7.2 9.9.9.4
Видим, что LSR1 имеет два соседа LSR2 (9.9.9.2) и LSR4(9.9.9.4). Видим
также все адреса этих соседей. LDP-соседи для всех LSR-маршрутизаторов
приведены в таблице 14.2.
LDP-соседи
LSR
Таблица 14.2
LDP-соседи
LSR1
LSR2 LSR4
LSR2
LSR1 LSR3 LSR4
LSR3
LSR2 LSR5 LSR6
LSR4
LSR1 LSR2 LSR5
LSR5
LSR3 LSR4 LSR6
LSR6
LSR3 LSR5
В качестве класса FEC возьмём пакеты, идущие в сеть 172.17.0.0./24. LDP на
каждом LSR назначит для этого класса входные метки, которые можно посмотреть
командой
mpls local-bindings print where dst-address =172.17.0.0/16
Результаты вывода этих команд сведём в таблицу 14.3
Входные метки пакетов, идущих в сеть 172.17.0.0./24
Таблица 14.3
Хост
Входные метки
Идентификаторы соседей,
которые получат эту метку
LSR1
18
9.9.9.2 9.9.9.4
LSR2
25
9.9.9.1 9.9.9.3
LSR3
35
9.9.9.2 9.9.9.6 9.9.9.5
LSR4
21
9.9.9.1 9.9.9.5 9.9.9.2
LSR5
29
9.9.9.4 9.9.9.6 9.9.9.3
LSR6
Impl-null
9.9.9.3 9.9.9.5
9.9.9.4
На LSR6 метка не назначается (Impl-null ), так как сеть 172.17.0.0/16
присоединена к LSR6 непосредственно.
LSR-маршрутизатор получает от LDP-соседей метки. Посмотрим эти метки
для нашего класса FEC
[admin@LSR1] > mpls remote-bindings print where dst-address =172.17.0.0/16
179
grigoryev.victor@gmail.com http://vmg.pp.ua
# DST-ADDRESS
NEXTHOP
LABEL PEER
2 AD 172.17.0.0/16
1.1.1.1
25
9.9.9.2:0
3 D 172.17.0.0/16
21
9.9.9.4:0
Видим, что LSR1 получил метку 25 от LDP-соседа LSR2 и метку 21 от LDPсоседа LSR4. Именно эти метки назначены на этих роутерах для нашего класса
FEC как входные (см. Табл. 14.3). Согласно Табл. 14.1 IP-адрессом следующего
перехода (NEXTHOP ) в сторону сети 172.17.0.0/16 будет адрес 1.1.1.1 роутера
LSR2. Поэтому метка 25 от хоста LSR2 объявляется активной (флаг A слева).
Для других LSR имеем
[admin@LSR2] > mpls remote-bindings print where dst-address =172.17.0.0/16
# DST-ADDRESS
NEXTHOP
LABEL
PEER
3 D 172.17.0.0/16
18
9.9.9.1:0
4 AD 172.17.0.0/16
2.2.2.2
35
9.9.9.3:0
5 D 172.17.0.0/16
21
9.9.9.4:0
[admin@LSR3] > mpls remote-bindings print where dst-address =172.17.0.0/16
# DST-ADDRESS
NEXTHOP
LABEL
PEER
0 D 172.17.0.0/16
25
9.9.9.2:0
1 AD 172.17.0.0/16
3.3.3.2
impl-null
9.9.9.6:0
2 D 172.17.0.0/16
29
9.9.9.5:0
[admin@LSR4] > mpls remote-bindings print where dst-address =172.17.0.0/16
# DST-ADDRESS
NEXTHOP
LABEL
PEER
0 D 172.17.0.0/16
18
9.9.9.1:0
1 AD 172.17.0.0/16
5.5.5.1
29
9.9.9.5:0
2 D 172.17.0.0/16
25
9.9.9.2:0
[admin@LSR5] > mpls remote-bindings print where dst-address =172.17.0.0/16
# DST-ADDRESS
NEXTHOP
LABEL
PEER
0 D 172.17.0.0/16
21
9.9.9.4:0
1 AD 172.17.0.0/16
6.6.6.2
impl-null
9.9.9.6:0
2 D 172.17.0.0/16
35
9.9.9.3:0
[admin@LSR6] > mpls remote-bindings print where dst-address =172.17.0.0/16
# DST-ADDRESS
NEXTHOP
LABEL
PEER
0 D 172.17.0.0/16
35
9.9.9.3:0
1 D 172.17.0.0/16
29
9.9.9.5:0
Сведём результат в таблицу 14.4. Метка выбирается активной (показана
жирной), если она пришла от NEXTHOP (показан в скобках).
Получаемые метки.
К Хосту
LSR1
LSR2
LSR3
LSR4
LSR5
LSR6
Таблица 14.4
От хоста
LSR1 LSR2
LSR3
25 (1.1.1.1)
18
35(2.2.2.2)
25
18
25
35
35
LSR4 LSR5
LSR6
21
21
29
impl-null(3.3.3.2)
29 (5.5.5.1)
21
impl-null(6.6.6.2)
29
180
grigoryev.victor@gmail.com http://vmg.pp.ua
Активная метка становится новой меткой пакета в сторону сети 172.17.0.0/16.
Адрес из которого пришла активная метка становится адресом перехода
(NEXTHOP).
Каждый LSR-маршрутизатор по полученным от других LSR меткам строит
базу пересылки по меткам LFIB (label forward information base). На каждом LSR
фрагмент LFIB для нашего FIB (пакеты в сторону сети 172.17.0.0/16) можно
посмотреть командой
mpls forwarding-table print where destination =172.17.0.0/16
Результат вывода этих команд сведём в таблицу 14.5.
Таблица пересылки по меткам
Таблица 14.5.
Хост
INOUTINTERFAC NEXTHOP (Хост)
LABEL
LABELS
E
LSR1
18
25
ether1
1.1.1.1 (LSR2)
LSR2
25
35
Ether2
2.2.2.2 (LSR3)
LSR3
35
impl-null
Ether2
3.3.3.2 (LSR6)
LSR4
21
29
Ether2
5.5.5.1 (LSR5)
LSR5
29
impl-null
Ether2
6.6.6.2 (LSR6)
Колонка IN-LABEL определяется в табл.14.3. Колонки OUT-LABEL и
NEXTHOP определяются по активным меткам, пришедшим от LDP-соседей
(табл.14.4). Колонка INTERFACE берётся из таблицы маршрутов Табл. 14.1.
Проверим смену меток, отправив ICMP-пакеты от адреса 172.16.0.2
(L) в сторону 172.17.0.2 (M)
[admin@L] > tool tracert 172.17.0.2
# ADDRESS
RT1 RT2 RT3 STATUS
1 172.16.0.1
10ms 1ms 1ms
2 1.1.1.1
3ms 2ms 2ms <MPLS:L=25,E=0>
3 2.2.2.2
3ms 2ms 2ms <MPLS:L=35,E=0>
4 3.3.3.2
2ms 2ms 6ms
5 172.17.0.2
8ms 3ms 3ms
Попадая на LSR1 (172.16.0.1) пакет получит метку 18 (табл. 14.3). В LSR1,
согласно табл. 14.5, он получит новую метку 25 и будет направлен на LSR2
(1.1.1.1). В LSR2, согласно табл. 14.5, он получит новую метку 35 и будет
направлен на LSR3 (2.2.2.2). В LSR3, согласно табл. 14.5, он будет направлен на
LSR6 (3.3.3.2). При этом ему не надо новой метки, так как сеть 172.17.0.0/16
присоединена к LSR6 непосредственно.
Физически IP-маршрутизация в Ethernet-сетях осуществляется путём
должной замены у IP-пакетов их Ethernet заголовков. Новые Ethernet заголовки
определяются с помощью протокола ARP. MPLS в этом процессе участия не
принимает.
Фильтрация меток
Не все привязки меток к IP-подсетям могут быть нам нужны. Для
выборочной привязки предусмотрена фильтрация меток, которые LSR-роутеры
могут выдавать или принимать.
Запретим обмениваться метками между роутерами LSR2 и LSR4 в сети на
рис. 14.2
181
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@LSR2]>mpls ldp advertise-filter add neighbor=9.9.9.4 advertise=no
[admin@LSR4]>mpls ldp advertise-filter add neighbor=9.9.9.2 advertise=no
и роутерами LSR3и LSR5
[admin@LSR3]>mpls ldp advertise-filter add neighbor=9.9.9.5 advertise=no
[admin@LSR5]>mpls ldp advertise-filter add neighbor=9.9.9.3 advertise=no
Пусть в сети на рис.14.2 нам надо обеспечить коммутацию с помощью меток
только для IP-пакетов в сторону сети 172.17.0.0/16. Разрешим маршрутизаторам
выдавать LDP-соседям информацию о метках, только для пакетов с префиксом
адреса приёмника 172.17.0.0/16.
mpls ldp advertise-filter add prefix= 172.17.0.0/16 advertise=yes
и запретим выдавать информацию об остальных метках
mpls ldp advertise-filter add prefix=0.0.0.0/0 advertise=no
На всех маршрутизаторах мягко перегрузим MPLS, убив LDP-соседей
mpls ldp neighbor remove [find]
Информация о метках, получаемая LSR существенно сократится. Например
для LSR2
[admin@LSR2] > mpls remote-bindings print
Flags: X - disabled, A - active, D - dynamic
#
DST-ADDRESS NEXTHOP
LABEL
PEER
0 D 172.17.0.0/16
52
9.9.9.1:0
1 AD 172.17.0.0/16
2.2.2.2
46
9.9.9.3:0
Видим, что LSR2 получает информацию о метках только для сети
172.17.0.0/16 и только от двух соседей LSR1 и LSR3.
RSVP TE
С помощью
протокола RSVP TE в MPLS-облаке устанавливается
однонаправленный TE-туннель. Этот тоннель определяет для пакетов путь LSP.
Протокол RSVP TE выполняет аналогичные функции с протоколом LDP —
обеспечение гарантированной доставки пакетов между граничными роутерами в
MPLS-облаке. Однако протокол RSVP TE вносит в процесс установки пути LSP
дополнительные возможности:
1. установка LSP с явным определением части пути прохождения пакетов;
2. путь LSP прокладывается только через интерфейсы, имеющие полосу
пропускания не меньше, чем заданная полоса пропускания туннеля.
Следует отметить, полоса
пропускания интерфейса задаётся
администратором в ручном режиме при настройке RSVP TE-туннеля и явно не
связана с физической полосой пропускания. Аналогично, полоса пропускания
туннеля устанавливается
администратором и не приводит к каким либо
ограничениям на трафик через тоннель.
RSVP TE-туннель имеет входящий и исходящий LSR-роутеры,
расположенные в MPLS-облаке. Эти роутеры являются граничными. Рассмотрим,
как протокол RSVP определяет роутеры, через которые будет устанавливаться путь
от входящего к исходящему роутеру туннеля. Этот путь может быть определён
несколькими способами.
182
grigoryev.victor@gmail.com http://vmg.pp.ua
1. В качестве пути берётся маршрут проложенный протоколами
маршрутизации, как от входящего роутера к исходящему так и обратно. Если
сетевые интерфейсы маршрутизаторов, через которые проходят маршруты не
имеют заданной полосы пропускания, то тоннель не может быть создан
2. Использование протокола CSPF (Constrained Shortest Path First —
ограниченный кратчайший путь в первую очередь). CSPF реализован в составе
протокола маршрутизации OSPF. OSPF для реализации CSPF распространяет по
сети информацию о пропускной способности интерфейсов. Далее OSPF строит
маршруты с учётом ограничений на полосу пропускания. Входящий роутер,
используя CSPF, вычисляет путь к исходящему роутеру с учётом ограничений на
полосу пропускания.
3. Явно указываются адреса интерфейсов роутеров, через которые будет
проходить тоннель. Адреса указываются в прямом и обратном направлении.
Указывается либо весь путь, либо только его часть. В последнем случае остальная
часть пути определяется протоколами маршрутизации или протоколом CSPF.
Тоннель не создаётся, если вдоль пути найдутся интерфейсы с недостаточной
пропускной способностью.
Создание туннеля инициируется входящим роутером. Он отсылает
исходящему роутеру сообщение Path, содержащее информацию о параметрах и
ограничениях на полосу пропускания устанавливаемого туннеля. Если роутер,
находящийся на пути прохождения сообщения Path, удовлетворяет ограничениям
на полосу пропускания, то он проталкивает сообщение Path следующему роутеру
по пути к исходящему роутеру. В итоге сообщение Path достигнет исходящего
роутера тоннеля. Исходящий роутер отсылает ответное сообщение Resv в
обратном направлении. Если роутер, находящийся на пути прохождения
сообщения Resv, удовлетворяет ограничениям на полосу пропускания, то он
проталкивает сообщение Resv следующему роутеру по пути к входящему роутеру.
В итоге сообщение Resv достигнет входящего роутера тоннеля. Туннель считается
установленным. В противном случае тоннель установится не может. Входящий и
исходящий роутеры туннеля периодически обмениваются сообщениями Path для
поддержания тоннеля в рабочем состоянии
Снова рассмотрим сеть на рис. 14.2. Уберём в ней поддержку протокола
LDP. Для этого на всех LSR-роутерах выполним команды.
mpls ldp set enabled=no transport-address=0.0.0.0 lsr-id=0.0.0.0
mpls ldp interface remove [find]
Для всех LSR-роутерах включим в настройках протокола OSPF поддержку
CSPF
routing ospf set mpls-te-area=backbone mpls-te-router-id=loopback
Для того, чтобы роутер мог участвовать в туннеле (либо как входящий, либо
как промежуточный, либо как исходящий) в нем надо настроить поддержку
протокола RSVP TE. Для этого надо указать, какие интерфейсы роутера будут
участвовоать в работе RSVP TE и их заявляемые пропускные способности
[admin@LSR1] > mpls traffic-eng interface add interface=ether1 bandwidth=100000
[admin@LSR1] > mpls traffic-eng interface add interface=ether2 bandwidth=100000
[admin@LSR2] > mpls traffic-eng interface add interface=ether1 bandwidth=100000
183
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@LSR2] > mpls traffic-eng interface add interface=ether2 bandwidth=100000
[admin@LSR2] > mpls traffic-eng interface add interface=ether3 bandwidth=100000
[admin@LSR3] > mpls traffic-eng interface add interface=ether1 bandwidth=100000
[admin@LSR3] > mpls traffic-eng interface add interface=ether2 bandwidth=100000
[admin@LSR3] > mpls traffic-eng interface add interface=ether3 bandwidth=100000
[admin@LSR4] > mpls traffic-eng interface add interface=ether1 bandwidth=100000
[admin@LSR4] > mpls traffic-eng interface add interface=ether2 bandwidth=100000
[admin@LSR4] > mpls traffic-eng interface add interface=ether3 bandwidth=100000
[admin@LSR5] > mpls traffic-eng interface add interface=ether1 bandwidth=100000
[admin@LSR5] > mpls traffic-eng interface add interface=ether2 bandwidth=100000
[admin@LSR5] > mpls traffic-eng interface add interface=ether3 bandwidth=100000
[admin@LSR6] > mpls traffic-eng interface add interface=ether1 bandwidth=100000
[admin@LSR6] > mpls traffic-eng interface add interface=ether2 bandwidth=100000
После этих настроек протокол OSPF роутеров станут распространять RSVPинформацию по сети
[admin@LSR1] > routing ospf lsa print
AREA
TYPE
ID
ORIGINATOR SEQUENCE-NU...
...
backbone
opaque-area 1.0.0.0
8.8.8.2
0x80000002
backbone
opaque-area 1.0.0.0
172.16.0.1
0x80000002
backbone
opaque-area 1.0.0.0
172.17.0.1
0x80000002
backbone
opaque-area 1.0.0.0
172.18.0.1
0x80000002
Начнём создавать туннель от LSR1 до LSR6. Путь dyn для будущего
туннеля определим динамически с помощью протокола CSPF
[admin@LSR1] > mpls traffic-eng tunnel-path add use-cspf=yes name=dyn
Создадим туннель от LSR1(9.9.9.1) до LSR6 (9.9.9.6) шириной в 1000 бит/сек
с динамическим путём dyn. Входящая сторона туннеля представлена в RouterOS в
виде сетевого интерфейса специального типа.
[admin@LSR1]>interface traffic-eng add from-address=9.9.9.1 to-address=9.9.9.6
bandwidth=1000 primary-path=dyn disabled=no record-route=yes
Опция record-route=yes позволит роутеру LSR1 получать информацию о
том, через какие роутеры пройдёт путь туннеля.
Осуществим мониторинг состояния туннеля
[admin@LSR1] >> interface traffic-eng monitor numbers=0
tunnel-id: 2
primary-path-state: established
primary-path: dyn
secondary-path-state: not-necessary
active-path: dyn
active-lspid: 1
active-label: 16
explicit-route: S:1.1.1.1/32,S:2.2.2.1/32,S:2.2.2.2/32,S:3.3.3.1/32,S:3.3.3.2/32
recorded-route: 2.2.2.1[18],3.3.3.1[18],3.3.3.2[0]
reserved-bandwidth: 1000bps
184
grigoryev.victor@gmail.com http://vmg.pp.ua
reserved-bandwidth: 1000bps
Видим что путь туннеля прошел через роутеры LSR2 (2.2.2.1) и LSR3 (3.3.3.1) и
ему назначена метка 16.
Можно видеть, как резервируется часть полосы интерфейсов под тонель,
например
[admin@LSR2] > mpls traffic-eng interface print
Flags: X - disabled, I - invalid
# INTERFACE
BANDWIDTH TE-METRIC REMAININGBW
0 ether1
100kbps
1 100.0kbps
1 ether2
100kbps
1 99.0kbps
2 ether3
100kbps
1 100.0kbps
Чтобы начать пользоваться созданным тоннелем, надо создать тоннель в
обратном направлении от LSR6 к LSR1. Путь dyn дл туннеля определим
динамически с помощью протокола CSPF
[admin@LSR6] > mpls traffic-eng tunnel-path add use-cspf=yes name=dyn
Создадим туннель от LSR6(9.9.9.6) до LSR1(9.9.9.1) шириной в 1000 бит/сек
с динамическим путём dyn
[admin@LSR1]>interface traffic-eng add from-address=9.9.9.6 to-address=9.9.9.1
bandwidth=1000 primary-path=dyn disabled=no record-route=yes
Опция record-route=yes позволит роутеру LSR1 получать информацию о
том, через какие роутеры пройдёт путь туннеля.
Осуществим мониторинг состояния туннеля[admin@LSR6] > interface trafficeng monitor numbers=0
tunnel-id: 2
primary-path-state: established
primary-path: dyn
secondary-path-state: not-necessary
active-path: dyn
active-lspid: 1
active-label: 17
explicit-route: S:3.3.3.1/32,S:2.2.2.2/32,S:2.2.2.1/32,S:1.1.1.1/32,S:1.1.1.2/32
recorded-route: 2.2.2.2[19],1.1.1.1[19],1.1.1.2[0]
reserved-bandwidth:
1000bps
Видим что путь туннеля прошел через роутеры LSR3 (2.2.2.2) и LSR2
(1.1.1.1) и ему назначена метка 17.
Можно видеть, как резервируется часть полосы интерфейсов под тоннель,
например
[admin@LSR2] > mpls traffic-eng interface print
Flags: X - disabled, I - invalid
# INTERFACE
BANDWIDTH TE-METRIC REMAININGBW
0 ether1
100kbps
1 99.0kbps
1 ether2
100kbps
1 99.0kbps
2 ether3
100kbps
1 100.0kbps
185
grigoryev.victor@gmail.com http://vmg.pp.ua
Посмотрим LFIB для класса FEC, определяемого адресами 9.9.9.1 и 9.9.9.6
концов тоннеля. Видим как переключение меток обеспечивает организацию
тоннеля
[admin@LSR2] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL OUT-LABELS DESTINATION INTERFACE NEXTHOP
0 expl-null
1 T 16
16
9.9.9.1:1->9.9.9.6:1
ether2
2.2.2.2
2 T 17
expl-null
9.9.9.6:1->9.9.9.1:1
ether1
1.1.1.2
[admin@LSR3] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL OUT-LABELS DESTINATION INTERFACE NEXTHOP
0 expl-null
1 T 16
expl-null
9.9.9.1:1->9.9.9.6:1
ether2
3.3.3.2
2 T 17
17
9.9.9.6:1->9.9.9.1:1
ether1
2.2.2.1
Назначим адреса на оба конца туннеля
[admin@LSR1] > ip address add address=10.11.1.1/24 interface=traffic-eng1
[admin@LSR6] > ip address add address=10.11.1.2/24 interface=traffic-eng
Проверим связь
[admin@LSR6] > ping 10.11.1.1
HOST
SIZE TTL TIME STATUS
10.1.1.1
56 62 1ms
Требования для сдачи работы
Предъявить работающую MPLS-сеть, изображённую на рис. 14.2.
Организовать распределение меток внутри облака MPLS с помощью протоколов
LDP и RSVP
186
grigoryev.victor@gmail.com http://vmg.pp.ua
15. MPLS VPN уровня 2 и 3
1. Организация MPLS VPN уровня 2 с помощью VPLS
1.1. Настройка LDP VPLS
1.1.1. LDP VPLS с организацией LSP с помощью LDP
1.1.2. LDP VPLS с организацией LSP с помощью RSVP
1.2. Настройка BGP VPLS
1.2.1. Конфигурирование сессий BGP. Отражатель маршрутов
1.2.2. BGP VPLS с организацией LSP с помощью RSVP
1.2.3. BGP VPLS с организацией LSP с помощью LDP
2. MPLS VPN 3-го уровня
2.1 MPLS VPN 3-го уровня c организацией LSP с помощью LDP
2.2 MPLS VPN 3-го уровня c организацией LSP с помощью RSVP
187
189
189
193
196
197
198
202
204
206
210
Протокол MPLS позволяет сетевому провайдеру оказывать своим заказчикам
услуги виртуальных частных сетей VPN. Рассмотрим (рис.15.1) провайдера
сетевых услуг, который соединяет 3 удалённых сайта А1, А2 и А3 заказчика А и 3
удалённых сайта В1, В2 и В3 заказчика В, используя свою сеть MPLS. Принято
выделять машрутизаторы провайдера, пограничные с сайтами заказчиков и
обозначать их с использованием символов PE — (provider edge -граница
провайдера). На рис.15.1 мы видим три граничных машрутизатора PE1, PE2 и
PE3.
Рис.15.1. Сеть провайдера сетевых услуг.
VPN организовываются на втором или третьем сетевом уровне. Рассмотрим
оргагнизации VPN уровня 2 и 3 с помощью протоколов VPLS и VRF,
соответственно.
1. Организация MPLS VPN уровня 2 с помощью VPLS
VPLS -это служба виртуальных частных локальных сетей (Virtual Private
LAN Service). Служит для обеспечения широковещательной функциональности
Ethernet-сетей поверх сетей
MPLS. Позволяет объединить территориально
187
grigoryev.victor@gmail.com http://vmg.pp.ua
удалённые локальные сети в один домен широковещания через виртуальные
псевдокабели Ethernet. Такое объединение может быть сделано и с помощью EoIPтуннелей, изученных в разделе 5. VPLS, в отличие от EoIP
• не требует инкапсуляции фреймов Ethernet в IP-пакеты и избегает
накладных расходов, связанных с обработкой IP –заголовков
• обладает большей гибкостью и функциональностью и поддерживается
большим числом производителей сетевого оборудования
• является более эффективным решением для создания VPN уровня 2.
В качестве виртуального псевдокабеля Ethernet выступает VPLS-туннель.
Для организации туннеля используются две метки: туннельная и транспортная.
Переговоры об организации VPLS-туннеля осуществляются либо с использованием
протокола LDP либо протокола BGP.
Рассмотрим настройку VPLS VPN на примере топологии на рис.15.1.
Заказчики A и B требуют прозрачное Ethernet-соединение между сайтами и хотят
сами назначать IP-адреса. Из рисунка рис.15.2 видим, что заказчики выбрали
одинаковые адреса 172.16.1.1 — 172.16.1.3 для своих сайтов А1, А2, А3 и В1, В2,
В3
.
Рис.15.2. MPLS VPLS VPN
Соберите топологию в GNS3. Назначьте адреса согласно рис.15.2. В каждом
маршрутизаторе провайдера создайте мост с именем lobridge и назначьте на него
188
grigoryev.victor@gmail.com http://vmg.pp.ua
адрес 9.9.9.*/32, согласно рис.15.2.
На граничных маршрутизаторах PE1, PE2 и PE3, создайте по два моста A и B.
Поместите в эти мосты Ethernet-интерфейс, идущий в сторону заказчика.
Например, на PE1
[admin@PE1]>interface bridge add name=А
[admin@PE1]>interface bridge port add bridge=А interface=ether3
[admin@PE1]>interface bridge add name=B
[admin@PE1]>interface bridge port add bridge=B interface=ether4
Настроим IP-маршрутизацию. Используем протокол маршрутизации OSPF,
анонсируя на каждом маршрутизаторе провайдера все присоединённые сети.
Например, на PE1 OSPF может быть настроен с помощью следующих команд:
[admin@PE1] > routing ospf network add area=backbone network=9.9.9.1/32
[admin@PE1] > routing ospf network add area=backbone network=1.1.1.0/24
[admin@PE1] > routing ospf network add area=backbone network=4.4.4.0/24
Внутри облака MPLS пути коммутации пакетов по метке (LSP -label
switching path) организовываются либо с помощью протокола LDP либо с
помощью протокола RSVP. Имеем четыре способа организации VPLS VPN:
№ п/п
Организация VPLS-туннеля
Организация LSP
1
2
LDP
LDP
RSVP
3
4
LDP
BGP
RSVP
1.1. Настройка LDP VPLS
Рассмотрим организацию VPLS-туннеля с помощью протокола LDP. LSP
организовываются либо с помощью протокола LDP либо с помощью протокола
RSVP.
1.1.1. LDP VPLS с организацией LSP с помощью LDP
Для распределения меток и организации путей коммутации пакетов по метке
активируем на каждом LSR-маршрутизаторе протокол LDP. Транспортный адрес
установим как адрес интерфейса Loopback с именем lobridge. Это заставляет
маршрутизатор рекламировать соседям по LDP этот адрес как транспортный адрес.
Объявим интерфейсы, смотрящие внутрь MPLS–сети, как интерфейсы,
участвующие в обмене меток. Например для PE1 это делается командами
[admin@PE1 ]>mpls ldp set enabled=yes transport-address=9.9.9.1 lsr-id=9.9.9.1
[admin@PE1 ]>mpls ldp interface add interface=ether1
[admin@PE1 ]>mpls ldp interface add interface=ether2
Для P4 это делается командами
[admin@P4]>mpls ldp set enabled=yes transport-address=9.9.9.5 lsr-id=9.9.9.5
[admin@P4]>mpls ldp interface add interface=ether1
[admin@P4]>mpls ldp interface add interface=ether2
189
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@P4]>mpls ldp interface add interface=ether3
[admin@P4]>mpls ldp interface add interface=ether4
Остальные маршрутизаторы настраиваются подобным образом. LDP
активируется на интерфейсах идущих в сторону MPLS-облака и не активируется на
интерфейсах идущих в сторону маршрутизаторов заказчиков.
Для достижения прозрачного Ethernet-соединения между сайтами заказчика
следует организовать следующие VPLS-туннели, образующие полносвязную
топологию каждого с каждым: PE1 – PE2, PE1 – PE3 и PE2 – PE3.
Каждый туннель требует создания VPLS-интерфейсов на обоих своих концах.
VPLS-туннели настраиваются в меню /interface vpls.
Параметр vpls-id
идентифицирует туннель и должен быть уникальным для каждого туннеля между
двумя пирами. Рекомендуется назначить MAC-адрес. Необходимые настройки для
заказчика A (vpls-id=0:10) .
[admin@PE1]>interface vpls add name=A1toA2 remote-peer=9.9.9.6 macaddress=00:00:00:00:а1:a2 vpls-id=0:10 disabled=no
[admin@PE1]>interface vpls add name=A1toA3 remote-peer=9.9.9.7 macaddress=00:00:00:00:а1:a3 vpls-id=0:10 disabled=no
[admin@PE2]>interface vpls add name=A2toA1 remote-peer=9.9.9.1 macaddress=00:00:00:00:а2:a1 vpls-id=0:10 disabled=no
[admin@PE2]>interface vpls add name=A2toA3 remote-peer=9.9.9.7 macaddress=00:00:00:00:а2:a3 vpls-id=0:10 disabled=no
[admin@PE3]>interface vpls add name=A3toA1 remote-peer=9.9.9.1 macaddress=00:00:00:00:а3:a1 vpls-id=0:10 disabled=no
[admin@PE3]>interface vpls add name=A3toA2 remote-peer=9.9.9.6 macaddress=00:00:00:00:а3:a2 vpls-id=0:10 disabled=no
Необходимые настройки для заказчика B (vpls-id=0:20) .
[admin@PE1]>interface vpls add name=B1toB2 remote-peer=9.9.9.6 macaddress=00:00:00:00:b1:b2 vpls-id=0:10 disabled=no
[admin@PE1]>interface vpls add name=B1toB3 remote-peer=9.9.9.7 macaddress=00:00:00:00:b1:b3 vpls-id=0:10 disabled=no
[admin@PE2]>interface vpls add name=B2toB1 remote-peer=9.9.9.1 macaddress=00:00:00:00:а2:B1 vpls-id=0:10 disabled=no
[admin@PE2]>interface vpls add name=B2toB3 remote-peer=9.9.9.7 macaddress=00:00:00:00:а2:B3 vpls-id=0:10 disabled=no
[admin@PE3]>interface vpls add name=B3toB1 remote-peer=9.9.9.1 macaddress=00:00:00:00:b3:b1 vpls-id=0:10 disabled=no
[admin@PE3]>interface vpls add name=B3toB2 remote-peer=9.9.9.6 macaddress=00:00:00:00:b3:b2 vpls-id=0:10 disabled=no
Настройка VPLS-туннеля приводит к созданию динамического LDP-соседа и
установки целевой LDP-сессии. Целевая LDP-сессия это сессия, устанавливаемая
между маршрутизаторами, не являющимися прямыми соседями. Например
[admin@PE1] > mpls ldp neighbor pr
Flags: X - disabled, D - dynamic, O - operational, T - sending-targeted-hello, V - vpls
# TRANSPORT LOCAL-TRANSPORT PEER
SEND-TARGETED ADDRESSES
0 DOTV 9.9.9.6
9.9.9.1
9.9.9.6:0
yes
3.3.3.2
190
grigoryev.victor@gmail.com http://vmg.pp.ua
6.6.6.2
9.9.9.6
10.0.6.1
1 DOTV 9.9.9.7
9.9.9.1
9.9.9.7:0
9.9.9.7
10.0.7.1
10.10.10.2
VPLS-туннель
предоставляет
виртуальную
Ethernet-связь
между
маршрутизаторами. Для прозрачного соединения физических Ethernet-сегментов
они должны быть объединены в мост с VPLS-туннелем.
В нашем примере Ethernet-сегменты имеют полносвязную топологию. Если
использовать мосты без протокола (R)STP, то могут возникнуть петли трафика.
Например, если от PE1 исходит широковещательный пакет, то он достигнет через
VPLS-туннели и PE2 и PE3. PE3, получив такой пакет, отошлёт его PE2. PE2
получит две копии одного пакета. Петля. Избежать петель можно так: разрешить
(R)STP , использовать фаервол, использовать свойство horizon. Последнее решение
самое простое и эффективное.
Базовая идея расщепленного горизонта (split horizon) – не пересылать трафик,
возникающий на порту, на некоторое множество портов. Для VPLS это значит не
пересылать пакеты, появившиеся на одном туннеле в другой туннель, так как для
этого есть прямая связь.
Пакет, принятый на порту со значением horizon=X не пробрасывается на
порты с тем же значением horizon=X. Так в случае полносвязной топологии VPLSтуннелей, каждый маршрутизатор должен иметь одинаковое значение свойства
horizon для VPLS-туннелей, помещённых в один мост. Свойство horizon не
конфигурируется на физическом Ethernet-интерфейсе. Свойство horizon имеет
локальное значение и не передаётся по сети. Поэтому везде можно установить для
него одинаковые значения.
Для организации виртуальной сети заказчика А мосты на PE1 организовать
можно так
[admin@PE1]>interface bridge port add bridge=A interface=A1toA2 horizon=1
[admin@PE1]>interface bridge port add bridge=A interface=A1toA3 horizon=1
Для организации виртуальной сети заказчика B мосты на PE1 организовать
можно так
[admin@PE1]>interface bridge port add bridge=B interface=B1toB2 horizon=1
[admin@PE1]>interface bridge port add bridge=B interface=B1toB3 horizon=1
Аналогичным образом произведите конфигурацию на PE2 и PE3.
Убедимся, что мы получили VPN уровня 2. Для заказчика А
[admin@A1] > ip neighbor pr
# INTERFACE ADDRESS MAC-ADDRESS IDENTITY VERSION BOARD
0 ether1
00:00:00:00:A1:A3
PE1
5.18
x86
1 ether1
00:AA:00:7C:68:02
PE2
5.18
x86
2 ether1
00:AA:00:D5:EC:02
PE3
5.18
x86
3 ether1 172.16.1.3 00:AA:00:C4:D5:00
A3
5.18
x86
4 ether1 172.16.1.2 00:AA:00:2B:9C:00
A2
5.18
x86
191
yes
grigoryev.victor@gmail.com http://vmg.pp.ua
A1 увидел A2 и A3 на втором уровне. В этом можно убедиться, используя
утилиту ping на втором уровне.
[admin@A1] >ping 00:AA:00:2B:9C:00
[admin@A1] >ping 00:AA:00:C4:D5:00
Здесь используются MAC-адреса интерфейса ether1 компьютеров A2 и A3.
[admin@A2] > ip neighbor pr
# INTERFACE ADDRESS MAC-ADDRESS IDENTITY VERSION BOARD
0 ether1
00:AA:00:7C:68:02
PE2
5.18
x86
1 ether1
00:AA:00:D5:EC:02
PE3
5.18
x86
2 ether1 172.16.1.1 00:AA:00:F5:7F:00
A1
5.18
x86
3 ether1 172.16.1.3 00:AA:00:C4:D5:00
A3
5.18
x86
4 ether1
00:00:00:00:A1:A3
PE1
5.18
x86
A2 увидел A1 и A3 на втором уровне. В этом можно убедиться, используя
утилиту ping на втором уровне.
[admin@A3] > ip neighbor print
# INTERFACE ADDRESS MAC-ADDRESS IDENTITY VERSION BOARD
0 ether1 172.16.1.1
00:AA:00:F5:7F:00
A1
5.18
x86
1 ether1
00:00:00:00:A1:A3
PE1
5.18
x86
2 ether1
00:AA:00:7C:68:02
PE2
5.18
x86
3 ether1 172.16.1.2 00:AA:00:2B:9C:00
A2
5.18
x86
4 ether1
00:AA:00:D5:EC:02
PE3
5.18
x86
A3 увидел A1 и A2 на втором уровне.
Аналогичные результаты мы получим и для сайтов заказчика B.
Изучим, как MPLS-метки помогают организовать VPN. Пустим обычные
пинги c сайта A1 в сторону сайта A2
[admin@ A1]> ping 172.16.1.2
С помощью анализатора пакетов Wireshark изучим структуру ICMP-пакетов
на интерфейсах e0 маршрутизатора PE1, e1 маршрутизатора P1 и e1
маршрутизатора P2 . (Рис. 15.3, 15. 4 и 15.5).
Объясним полученное. На всех 3-х рисунках в части Ethernet II, видим
инкапсулированный Ethernet-пакет от MAC-адреса 00:AA:00:F5:7F:00 интерфейса
ether1 сайта A1 до MAC-адреса 00:AA:00:2B:9C:00 интерфейса ether1 сайта A2.
Можно увидеть информацию о состоянии VPLS-интерфейсов
[admin@PE1] > interface vpls monitor numbers=A1toA2
remote-label: 26
local-label: 36
remote-status:
transport: 9.9.9.6/32
transport-nexthop: 1.1.1.1
imposed-labels: 18,26
[admin@PE2] > interface vpls monitor numbers=A2toA1
remote-label: 36
local-label: 26
remote-status:
transport-nexthop: 3.3.3.1
192
grigoryev.victor@gmail.com http://vmg.pp.ua
imposed-labels: 19,36
Рис.15.3. Структура ICMP-пакета на интерфейсе e0 маршрутизатора PE1.
Рис.15.4. Структура ICMP-пакета на интерфесе e1 маршрутизатора P1
Рис.15.5. Структура ICMP-пакета на интерфесе e1 маршрутизатора P2
Видим, что VPLS на PE1 назначил метку 36 для туннеля между A1 и A2.
Удалённой стороне назначена метка 26. Эту метку можно увидеть на всех 3-х
рисунках. Для транспорта Ehernet-пакетов от A1 к A2 используется метка 18. Эту
метку можно увидеть на рис.15.3 и 15.4. Таблица пробросов MPLS на PE1
показывает, что пакеты с меткой 18 будут направлены на адрес 1.1.1.1
маршрутизатора P1.
[admin@PE1] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL
OUT-LABELS DESTINATION
INTERFACE NEXTHOP
1 L 30
18
9.9.9.6/32
ether1
1.1.1.1
Таблица пробросов MPLS на P1 показывает, что пакеты с входящей меткой 18
получат такую же выходящую метку и будут направлены на адрес 2.2.2.2
маршрутизатора P2. Эту метку можно увидеть на рис.15.4.
[admin@P1] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL
OUT-LABELS DESTINATION
INTERFACE NEXTHOP
3 L 18
18
9.9.9.6/32
ether2
2.2.2.2
1.1.2. LDP VPLS с организацией LSP с помощью RSVP
Рассмотрим сеть на рис.15.2. Уберём в ней поддержку протокола LDP для
маршрутизаторах P1, P2, P3 и P4 не являющихся граничными. Для этого на этих
маршрутизаторах выполним команды.
mpls ldp set enabled=no transport-address=0.0.0.0 lsr-id=0.0.0.0
193
grigoryev.victor@gmail.com http://vmg.pp.ua
mpls ldp interface remove [find]
Видим, что VPLS-интерфейсы перешли в нерабочее состояние.
Поддержка протокола LDP на граничных маршрутизаторах необходима для
организации VPLS-туннеля.
Для всех LSR-роутерах включим в настройках протокола OSPF поддержку
CSPF
routing ospf instance set 0 mpls-te-area=backbone mpls-te-router-id=lobridge
Укажем, что все интерфейсы маршрутизаторов провайдера, не идущие в
сторону клиентов, будут участвовать в работе RSVP TE и заявим пропускные
способности. Например, интерфейс ether1 граничного маршрутизатора PE1 идёт в
сторону MPLS-облака
[admin@PE1]>mpls traffic-eng inter add interface=ether1 bandwidth=100000
На граничных маршрутизаторах для будущих RSVP TE - туннелей
определим динамически путь dyn с помощью протокола CSPF
mpls traffic-eng tunnel-path add use-cspf=yes name=dyn
Создадим RSVP TE-туннели, образуя полносвязную топологию для
граничных маршрутизаторов
[admin@PE1]>interface
traffic-eng
add
from-address=9.9.9.1
toaddress=9.9.9.6 bandwidth=100000 primary-path=dyn disabled=no recordroute=yes name = 1to2
[admin@PE1]>interface
traffic-eng
add
from-address=9.9.9.1
toaddress=9.9.9.7 bandwidth=100000 primary-path=dyn disabled=no recordroute=yes name = 1to3
[admin@PE2]>interface
traffic-eng
add
from-address=9.9.9.6
toaddress=9.9.9.1 bandwidth=100000 primary-path=dyn disabled=no recordroute=yes name = 2to1
[admin@PE2]>interface
traffic-eng
add
from-address=9.9.9.6
toaddress=9.9.9.7 bandwidth=100000 primary-path=dyn disabled=no recordroute=yes name = 2to3
[admin@PE3]>interface
traffic-eng
add
from-address=9.9.9.7
toaddress=9.9.9.1 bandwidth=100000 primary-path=dyn disabled=no recordroute=yes name = 3to1
[admin@PE3]>interface
traffic-eng
add
from-address=9.9.9.7
toaddress=9.9.9.6 bandwidth=100000 primary-path=dyn disabled=no recordroute=yes name = 3to2
Ждём, пока поднимутся RSVP TE-интерфейсы. Видим, что VPLSинтерфейсы также перешли в рабочее состояние. Убеждаемся, как и ранее, что
наша VPN уровня 2 по прежнему функционирует.
Изучим, как MPLS-метки помогают организовать VPN. Пустим обычные
пинги c сайта A1 в сторону сайта A2
[admin@ A1]> ping 172.16.1.2
С помощью анализатора пакетов Wireshark изучим структуру ICMP-пакетов
на интерфейсах e0 маршрутизатора PE1, e1 маршрутизатора P1 и e1
194
grigoryev.victor@gmail.com http://vmg.pp.ua
маршрутизатора P2 . (Рис 15.6, 15.7 и 15.8)
Объясним полученное. На всех 3-х рисунках в части Ethernet II, видим
инкапсулированный Ethernet-пакет от MAC-адреса 00:AA:00:4E:8E:00 интерфейса
ether1 сайта A1 до MAC-адреса 00:AA:00:7B:D2:00 интерфейса ether1 сайта A2.
MAC-адреса отличаются от предыдущего случая потому, что GNS3 их назначает
динамически при каждом запуске топологии.
Рис.15.6. Структура ICMP-пакета на интерфейсе e0 маршрутизатора PE1.
Рис.15.7. Структура ICMP-пакета на интерфейсе e1 маршрутизатора P1
Рис.15.8. Структура ICMP-пакета на интерфейсе e1 маршрутизатора P2
Можно увидеть информацию о состоянии VPLS-интерфейса
[admin@PE1] > interface vpls monitor numbers=A1toA2
remote-label: 43
local-label: 43
remote-status:
transport: 1to2
transport-nexthop: 1.1.1.1
imposed-labels: 16,43
Видим, что VPLS на PE1 назначил метку 43 для тунеля между A1 и A2.
Удалённой стороне назначена метка 43. Эту метку можно увидеть на всех 3-х
рисунках. Для транспорта Ethernet-пакетов от A1 к A2 используется RSVP TEинтерфейс 1to2 и метка 16. Эту метку можно увидеть на рис.15.6.
Можно увидеть информацию о состоянии RSVP TE-интерфейса
195
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@PE1] > interface traffic-eng monitor numbers=1to2
tunnel-id: 1
primary-path-state: established
primary-path: dyn
secondary-path-state: not-necessary
active-path: dyn
active-lspid: 1
active-label: 16
explicit-route: S:1.1.1.1/32,S:2.2.2.1/32,S:2.2.2.2/32,S:3.3.3.1/32,
S:3.3.3.2/32
recorded-route: 2.2.2.1[16],3.3.3.1[16],3.3.3.2[0]
reserved-bandwidth: 10.0kbps
Таблица пробросов MPLS на P1 показывает, что пакеты с входящей меткой 16
получат такую же выходящую метку и будут направлены на адрес 2.2.2.2
маршрутизатора P2. Эту метку можно увидеть на рис.15.7.
[admin@P1] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL OUT-LABELS DESTINATION
INTERFACE NEXTHOP
0
expl-null
1 T 16
16
9.9.9.1:1->9.9.9.6:1
ether2
2.2.2.2
2 T 17
expl-null 9.9.9.6:1->9.9.9.1:2
ether1
1.1.1.2
1.2. Настройка BGP VPLS
Рассмотрим организацию
VPLS-туннеля с помощью протокола BGP.
Благодаря своей статической природе, VPLS-туннели, основанные на LDP имеют
проблемы масштабируемости, которые возрастают при увеличении числа сайтов,
подключённых по VPLS. Одной из проблем является требование сохранения
полносвязной топологии LDP-туннелей между сайтами, формирующими VPLS. В
случае если число узлов в VPLS высока, добавление нового сайта к существующей
VPLS-сети может стать обременительным для администратора сети. Добавление
нового сайта потребует создания необходимого количества VPLS-туннелей на
маршрутизаторе, к которому присоединён новый сайт, что потребует настройки
маршрутизаторов на других концах туннелей.
В общем,VPLS, основанные на BGP, служат двум целям:
• автоматического обнаружения: нет необходимости настраивать VPLS-связь
каждого нового граничного маршрутизатора со всеми удаленных конечными
точками туннелей VPLS;
• сигнализации: метки, используемые для туннелей VPLS на удаленных
конечных точках, распространяются в одном и том же обновлении BGP.
Это значит, что нет необходимости для целевых сессий LDP между
конечными точками туннеля, как в случае VPLS на основе LDP.
Правильная настройка VPLS, основанных на BGP, позволяет избежать
конфигурации маршрутизаторов, которые не подключены к новому сайту.
Для организации VPLS BGP маршрутизаторы обмениваются сообщениями
NLRI (Network Layer Reachability Information), содержащими некую информацию о
196
grigoryev.victor@gmail.com http://vmg.pp.ua
VPLS.
BGP VPLS это лишь метод обмена метками для туннелей VPLS, а не метод
обмена трафиком между конечными точками туннелей VPLS. Поэтому следует
обеспечить распространение фреймов MPLS между конечными точками туннелей
VPLS. Фреймы MPLS распространяются по путям LSP. LSP организовываются
либо с помощью протокола LDP либо с помощью протокола RSVP.
1.2.1. Конфигурирование сессий BGP. Отражатель маршрутов
Для обеспечения распространения сообщений VPLS NLRI по BGP должна
быть использована многопротокольная возможность BGP. Это осуществляется
установкой в BGP-пире для свойства address-families значения l2vpn.
Для организации BGP VPLS необходимо обеспечить доставку
многопротокольной NLRI между VPLS-маршрутизаторами. Это можно сделать
либо путём установки BGP-сессий между всеми парами VPLS-маршрутизаторов,
либо использованием отражателя маршрутов. В первом случае преимущество BGP
VPLS над LDP VPLS сомнительно: при добавлении нового сайта в VPLS
необходимо настроить BGP-пиры на всех маршрутизаторах, формирующих VPLS.
При использовании отражателя маршрутов добавление нового сайта к VPLS
становится более простым - маршрутизатор, к которому присоединён новый сайт,
должен только установить BGP сессию с отражателем маршрутов. На остальных
маршрутизаторах (кроме отражателя маршрутов) настроек не требуется. Сам
маршрутизатор-отражатель маршрутов может также участвовать в формировании
VPLS.
В простейшем смысле отражатель маршрутов передаёт полученный BGPмаршрут без изменения атрибута NextHop для маршрута. Это свойство позволяет
избежать BGP-соединений типа все со всеми. Для того чтобы маршрутизатор был
отражателем маршрутов для прохождения сообщений VPLS NLRI он не обязан
участвовать в VPLS и даже может не поддерживать MPLS.
Есть несколько замечаний о конфигурации пиров BGP:
6. Для обмена сообщениями VPLS NLRI нет нужды распространять IP или
Ipv6 маршруты, достаточно определить address-families=l2vpn ;
7. Для адресации пиров используются адреса мостов, то есть интерфейса
lobridge (локальный адрес определяется установкой update-source). BGP пир,
начиная передавать сообщение VPLS NLRI, назначает свой локальный адрес как
BGP NextHop. Принимающий VPLS-маршрутизатор использует полученный адрес
BGP NextHop, как адрес конечной точки туннеля.
Сделаем маршрутизатор P1 отражателем маршрутов. Экземпляр BGP для
отражателя маршрутов должен иметь установку client-to-client-reflection=yes,
которая является установкой по умолчанию.
Для обеспечения должного распространения сообщений VPLS NLRI BGPпиры в сторону маршрутизаторов PE1, PE2 и PE3 должны быть обязательно
настроены с установкой route-reflect=yes
[admin@P1]>routing bgp peer add remote-address=9.9.9.1 remote-as=65530 routereflect=yes address-families=l2vpn update-source=lobridge
[admin@P1]>routing bgp peer add remote-address=9.9.9.6 remote-as=65530 route197
grigoryev.victor@gmail.com http://vmg.pp.ua
reflect=yes
address-families=l2vpn update-source=lobridge
[admin@P1]>routing bgp peer add remote-address=9.9.9.7 remote-as=65530 routereflect=yes
address-families=l2vpn update-source=lobridge
В настройках BGP-пиров в PE1, PE2 и PE3 в сторону отражателя P1 (9.9.9.2)
оставляем для route-reflect значение по умолчанию no.
routing bgp peer add remote-address=9.9.9.2 remote-as=65530
addressfamilies=l2vpn update-source=lobridge
Должно установиться три BGP-соединения. Об этом можно убедиться,
просматривая время uptime существования соединения в выводе команды /routing
bgp peer print status.
Если надо добавить новый сайт в VPLS-сеть, присоединяя его к
маршрутизатору P2, необходимо лишь настроить BGP-пир на отражателе P1 в
сторону P2 и BGP пир на P2 в сторону отражателя P1. Причем на P1 с установкой
route-reflect=yes.
1.2.2. BGP VPLS с организацией LSP с помощью RSVP
Подготовим топологию для дальнейшей работы. Вначале уберём VPLSинтерфейсы из мостов, а затем уберём и сами VPLS-интерфейсы. Помним, что на
данный момент LSP организованы с помощью протокола RSVP.
VPLS-туннели создаются динамически при получении с помощью BGPсигнализации правильного сообщения BGP NLRI. Следовательно, не надо
создавать VPLS-интерфейсы.
Для прозрачной доставки Ethernet-сегментов сквозь VPLS-сеть должны быть
настроены мосты. Мосты мы уже создали (для LDP VPLS). Оставим в них только
физические Ethernet-интерфейсы.
Активация VPLS на основе BGP-сигнализации заставляет маршрутизатор
рассылать информацию VPLS BGP NLRI, которая указывает, что он принадлежит
некоторой VPLS. Получив такую информацию, другие члены той же VPLS будут
знать, как установить VPLS-туннель с этим маршрутизатором.
Для настройки двух VPLS для заказчиков A и B на граничных
маршрутизаторах надо выполнить команды для активации VPLS на основе BGPсигнализации:
[admin@PE1]>interface vpls bgp-vpls add bridge=A bridge-horizon=1 routedistinguisher=9.9.9.1:1
site-id=1
export-route-targets=1:1
import-routetargets=6:1,7:1
[admin@PE1]>interface vpls bgp-vpls add bridge=B bridge-horizon=1 routedistinguisher=9.9.9.1:2
site-id=1
export-route-targets=1:2
import-routetargets=6:2,7:2
[admin@PE2]>interface vpls bgp-vpls add bridge=A bridge-horizon=1 routedistinguisher=9.9.9.6:1
site-id=6
export-route-targets=6:1
import-routetargets=1:1,7:1
[admin@PE2]>interface vpls bgp-vpls add bridge=B bridge-horizon=1 routedistinguisher=9.9.9.6:2
site-id=6
export-route-targets=6:2
import-route198
grigoryev.victor@gmail.com http://vmg.pp.ua
targets=1:2,7:2
[admin@PE3]>interface vpls bgp-vpls add bridge=A bridge-horizon=1 routedistinguisher=9.9.9.7:1
site-id=7
export-route-targets=7:1
import-routetargets=1:1,6:1
[admin@PE3]>interface vpls bgp-vpls add bridge=B bridge-horizon=1 routedistinguisher=9.9.9.7:2
site-id=7
export-route-targets=7:2
import-routetargets=1:2,6:2
Здесь
site-id – должно быть уникально для каждого роутера в пределах конкретной
VPLS. Для повышения эффективности следует брать эти значения из узкого
диапазона целых чисел.
Bridge – определяет мост, к которому добавятся динамически создаваемые
VPLS-туннели.
Bridge-horizon – служит для предотвращения петлей (см. выше).
route-distinguisher определяет значение, прикрепляемое к VPLS NLRI;
получающие маршрутизаторы используют это значение для образования туннеля.
Чтобы принимающие роутеры различали информацию от различных VPLS, это
значение должно быть различно для разных VPLS на одном устройстве. Routedistinguisher не используется получающим маршрутизатором для определения
принадлежности передающего роутера конкретной VPLS. Для этого используется
route-targets.
export-route-targets – это своего рода метка (синоним) для routedistinguisher.
import-route-targets – это список из внешних
export-route-targets,
служащий для определения совокупности роутеров, образующих конкретную
VPLS.
route-distinguisher, export-route-targets и import-route-targets имеют вид
A:B, где A – либо IP-адрес (любой), либо целое число (иногда номер автономной
системы). B - целое число. В назначении этих параметров имеет место некий
произвол. В принципе route-distinguisher и export-route-targets могут быть любой
(уникальной для роутера) парой целях чисел или парой адрес-число.
После настройки роутеры обменяются BGP-пакетами (рис.15.9).
В итоге создадутся динамические VPLS-интерфейсы на PE1, PE2 и PE3.
Например, на PE1
[admin@PE1] > interface vpls print
Flags: X - disabled, R - running, D - dynamic, B - bgp-signaled, C - cisco-bgp-signaled
0 RDB name="vpls1" mtu=1500 l2mtu=1500 mac-address=02:6E:3C:4F:4A:E0
arp=enabled disable-running-check=no remote-peer=9.9.9.6 cisco-style=no ciscostyle-id=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes
vpls=bgp-vpls1
1 RDB name="vpls2" mtu=1500 l2mtu=1500 mac-address=02:EE:3A:22:7B:CD
arp=enabled disable-running-check=no remote-peer=9.9.9.7 cisco-style=no ciscostyle-id=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes
vpls=bgp-vpls2
2 RDB name="vpls3" mtu=1500 l2mtu=1500 mac-address=02:3A:0B:F0:4A:C0
199
grigoryev.victor@gmail.com http://vmg.pp.ua
arp=enabled disable-running-check=no remote-peer=9.9.9.7 cisco-style=no ciscostyle-id=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes
vpls=bgp-vpls1
3 RDB name="vpls4" mtu=1500 l2mtu=1500 mac-address=02:CC:69:B3:28:85
arp=enabled disable-running-check=no remote-peer=9.9.9.6 cisco-style=no ciscostyle-id=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes
vpls=bgp-vpls2
Рис.15.9. BGP-cообщение Update от PE2 к PE1. Видим в разделе NLRI route-targets 6:1
и route-distinguisher 9.9.9.6:1 в виде 6.9.9.9:1
Динамические VPLS-интерфейсы автоматически добавятся в мост, что можно
посмотреть на PE1, PE2 и PE3 командой interface bridge port print, например
[admin@PE1] > interface bridge port print
Flags: X - disabled, I - inactive, D - dynamic
# INTERFACE BRIDGE PRIORITY PATH-COST HORIZON
0
ether3
A
0x
10
none
1
ether4
B
0x
10
none
2 D vpls1
A
0x
50
1
3 D vpls2
B
0x
50
1
4 D vpls3
A
0x
50
1
5 D vpls4
B
0x
50
1
200
grigoryev.victor@gmail.com http://vmg.pp.ua
Здесь мы также получили подтверждение, что работает отражение маршрута
на P1, так как нет BGP-пиров между PE1 и PE2, PE1 и PE3, PE2 и PE3.
Установлена полносвязная топология VPLS-туннелей. Посмотрите соседей на
сайтах заказчика А и B. Убеждаемся, как и ранее, что наша VPN уровня 2 по
прежнему функционирует.
Изучим, как MPLS-метки помогают организовать VPN. Пустим обычные
пинги c сайта A1 в сторону сайта A2
[admin@A1]> ping 172.16.1.2
С помощью анализатора пакетов Wireshark изучим структуру ICMP-пакетов
на интерфесах e0 маршрутизатора PE1, e1 маршрутизатора P1 и e1 маршрутизатора
P2 . (Рис 10, 11, 12)
Рис.15.10. Структура ICMP-пакета на интерфесе e0 маршрутизатора PE1.
Рис.15.11. Структура ICMP-пакета на интерфесе e1 маршрутизатора P1
Рис.15.12. Структура ICMP-пакета на интерфесе e1 маршрутизатора P2
Объясним полученное. На всех 3-х рисунках в части Ethernet II, видим
инкапсулированный Ethernet-пакет от интерфейса ether1 сайта A1 до интерфейса
ether1 сайта A2. MAC-адреса отличаются от предыдущего случая потому, что GNS3
их назначает динамически при каждом запуске топологии.
Можно увидеть информацию о состоянии VPLS-интерфейса
[admin@PE1] > interface vpls monitor numbers=0
remote-label: 17
local-label: 22
remote-status:
transport: 1to2
201
grigoryev.victor@gmail.com http://vmg.pp.ua
transport-nexthop: 1.1.1.1
imposed-labels: 16,17
Видим, что VPLS на PE1 назначил метку 22 для туннеля между A1 и A2.
Удалённой стороне назначена метка 17. Эту метку можно увидеть на всех 3-х
рисунках. Для транспорта Ehernet-пакетов от A1 к A2 используется RSVP TE
-интерфейс 1to2 и метка 16. Эту метку можно увидеть на рис.15.10.
Можно увидеть информацию о состоянии RSVP TE-интерфейса
[admin@PE1] > interface traffic-eng monitor numbers=1to2
tunnel-id: 1
primary-path-state: established
primary-path: dyn
secondary-path-state: not-necessary
active-path: dyn
active-lspid: 1
active-label: 16
explicit-route: S:1.1.1.1/32,S:2.2.2.1/32,S:2.2.2.2/32,S:3.3.3.1/32,
S:3.3.3.2/32
recorded-route: 2.2.2.1[16],3.3.3.1[16],3.3.3.2[0]
reserved-bandwidth: 10.0kbps
Таблица пробросов MPLS на P1 показывает, что пакеты с входящей меткой 16
получат такую же выходящую метку и будут направлены на адрес 2.2.2.2
маршрутизатора P2. Эту метку можно увидеть на рис.15.11.
[admin@P1] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL
OUT-LABELS DESTINATION
INTERFACE NEXTHOP
0 expl-null
1 T 16
16
9.9.9.1:1->9.9.9.6:1
ether2
2.2.2.2
2 T 18
expl-null
9.9.9.6:1->9.9.9.1:2
ether1
1.1.1.2
1.2.3. BGP VPLS с организацией LSP с помощью LDP
Помним, что на данный момент LSP организованы с помощью протокола
RSVP. Заменим RSVP на LDP. Для этого на всех маршрутизаторах провайдера
удалим RSVP TE интерфейсы
interface traffic-eng rem [find]
Для всех LSR-роутерах отключим в настройках протокола OSPF поддержку
CSPF
routing ospf instance set 0 mpls-te-area=
routing ospf instance set 0 mpls-te-router-id=
Удалим интерфейсы mpls traffic-eng в маршрутизаторах PE1, PE2 и PE3,
участвующих в работе RSVP TE
[admin@] > mpls traffic-eng interface rem [find]
Для организации путей LSP коммутации пакетов по метке активируем на
каждом LSR-маршрутизаторе протокол LDP согласно разделу 1.1.1.. Транспортный
адрес установим как адрес интерфейса Loopback с именем lobridge. Объявим
202
grigoryev.victor@gmail.com http://vmg.pp.ua
интерфейсы, смотрящие внутрь MPLS–сети, как интерфейсы, участвующие в
обмене меток.
Автоматически создадуться динамические VPLS-интерфейсы на PE1, PE2 и
PE3. Например, на PE1
[admin@PE1] > interface vpls print
Flags: X - disabled, R - running, D - dynamic, B - bgp-signaled, C - cisco-bgp-signaled
0 RDB name="vpls1" mtu=1500 l2mtu=1500 mac-address=02:ED:FD:BE:BF:19
arp=enabled disable-running-check=no remote-peer=9.9.9.6 cisco-style=no cisco-styleid=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes vpls=bgpvpls1
1 RDB name="vpls2" mtu=1500 l2mtu=1500 mac-address=02:F5:00:C9:2C:9E
arp=enabled disable-running-check=no remote-peer=9.9.9.7 cisco-style=no cisco-styleid=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes vpls=bgpvpls1
2 RDB name="vpls3" mtu=1500 l2mtu=1500 mac-address=02:0B:CA:F1:7D:66
arp=enabled disable-running-check=no remote-peer=9.9.9.6 cisco-style=no cisco-styleid=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes vpls=bgpvpls2
3 RDB name="vpls4" mtu=1500 l2mtu=1500 mac-address=02:19:F7:A7:04:35
arp=enabled disable-running-check=no remote-peer=9.9.9.7 cisco-style=no cisco-styleid=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes vpls=bgpvpls2
Динамические VPLS-интерфейсы автоматически добавятся в мост, что
можно посмотреть на PE1, PE2 и PE3 командой interface bridge port print,
например
[admin@PE1] > interface bridge port print
Flags: X - disabled, I - inactive, D - dynamic
# INTERFACE
BRIDGE
PRIORITY PATH-COST HORIZON
0
ether3
A
0x80
10
none
1
ether4
B
0x80
10
none
2 D vpls1
A
0x80
50
1
3 D vpls2
A
0x80
50
1
4 D vpls3
B
0x80
50
1
5 D vpls4
B
0x80
50
1
Установлена полносвязная топология VPLS-туннелей. Посмотрите соседей
на сайтах заказчика А и B. Убеждаемся, как и ранее, что наша VPN уровня 2 по
прежнему функционирует.
Изучим, как MPLS-метки помогают организовать VPN. Пустим обычные
пинги c сайта A1 в сторону сайта A2
[admin@A1]> ping 172.16.1.2
С помощью анализатора пакетов Wireshark получим структуру ICMP-пакетов
на интерфесах e0 маршрутизатора PE1, e1 маршрутизатора P1 и e1 маршрутизатора
P2, которая полностью аналогична структуре для случая п. 1.1.1 (рис.15.3, 15.4 и
203
grigoryev.victor@gmail.com http://vmg.pp.ua
15.5)
Можно увидеть информацию о состоянии VPLS-интерфейсов
[admin@PE1] > interface vpls monitor numbers=0
remote-label: 17
local-label: 22
remote-status:
transport: 9.9.9.6/32
transport-nexthop: 4.4.4.1
imposed-labels: 25,17
Видим, что VPLS на PE1 назначил метку 22 для тунеля между A1 и A2.
Удалённой стороне назначена метка 17. Для транспорта Ehernet-пакетов от A1 к A2
используется метка 25. Таблица пробросов MPLS на PE1 показывает, что пакеты с
меткой 25 будут напрвлены на адрес 4.4.4.4 маршрутизатора P3.
[admin@PE1] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL
OUT-LABELS DESTINATION
INTERFACE
NEXTHOP
1 L 48
25
9.9.9.6/32
ether2
4.4.4.1
6V
22
vpls1
Таблица пробросов MPLS на P3 показывает, что пакеты с входящей меткой 25
получат выходящую метку 16
и будут направлены на адрес
5.5.5.1
маршрутизатора P4.
[admin@P1] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL
OUT-LABELS DESTINATION
INTERFACE NEXTHOP
10 L 25
16
9.9.9.6/32
ether2
5.5.5.1
2. MPLS VPN 3-го уровня
Этот тип VPN основывается на технологии VRF (Virtual Routing and
Forwarding-Виртуальная маршрутизация и пересылка), которая разрешает
одновременное существование на устройстве нескольких таблиц маршрутизации.
RouterOS поддерживает VRF, что позволяет создавать много экземпляров таблиц
для виртуальной маршрутизации и пересылки. Это полезно для MPLS VPN,
основанных на BGP. В отличие от BGP VPLS, которое работает на 2-м уровне OSI,
VRF VPN работают на 3-м уровне и обменивается IP-префиксами между
маршрутизаторами. VRF решает проблем пересечения одинаковых IP-префиксов и
обеспечивает конфиденциальность с помощью раздельной маршрутизации для
разных VPN.
VRF инициализируется в меню /ip route vrf. Для определения таблицы
маршрутизации VRF следует задать атрибут routing-mark, интерфейс, route
distinguisher и
списки экспорта и импорта. Присоединённый маршрут,
соответствующий этому интерфейсу, автоматически помещается в эту VRFтаблицу маршрутизации. Список экспорта должен содержать хотя бы один элемент
для этого VRF. Обычно используют соотношение один-к-одному между route
distinguisher и отдельной таблицей маршрутизации VRF, но это не обязательно.
204
grigoryev.victor@gmail.com http://vmg.pp.ua
Вы можете теперь добавлять маршрут в таблицу маршрутизации VRF, определяя
атрибут routing-mark.
Для распространения между маршрутизаторами маршрутов из таблицы
маршрутов VRF используется многопротокольный BGP с адресным семейством
VPNv4. Для каждого экземпляра BGP, участвующего в VRF-маршрутизации
следует задать список VRF. VRF определяется атрибутом
routing-mark.
Помещение маршрута в таблицу VRF управляется атрибутами BGP. Как только
VRF для BGP настроены, создаются активные маршруты семейства адресов
VPNv4. Эти маршруты устанавливаются в отдельные таблицу маршрутов и видны
из меню /routing bgp vpnv4-route. Через BGP вы можете распространять
одинаковые префиксы Ipv4 для разных сетей. Как правило, маршруты VPNv4 с
одинаковыми префиксами будут распространятся только после должной настройки
MPLS.
Рис.15.13. Топология для MPLS VPN 3-го уровня
VRF-маршрутизация использует, так называемые VPNv4-маршруты, которая
работает с префиксами, состоящими из route-distinguisher и префикса IPv4. Тем
самым на одном маршрутизаторе можно по-разному маршрутизировать пакеты с
одинаковыми префиксами Ipv4, приходящими от различных источников. Как
правило VRF-маршрутизация функционирует только после должной настройки
MPLS
Рассмотрим настройку MPLS VPN 3-го уровня на примере топологии на
рис.15.13, которая является копией топологии на рис.15.12 и отличается от неё
205
grigoryev.victor@gmail.com http://vmg.pp.ua
лишь настройками адресов устройств A1, A2, A3, B1, B2, B3 заказчиков.
Заказчики A и B требуют связать в единое адресное пространство свои три сети IPсети. Причём эти сети у них оказались одинаковыми: 172.16.1.0/24, 172.16.2.0/24,
172.16.3.0/24.
Внутри облака MPLS
пути коммутации пакетов по метке LSP
организовываются либо с помощью протокола LDP либо с помощью протокола
RSVP. На текущий момент топология использует LDP.
2.1 MPLS VPN 3-го уровня c организацией LSP с помощью LDP
Уберём из топологии существующую там поддержку BGP VPLS и других
настроек, касающихся VPN уровня 2.
На всех граничных маршрутизаторах провайдера уберём поддержку BGP
VPLS
interface vpls bgp-vpls remove [find]
Уберём интерфейсы из мостов
interface bridge port remove [find]
Удалим мосты A и B
interface bridge port remove A,B
Назначьте, согласно рис. 15.13, адреса для сетей 172.16.1.0/24,
172.16.2.0/24,172.16.3.0/24 заказчиков A и B. На компьютерах (маршрутизаторах)
заказчика определите маршрут по умолчанию в сторону сети провайдера,
например для A1
[admin@ A1] > ip route add gateway=172.16.1.1
На граничных маршрутизаторах провайдера для BGP-пиров установим
поддержку семейства адресов VPNv4. Для PE1, PE2 и PE3
routing bgp peer set 0 address-families=vpn4
Для отражателя маршрутов P1 у нас три BGP-пира
routing bgp peer set 0,1,2 address-families=vpn4
Об установке BGP-соединений можно убедиться, просматривая время
существования соединения uptime в выводе команды /routing bgp peer print status.
Интерфейсы
граничных
маршрутизвторов,
идущие
в
сторону
маршрутизаторов заказчика, поместим в две VRF. Для VRF заказчика А (В)
назначим маркер маршрутов А (В).
[admin@PE1]>ip route vrf add routing-mark=A interfaces=ether3 routedistinguisher=9.9.9.1:1
export-route-targets=1:1 import-route-targets=6:1,7:1
[admin@PE1]>ip route vrf add routing-mark=B interfaces=ether4 routedistinguisher=9.9.9.1:2
export-route-targets=1:2 import-route-targets=6:2,7:2
[admin@PE2]>ip route vrf add routing-mark=A interfaces=ether3 routedistinguisher=9.9.9.6:1
export-route-targets=6:1 import-route-targets=1:1,7:1
[admin@PE2]>ip route vrf add routing-mark=B interfaces=ether4 routedistinguisher=9.9.9.6:2
export-route-targets=6:2 import-route-targets=1:2,7:2
[admin@PE3]>ip route vrf add routing-mark=A interfaces=ether3 routedistinguisher=9.9.9.7:1
export-route-targets=7:1 import-route-targets=1:1,6:1
[admin@PE3]>ip route vrf add routing-mark=B interfaces=ether4 routedistinguisher=9.9.9.7:2
export-route-targets=7:2 import-route-targets=1:2,6:2
206
grigoryev.victor@gmail.com http://vmg.pp.ua
Здесь (сравни с п. 1.2.2)
route-distinguisher определяет значение, прикрепляемое к BGP-пакету;
получающие маршрутизаторы используют это значение для заполнения таблиц
VPNv4-маршрутизации и организации VPN . Чтобы принимающие роутеры
различали информацию от различных VPN, это значение должно быть различно
для разных VPN на одном устройстве. Route-distinguisher не используется
получающим маршрутизатором для определения принадлежности передающего
роутера конкретной VPN. Для этого используется route-targets.
export-route-targets – это своего рода метка (синоним) для route-distinguisher.
import-route-targets – это список из внешних export-route-targets, служащий для
определения совокупности роутеров, образующих конкретную VPN.
Укажем BGP, что VRF, определяемые маркерами маршрутов A и B, будут
участвовать в маршрутизации для семейства адресов vpnv4.
[admin@PE1] > routing bgp instance vrf add routing-mark=A redistributeconnected=yes
[admin@PE1] > routing bgp instance vrf add routing-mark=B redistributeconnected=yes
[admin@PE2] > routing bgp instance vrf add routing-mark=A redistributeconnected=yes
[admin@PE2] > routing bgp instance vrf add routing-mark=B redistributeconnected=yes
[admin@PE3] > routing bgp instance vrf add routing-mark=A redistributeconnected=yes
[admin@PE3] > routing bgp instance vrf add routing-mark=B redistributeconnected=yes
Роутер PE1 получит от роутера PE2 BGP-сообщение Update (рис.15.14) в
котором для организации маршрутизации пакетов заказчика A в сторону сети
172.16.2.0/24 назначается метка 26. Заметим, что route-distinguisher 9.9.9.6:1 для
VPN заказчика A в роутере PE2 представлен в сообщении в виде 6.9.9.9:1. В
сообщении можно также видеть route-targets 6:1 VPN заказчика A в роутере PE2.
Аналогичные сообщения получат другие PE-роутеры.
Посмотрим на граничном маршрутизаторе PE1 маршруты c маркером A
[admin@PE1] > ip route print detail where routing-mark=A
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp,
o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
0 ADC
dst-address=172.16.1.0/24 pref-src=172.16.1.1 gateway=ether3 gatewaystatus=ether3 reachable distance=0 scope=10 routing-mark=A
1 ADb dst-address=172.16.2.0/24 gateway=9.9.9.6 gateway-status=9.9.9.6 recursive via
1.1.1.1,4.4.4.1 ether1,ether2 distance=200 scope=40 target-scope=30 routing-mark=A
bgp-local-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:6:1"
2 ADb dst-address=172.16.3.0/24 gateway=9.9.9.7 gateway-status=9.9.9.7 recursive via
4.4.4.1 ether2 distance=200 scope=40target-scope=30 routing-mark=A bgp-localpref=100 bgp-origin=incomplete bgp-ext-communities="RT:7:1"
207
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис.15.14 BGP-сообщение Update
Видим наличие маршрутов в сторону всех сетей 172.16.1.0/24, 172.16.2.0/24
и 172.16.3.0/24 компьютеров A1, A2 и A3 заказчика A.
Посмотрим на граничном маршрутизаторе PE1 маршруты c маркером B
[admin@PE1] > ip route print detail where routing-mark=B
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp,
o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
3 ADC dst-address=172.16.1.0/24 pref-src=172.16.1.1 gateway=ether4 gatewaystatus=ether4 reachable distance=0 scope=10 routing-mark=B
4 ADb dst-address=172.16.2.0/24 gateway=9.9.9.6 gateway-status=9.9.9.6 recursive via
1.1.1.1,4.4.4.1 ether1,ether2 distance=200 scope=40 target-scope=30 routing-mark=B
bgp-local-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:6:2"
5 ADb dst-address=172.16.3.0/24 gateway=9.9.9.7 gateway-status=9.9.9.7 recursive via
4.4.4.1 ether2 distance=200 scope=40 target-scope=30 routing-mark=B bgp-localpref=100 bgp-origin=incomplete bgp-ext-communities="RT:7:2"
208
grigoryev.victor@gmail.com http://vmg.pp.ua
Видим наличие маршрутов в сторону всех сетей 172.16.1.0/24, 172.16.2.0/24
и 172.16.3.0/24 компьютеров B1, B2 и B3 заказчика B.
Маршрут в сторону непосредственно присоединённых сетей с одинакоым
префиксом 172.16.1.0/24 разный для разных заказчиков. Для заказчика A он идёт
через интерфейс ether3, а для заказчика B он идёт через интерфейс ether4.
Просмотр на граничных маршрутизаторах PE2 и PE3 маршрутов c маркерами
A либо B даст аналогичный результат.
Получили две независимые VPN третьего уровня для заказчиков А и В, у
которых одинаковые адресные пространства. Убедитесь в этом с помощью
команды /tool telnet. Например, зайдите из A1 в A2, из А1 в А3, из А2 в А3, из B1
в B2,из B1 в А3 и из B2 в B3. Выход из сессии telnet осуществляется с помощью
комбинации клавиш CtrlD.
Изучим, как MPLS-метки помогают организовать VPN. Пустим обычные
пинги c сайта A1 в сторону сайта A2
[admin@A1]> ping 172.16.2.2
С помощью анализатора пакетов Wireshark изучим структуру ICMP-пакетов
на интерфесах e0 маршрутизатора PE1, e1 маршрутизатора P1 и e1 маршрутизатора
P2 . (Рис. 15.15, 15.16 и 15.17)
Рис.15.15. Структура ICMP-пакета на интерфесе e0 маршрутизатора PE1
Рис.15.16. Структура ICMP-пакета на интерфесе e1 маршрутизатора P1
Рис.15.17. Структура ICMP-пакета на интерфесе e1 маршрутизатора P2
Объясним полученное.
маршрутизаторе PE1
Таблица
VPNv4-маршрутов на граничном
[admin@PE1] > rou bg vpnv4-route pr
Flags: L - label-present
ROUTE-DISTINGUISHER DST-ADDRESS GATEWAY INTERFACE IN-LABEL
OUT-LABEL
209
grigoryev.victor@gmail.com http://vmg.pp.ua
0 L 9.9.9.6:1
172.16.2.0/24 9.9.9.6
ether1
26
26
показывает, что для организации правильной маршрутизации пакетов заказчика A
(route-distinguisher =9.9.9.6:1) в сторону сети 172.16.2.0/24 им назначена метка 26.
Эту метку можно увидеть на всех 3-х рисунках. Для транспорта пакетов от A1 к A2
используется метка 17. Эту метку можно увидеть на рис.15.15. Таблица пробросов
MPLS на PE1 показывает, что пакеты с меткой 17 будут направлены на адрес
1.1.1.1 маршрутизатора P1.
[admin@PE1] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL OUT-LABELS DESTINATION INTERFACE
NEXTHOP
6 L 18
17
9.9.9.6/32
ether1
1.1.1.1
Таблица пробросов MPLS на P1 показывает, что пакеты с входящей меткой 17
получат выходящую метку 16 и будут направлены на адрес 2.2.2.2 маршрутизатора
P2. Эту метку можно увидеть на рис.15.16.
[admin@P1] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL OUT-LABELS DESTINATION INTERFACE NEXTHOP
3 L 17
16
9.9.9.6/32
ether2
2.2.2.2
Таблица VPNv4 маршрутов на граничном маршрутизаторе PE2
[admin@PE2] > rou bg vpnv4-route pr det
Flags: L - label-present
3 L route-distinguisher=9.9.9.6:1 dst-address=172.16.2.0/24 interface=ether3
in-label=26 bgp-ext-communities="RT:6:1"
и таблица пробросов MPLS
[admin@PE2] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL OUT-LABELS DESTINATION
6 26
172.16.2.0/24@A
показывает, что пакеты с меткой 26 попадут в сеть 172.16.2.0/24 через интерфейс
ether3. Это значит, что они попадут на компьютер A2.
Уберём поддержку протокола LDP для всех маршрутизаторов провайдера
mpls ldp set enabled=no transport-address=0.0.0.0 lsr-id=0.0.0.0
mpls ldp interface remove [find]
2.2 MPLS VPN 3-го уровня c организацией LSP с помощью RSVP
Следуя п. 1.1.2. организуем в MPLS-облаке LSP с помощью протокола
RSVP-TE.
Изучим, как MPLS-метки помогают организовать VPN. Пустим обычные
пинги c сайта A1 в сторону сайта A2
[admin@ A1]> ping 172.16.2.2
С помощью анализатора пакетов Wireshark изучим структуру ICMP-пакетов
на интерфесах e0 маршрутизатора PE1, e1 маршрутизатора P1 и e1 маршрутизатора
P2 . (рис 15.18, 15.19 и 15.20)
Объясним полученное.
Таблица
VPNv4-маршрутов на граничном
210
grigoryev.victor@gmail.com http://vmg.pp.ua
маршрутизаторе PE1
[admin@PE1] > rou bg vpnv4-route pr
ROUTE-DISTINGUISHER DST-ADDRESS GATEWAY INTERFACE IN-LABEL
OUT-LABEL
0 L 9.9.9.6:1
172.16.2.0/24 9.9.9.6
ether1
16
16
показывает, что для организации правильной маршрутизации пакетов заказчика A
(route-distinguisher =9.9.9.6:1) в сторону сети 172.16.2.0/24 им назначена метка 16.
Эту метку можно увидеть на всех 3-х рисунках. Для транспорта пакетов от A1 к A2
используется метка 20. Эту метку можно увидеть на рис.15.18.
Рис.15.18. Структура ICMP-пакета на интерфесе e0 маршрутизатора PE1.
Рис.15.19. Структура ICMP-пакета на интерфесе e1 маршрутизатора P1
Рис.15.20. Структура ICMP-пакета на интерфесе e1 маршрутизатора P2
Таблица пробросов MPLS на P1 показывает, что пакеты с входящей меткой 20
получат такую же выходящую метку и будут направлены на адрес 2.2.2.2
маршрутизатора P2. Эту метку можно увидеть на рис.15.19.
[admin@P1] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL OUT-LABELS
DESTINATION
INTERFACE NEXTHOP
0 expl-null
1 T 19
expl-null
9.9.9.6:1->9.9.9.1:5
ether1
1.1.1.2
2 T 20
20
9.9.9.1:1->9.9.9.6:3
ether2
2.2.2.2
Таблица VPNv4 маршрутов на граничном маршрутизаторе PE2
[admin@PE2] > rou bg vpnv4-route pr det
Flags: L - label-present
3 L route-distinguisher=9.9.9.6:1 dst-address=172.16.2.0/24 interface=ether3
in-label=16 bgp-ext-communities="RT:6:1"
и таблица пробросов MPLS
211
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@PE2] > mpls forwarding-table pr
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL OUT-LABELS DESTINATION
1 16
172.16.2.0/24@A
показывает, что пакеты с меткой 16 попадут в сеть 172.16.2.0/24 через интерфейс
ether3. Это значит, что они попадут на компьютер A2.
Требования для сдачи работы
Настроить LDP VPLS с организацией LSP с помощью LDP и RSVP, BGP
VPLS с организацией LSP с помощью LDP и RSVP, MPLS VPN 3-го уровня c
организацией LSP с помощью LDP и RSVP.
212
grigoryev.victor@gmail.com http://vmg.pp.ua
16. VPN-клиенты Windows 7 для VPN-серверов Mikrotik
Соединение SSTP-клиента Windows7 с SSTP-сервером Mikrotik
Соединение L2TP IPsec-клиента Windows7 с L2TP -сервером Mikrotik
213
218
В Windows 7 встроены 4 VPN-клиента: PPTP, L2TP IPsec, SSTP и IKE v2. В
Mikrotik есть сервера PPTP, L2TP, SSTP и поддерживается IPsec. Настройка в
Windows 7 PPTP-клиента для PPTP-сервера Mikrotik элементарна и здесь
приводится не будет.
В этом разделе рассмотрим настройку VPN-соединения между Windows 7 и
Mikrotik по протоколам SSTP и L2TP IPsec.
Для упрощения конфигурации отключим брандмауэр Windows7.
Соединение SSTP-клиента Windows7 с SSTP-сервером Mikrotik
Будем работать под Window7. Установим OpenVPN. Создадим тап-интерфейс:
Все Программы – OpenVPN – Utilites-Add new tap virtual Ethernet adapter. В Панель
управления\Сеть и Интернет\Сетевые подключения переименуем новый адаптер в
tap0 и дадим ему адрес 10.0.0.2/24.
Будем работать с GNS3 под Window7. Зайдём в папку GNS3. Установим
routeros под qemu на образ диска mt.img из образа CD-инсталяции mt.iso
Qemu-img create –f qcow2 mt.img
Qemu mt.img –cdrom mt.iso –boot d
Произведём конфигурацию GNS3, как указано в предыдущих разделах
Создадим топологию из одного роутера Mikrotik в опциях которого укажем
параметры для связи с хост-машиной Windows 7 через тап-интерфейс tap0
-net nic –net tap,ifmame-tap0
Запустим топологию и назначим в Mikrotik адрес на интерфейс ether7,
связанный с тап-интерфесом tap0
Ip address add address=10.0.0.1/24 interface=ether7
Проверим связь из windows в Mikrotik
Ping 10.0.0.1
В папке OpenVPN\easy-rsa есть средства работы с RSA-сертификатами.
Отредактируем файл vars.bat
@echo off
set HOME=\OpenVPN\easy-rsa
set KEY_CONFIG=openssl-1.0.0.cnf
set KEY_DIR=keys
set KEY_SIZE=1024
set KEY_COUNTRY=UA
set KEY_PROVINCE=DP
set KEY_CITY=DNSK
set KEY_ORG=FFECS
set KEY_EMAIL=mail@host.domain
set KEY_CN=CN
213
grigoryev.victor@gmail.com http://vmg.pp.ua
set KEY_NAME=NAME
set KEY_OU=EOM
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234
Создадим пустые файлы index и serial files. Это делается один раз
C:\OpenVPN\easy-rsa>vars
C:\OpenVPN\easy-rsa>clean-all
Создадим корневой сертификат с закрытым ключом. «Common Name»
сертификата возьмём произвольным, например myCN. Это делается один раз
C:\OpenVPN\easy-rsa>vars
C:\OpenVPN\easy-rsa>build-ca
WARNING: can't open config file: c:/openssl/ssl/openssl.cnf
…
Country Name (2 letter code) [UA]:
State or Province Name (full name) [DP]:
Locality Name (eg, city) [DNSK]:
Organization Name (eg, company) [FFECS]:
Organizational Unit Name (eg, section) [EOM]:
Common Name (eg, your name or your server's hostname) [CN]:myCN
Name [NAME]:
Email Address [mail@host.domain]:
Создадим серверный сертификат с закрытым ключом. «Common Name»
сертификата сделаем равным адресу 10.0.0.1 нашего будущего SSTP-сервера
Mikrotik. Имя файлов сертификата возьмем любым, например server
C:\OpenVPN\easy-rsa>build-key-server server
WARNING: can't open config file: c:/openssl/ssl/openssl.cnf
…
Country Name (2 letter code) [UA]:
State or Province Name (full name) [DP]:
Locality Name (eg, city) [DNSK]:
Organization Name (eg, company) [FFECS]:
Organizational Unit Name (eg, section) [EOM]:
Common Name (eg, your name or your server's hostname) [CN]:10.0.0.1
Name [NAME]:
Email Address [mail@host.domain]:
…
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
214
grigoryev.victor@gmail.com http://vmg.pp.ua
Создадим сертификат клиента с закрытым ключом. «Common Name»
сертификата возьмём произвольным, например clientCN. Имя файлов сертификата
возьмем любым, например client
C:\OpenVPN\easy-rsa>build-key client
WARNING: can't open config file: c:/openssl/ssl/openssl.cnf
…
Country Name (2 letter code) [UA]:
State or Province Name (full name) [DP]:
Locality Name (eg, city) [DNSK]:
Organization Name (eg, company) [FFECS]:
Organizational Unit Name (eg, section) [EOM]:
Common Name (eg, your name or your server's hostname) [CN]:clientCN
Name [NAME]:
Email Address [mail@host.domain]:
…
Sign the certificate? [y/n]:y
1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Перепишем в Mikrotik корневой сертификат, серверный сертификат и
закрытый ключ к нему
C:\OpenVPN\easy-rsa>cd keys
C:\OpenVPN\easy-rsa\keys>ftp 10.0.0.1
Связь с 10.0.0.1.
220 MikroTik FTP server (MikroTik 5.18) ready
Пользователь (10.0.0.1:(none)): admin
331 Password required for admin
Пароль:
230 User admin logged in
ftp> bin
200 Type set to I
ftp> put ca.crt
200 PORT command successful
150 Opening BINARY mode data connection for '/ca.crt'
226 BINARY transfer complete
ftp: 1269 байт отправлено за 0,00 (сек) со скоростью 634,50 (КБ/сек).
ftp> mput serv*
mput server.crt? y
200 PORT command successful
150 Opening BINARY mode data connection for '/server.crt'
226 BINARY transfer complete
ftp: 3930 байт отправлено за 0,00 (сек) со скоростью 1310,00 (КБ/сек).
mput server.csr? n
mput server.key? y
215
grigoryev.victor@gmail.com http://vmg.pp.ua
200 PORT command successful
150 Opening BINARY mode data connection for '/server.key'
226 BINARY transfer complete
ftp: 916 байт отправлено за 0,00 (сек) со скоростью 916,00 (КБ/сек).
ftp> quit
Установим в MikroTik корневой сертификат, серверный сертификат и
закрытый ключ к нему
[admin@MikroTik] > certificate import file-name=ca.crt
passphrase:
[admin@MikroTik] > certificate import file-name=server.crt
passphrase:
[admin@MikroTik] > certificate import file-name=server.key
passphrase:
На запрос passphrase просто жмите Enter.
Проверим, что сертификаты установились правильно.
[admin@MikroTik] > certificate print
Flags: K - decrypted-private-key, Q - private-key, R - rsa, D – dsa
0
name="cert1" subject=C=UA, ST=DP, L=DNSK, O=FFECS, OU=EOM,
CN=myCN, name=NAME, emailAddress= mail@host.domain
issuer=C=UA,
ST=DP, L=DNSK, O=FFECS, OU=EOM, CN=myCN, name=NAME,
emailAddress= mail@host.domain
serial-number= "9DD0491799EEEE30"
email=mail@host.domain invalid-before=aug/21/2012 13:10:41
invalidafter=aug/19/2022 13:10:41 ca=yes
1 KR name="cert2" subject=C=UA,ST=DP,L=DNSK,O=FFECS,OU=EOM,
CN=serverCN,name=NAME,emailAddress=mail@host.domain issuer=C=UA,
ST=DP,L=DNSK,O=FFECS,OU=EOM,CN=myCN,name=NAME,emailAddress=m
ail@host.domain
serial-number="01" email=mail@host.domain invalidbefore=aug/21/2012 13:12:33 invalid-after=aug/19/2022 13:12:33 ca=yes
Переименуем сертификат c флагами KR в srv. (K - decrypted-private-key, R –
rsa)
[admin@MikroTik] > certificate set 1 name=srv
Добавим пользователя q с паролем q. После подключения клиент получит
адрес 3.3.3.3, а SSTP-сервер 2.2.2.2.
[admin@MikroTik] >ppp secret add name=a password=a service=sstp localaddress=2.2.2.2 remote-address=3.3.3.3 profile=default-encription
Активируем SSTP-сервер с указанием ему сертификата srv
[admin@MikroTik]>interface sstp-server server set enabled=yes certif=srv
profile=default-encription
Установим сертификат и в Windows 7. Вызовим консоль Майкрософт mmc.
Далее добавим оснастку для работы с сертификатами:
Файл-добавить или удалить оснастку – сертификаты – добавить -учётной
записи компьютера – далее - локальным компьютером - готово – ок.
216
grigoryev.victor@gmail.com http://vmg.pp.ua
Добавим в Windows корневой сертификат. Для этого в консоли Сертификаты
выбираем:
Доверенные корневые центры сертификации – сертификаты - правая кнопка
мыши - все задачи – импорт – далее – обзор -C:\OpenVPN\easy-rsa\keys\ca.crt –
далее - поместить все сертификаты в следующее хранилище Доверенные корневые
центры сертификации –далее – готово.
Видим: Импорт успешно выполнен
Рис. 16.1. VPN-подключение
Рис. 16.2. Параметры безопасности VPN-подключения
217
grigoryev.victor@gmail.com http://vmg.pp.ua
Аналогичным образом добавляем сертификат клиента C:\OpenVPN\easyrsa\keys\client.crt.
Организуем соединение SSTP-клиента Windows7 с SSTP-сервером Mikrotik по
адресу 10.0.0.1:
Панель управления \Сеть и Интернет \Центр управления сетями и общим
доступом – настройка нового подключения или сети - подключение к рабочему
месту –далее - использовать моё подключение к Интернет (VPN)-Интернет адрес
10.0.0.1 – Пользователь q – пароль q подключить.
Windiws сама определит, что на противоположной стороне находится SSTPсервер, проверит сертификат сервера и подключится. Проверим
Ping 2.2.2.2
Обмен пакетами с 2.2.2.2 по с 32 байтами данных:
Ответ от 2.2.2.2: число байт=32 время=4мс TTL=64
Ответ от 2.2.2.2: число байт=32 время=4мс TTL=64
В Панель управления \Сеть и Интернет \Сетевые подключения появится новый
элемент VPN-подключение (Рис. 16.1) с параметрами безопасности, приведенными
на Рис.16.2.
Остановим sstp-server
[admin@MikroTik]>interface sstp-server server set enabled=no
Соединение L2TP IPsec-клиента Windows7 с L2TP-сервером Mikrotik
Windows осуществляет L2TP-соединение только через IPsec-канал. Поэтому
вначале научимся шифровать трафик между Windows7 (10.0.0.2) и Mikrotik
(10.0.0.2) с помощью IPsec. Настроим IPsec-канал на стороне Mikrotik. Используем
(как установлено по умолчанию в IPsec для Windows7) алгоритм шифрования
3des, хеширование sha1
и DH-группу modp1024. В качестве метода проверки
подлинности используем ключ 123456789. Используем автоматическое создание
IPsec-политики (generate-policy=yes) и разрешим принимать соединения ото всех
(address=0.0.0.0/0)
[admin@MikroTik] > ip ipsec proposal print detail
Flags: X - disabled, * - default
0 * name="default" auth-algorithms=sha1 enc-algorithms=3des lifetime=30m pfsgroup=modp1024
[admin@MikroTik] > ip ipsec peer print detail
Flags: X - disabled
0 address=0.0.0.0/0 port=500 auth-method=pre-shared-key secret="123456789"
generate-policy=yes exchange-mode=main send-initial-contact=yes nat-traversal=no myid-user-fqdn="" proposal-check=obey hash-algorithm=sha1
enc-algorithm=3des dhgroup=modp1024 lifetime=1d lifebytes=0 dpd-interval=2m dpd-maximum-failures=5
Настроим IPsec-канал на стороне Windows 7. . Вызовем консоль Майкрософт
mmc. Далее добавим оснастку «Управление политикой IP-безопастности»
(локальный компьбтер). В контекстном меню выбираем создание политики IPбезопастности. Запустится мастер. Назовём политику «Политика IP218
grigoryev.victor@gmail.com http://vmg.pp.ua
безопастности». Нам надо настроить IP-фильтр, действие фильтра, метод проверки
подлинности, конечную точку туннеля и тип подключения (см. Рис. 16.3 а, б).
А)
Б)
Рис 16.3. Политика IP-безопастности
Во вкладке Общие политики IP-безопастности на рис. 16.3 можно увидеть
(настроить) алгоритм шифрования 3des, хеширование sha1
и DH-группу
modp1024 (рис. 16.4)
Рис. 16.4. Методы безопасности.
219
grigoryev.victor@gmail.com http://vmg.pp.ua
Настроим IP-фильтр (рис. 16.5), действие фильтра (рис. 16.6), метод проверки
подлинности (рис. 16.7), конечную точку туннеля (рис. 16.8) и тип подключения
(рис. 16.9). Заметим, что в IP-фильтре (рис. 16.5) в качестве источников пакетов
фигурирует Mikrotik
Рис. 16.5. IP-фильтр.
В консоли в контекстном меню политики выбираем назначить.
Пустим пинги в сторону Mikrotik. После некоторой задержки они пойдут. В
Mikrotik можно увидеть сгенерированную политику и SA
[admin@MikroTik] > ip ipsec policy print detail
[admin@MikroTik] > ip ipsec installed-sa print detail
220
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 16.6. Действие фильтра
Рис. 16.7. Метод проверки подлинности
221
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 16.8. Конечная точку туннеля
Рис. 16.9. Тип подключения
Перейдём к настройке соединение L2TP IPsec-клиента Windows7 с L2TPсервером Mikrotik. Надо сбросить IPsec. В Mikrotik.
[admin@MikroTik]> ip ipsec peer set 0 disabled=yes
[admin@MikroTik]> ip ipsec peer set 0 disabled=no
В консоли Windows в контекстном меню политики выбираем снять. Не
забудьте в нужное время назначить политику. Может быть полезной перегрузка
службы агента политики IPsec.
В случае неудачной конфигурации, могут перестать идти пинги из Windows
(Mikrotik) сторону адреса 10.0.0.1 (10.0.0.2) Mikrotik (Windows). Надо также будет
сбросить IPsec.
Добавим пользователя а с паролем а. После подключения L2TP-клиент
windows получит адрес 172.16.1.2, а L2TP-сервер Mikrotik - 172.16.1.1.
[admin@MikroTik]> ppp secret add name=a password=a service=l2tp localaddress=172.16.1.1 remote-address=172.16.1.2 profile=default-encription
222
grigoryev.victor@gmail.com http://vmg.pp.ua
Активируем L2TP-сервер
[admin@MikroTik]> int l2tp-server server set enabled=yes default-profile=defaultencryption
Адаптируем в MikroTik существующие настройки IPsec под L2TP , установив
exchange-mode=main-l2tp.
[admin@MikroTik] > ip ipsec peer set 0 exchange-mode=main-l2tp
В Windows 7 в Панель управления \Сеть и Интернет \Сетевые подключения
изменим элемент VPN-подключение, указав тип L2TP IPSeс VPN, обязательное
шифрование данных (рис.16.10) и в дополнительных параметрах - ключ 123456789
(рис. 16.11).
Рис. 16.10. Свойства L2TP IPSeс VPN
223
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 16.11. Ключ для IPSec
В контестном меню VPN-подключения выберем соединиться. Windows
соединиться с Mikrotik по протоколу L2TP IPSeс. На Windows с некоторой
задержкой пойдут пинги в сторону Mikrotik. Шифрование началось.
На Mikrotik сгенерировалась динамическая политика IPSeс
[admin@MikroTik] > ip ipsec policy print detail
Flags: X - disabled, D - dynamic, I - inactive
0 D src-address=10.0.0.2/32 src-port=any dst-address=10.0.0.1/32 dst-port=any
protocol=udp action=encrypt level=require ipsec-protocols= esp tunnel= no sa-srcaddress= 10.0.0.2 sa-dst-address= 10.0.0.1 proposal= default priority=2
Заметим, что в качестве источников фигурирует адрес 10.0.0.2 Windows.
Можно видеть и SA с увеличивающимся числом зашифрованных байт current-bytes
[admin@MikroTik] > ip ipsec installed-sa print detail
Flags: A - AH, E - ESP, P - pfs
0 E spi=0x192EBE8 src-address=10.0.0.2 dst-address=10.0.0.1 auth-algorithm=sha1
enc-algorithm=3des
replay=
4
state=
mature
auth-key=
"a5f9f8f9e2cf13f45392c249716f47ae33a372fa"
enc-key=
"20e7961814b47a170803a16b589cb89de460151905dcd53b"
addtime=aug/21/2012 21:24:38 expires-in=28m55s add-lifetime=48m/1h currentbytes=17723
1 E spi=0xE2E7A2FF src-address=10.0.0.1 dst-address=10.0.0.2 auth-algorithm=sha1
enc-algorithm=3des replay=4 state=mature auth-key= "0bcd8a290d3fba3f90919225fb9f508fd9d31029"
enc-key=
"762fa153bf883ae9f731ef4f1726a56c427df19d4fc65d29"
addtime=aug/21/2012 21:24:38 expires-in=28m55s addlifetime=48m/1h current-bytes=11447
224
grigoryev.victor@gmail.com http://vmg.pp.ua
Увидим также удалённый пир
[admin@MikroTik] > ip ipsec remote-peers print detail
0 local-address=10.0.0.1 remote-address=10.0.0.2 state=established
side=responder established=1m24s
Требования для сдачи работы
Предъявить соединения SSTP и L2TP IPsec клиентов Windows7 с SSTP и L2TP
серверами Mikrotik.
225
grigoryev.victor@gmail.com http://vmg.pp.ua
17. Курсовой проект.
Постановка задачи
Пример выполнения
Быстрый старт
Требование к отчёту и порядок сдачи проекта
226
229
241
241
Постановка задачи
У корпорации 4 филиала и в каждом по два маршрутизатора: в 0-м - R0 и R4,
в 1-м - R1 и R5, во 2-м - R2 и R6, 3-м - R3 и R7. Внешние маршрутизаторы R0, R1,
R2 и R3 имеют выход в Интернет, а внутренние R4, R5, R6 и R7 – нет (рис. 17.1).
а. Адреса внутренних сетей филиалов представлены на рис. 17.1: 0192.168.4*V.0/24;
1-192.168.4*V+1.0/24;
2-192.168.4*V+2.0/24;
3192.168.4*V+3.0/24. Например, для
варианта V=7 0-192.168.28.0/24 1192.168.29.0/24
2-192.168.30.0/24
3-192.168.31.0/24.
К
внутренним
маршрутизаторам R4, R5, R6 и R7 подсоединены локальные сети филиалов,
представленные в каждом филиале одним компьютером R13, R12, R10 и R11,
соответственно (рис. 17.2 или 17.3).
Рис. 17.1. Топология для курсового проекта. 1 этап.
Ставится задача поочерёдно объединить компьютеры R10, R11, R12 и R13
локальных сетей филиалов в две единые для всей корпорации виртуальные
частные сети на основании технологии MPLS. Одна VPN должна быть уровня 2, а
вторая – 3.
Технология для MPLS VPN уровня 3 – BGP VRF. Для MPLS VPN уровня 2
выберем BGP VPLS.
Участники MPLS-сети должны видеть друг друга по протоколу уровня 2 и
иметь возможность обмениваться метками. Поэтому для решения задачи следует
объединить внутренние маршрутизаторы R4, R5, R6 и R7 в одну вспомогательную
виртуальную частную сеть уровня 2 на основе технологии SSTP. Метки будут
помещаться в пакеты PPP при обмене данными по SSTP.
б. Выбор номера схемы соединения филиалов по протоколу SSTP
осуществляется из рис. 17.4 по формуле V%15+1.
в. В качестве протокола маршрутизации чётные варианты используют RIP, а
нечётные – OSPF.
Для связи SSTP-серверов и клиентов на внутренних маршрутизаторах R4, R5,
R6 и R7 между собой следует обеспечить их видимость друг другом по протоколу
226
grigoryev.victor@gmail.com http://vmg.pp.ua
IP. Для этого на внешних маршрутизаторах R0, R1, R2 и R3 следует организовать
преобразование исходящих и приходящих адресов.
Рис. 17.2. Топология для курсового проекта. 2 этап. Адреса для VPN уровня 2.
Рис. 17.3. Топология для курсового проекта. 2 этап. Адреса для VPN уровня 3.
г. Для организации MPLS VPN уровня 2 и 3 используется BGP с отражателем
маршрутов. Номер маршрутизатора отражателем маршрута равен V%4+4.
227
grigoryev.victor@gmail.com http://vmg.pp.ua
Например, для варианта V=7 это R7 (7%4+4=3+4=7). В MPLS-сети чётные
варианты организуют LSP с помощью LDP, а нечётные с помощью RSVP.
д. Адреса компьютеров R10, R11, R12 и R13 для VPN уровня 2 представлены
на
рис.
17.2:
R10-172.16.200+V.1/24,
R11-172.16.200+V.2/24,
R12172.16.200+V.3/24 и R13-172.16.200+V.4/24, где V-номер варианта. Например, для
варианта V=7: R10-172.16.207.1/24, R11-172.16.207.2/24, R12-172.16.207.3/24 и
R13-172.16.207.4/24.
Рис. 17.4. Схемы соединения филиалов 0, 1, 2 и 3 по протоколу SSTP. К-клиент, Ссервер. Фактически 0 это R4, 1- R5, 2-R6, 3-R7.
е. Адреса компьютеров R10, R11, R12 и R13 для VPN уровня 3 представлены
на рис. 17.3: 172.16.1+4*V.2/24, R11-172.16.2+4*V.2/24, R12-172.16.3+4*V.2/24 и
172.16.4+4*V.2/24, где V-номер варианта. Например, для варианта V=7: R10172.16.29.2/24 (1+4*7=29), R11-172.16.30.2/24,
R12-172.16.31.2/24 и R13172.16.32.2/24.
228
grigoryev.victor@gmail.com http://vmg.pp.ua
Пример выполнения
Выполним курсовой проект для варианта V=0 и номера тап-сети D=0.
Согласно варианту:
а. Адреса внутренних сетей филиалов 0-192.168.0.0/24 1-192.168.1.0/24 2192.168.2.0/24 3-192.168.3.0/24(4*0+3).
б. Схема соединения филиалов по протоколу SSTP имеет номер 0 из рис. 17.3.
.
Здесь, согласно рис. 17.3, 0 это R4, 1- R5, 2-R6, 3-R7.
в. В качестве протокола маршрутизации используем RIP.
г. В качестве отражателя маршрутов используется маршрутизатор R5. В
MPLS-сети LSP организуем с помощью LDP.
д. Адреса компьютеров для VPN уровня 2: R10-172.16.200.1/24, R11172.16.200.2/24, R12-172.16.200.3/24 и R13-172.16.200.4/24.
е. Адреса компьютеров для VPN уровня 3: R10-172.16.1.2/24(1+4*0=1), R11172.16.2.2/24, R12-172.16.3.2/24 и R13-172.16.4.2/24.
Создаём в GNS3 проект с именем MPLS. Соберите в нём топологию,
изображённую на рис. 17.1 и добавьте в каждый маршрутизатор тап-интерфейс,
согласно номеру своей тап-сети. Например, если у вас тап-сеть 0, то для R1
options = -net nic,vlan6 -net tap,vlan6,script=no,downscript=no,ifname=tap001
1. Стартуем проект. Назначим имена, например для R0
[admin@R0] >system identity set name=R0
Проверим у всех маршрутизаторов соседей с помощью команды ip neighbour
print. Назначим адреса на тап-интерфейсы, например для R2
[admin@R2] >ip address add address=10.0.2.1/24 interface=ether7
Пропингуем Ubuntu, например для R2
[admin@R0] >ping 10.0.2.1
Для удобства работы используйте протокол ssh и закладки в терминальном
окне Ubuntu (см. рис. 2.3 и.2.4 из разделы 2).
Дайте табам имена
Для R0, R1, R2 и R3 (и только) обеспечьте взаимную связь через свою модель
Интернета, назначив шлюз на тап-интерфейс Ubuntu, например для R1
[admin@R0] >ip route add dst-address=10.0.0.0/16 gateway=10.0.1.2
Пропингуйте R0, R1, R2 и R3 между собой по адресам тап-интерфейсов.
На каждом филиале на внутренних маршрутизаторах R4, R5, R6 и R7
сделайте шлюз на внешний маршрутизатор R0, R1, R2 и R3, соответственно.
Например, для филиала 1 после назначения адресов
[admin@R1] >ip address add address=192.168.1.1/24 interface=ether1
229
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@R5] >ip address add address=192.168.1.2/24 interface=ether1
и обязательной проверки
[admin@R5] >ping 192.168.1.1
назначаем шлюз
[admin@R5] >ip route add gateway=192.168.1.1
2. Настроим NAT для исходящих адресов на маршрутизаторах R0 R1 R2 R2,
имеющих доступ в Интернет
/ip firewall nat add chain=srcnat action=masquerade out-interface=ether7
Из внешних маршрутизаторов R4, R5, R6 и R7 должны пинговаться адреса
10.0.4.1 10.0.5.1 10.0.6.1 10.0.7.1 тап-интерфейсов внутренних маршрутизаторов
R4, R5, R6 И R7.
Настроим NAT для входящих адресов на маршрутизаторах R0 R1 R2 R3.
Назначим на тап-интерфейсы R0, R1, R2 и R3 дополнительные адреса 10.0.0.22/24
10.0.1.22/24 10.0.2.22/24 10.0.3.22/24. Например, для R3
[admin@R3] >ip address add address=10.0.3.22/24 interface=ether7
Определим для R0, R1, R2 и R3 предпочтительные исходящие адреса для
маршрутизации 10.0.0.1/24, 10.0.1.1.24, 10.0.2.1/24 и 10.0.3.1/24, соответственно.
Например, для R3
[admin@R3] >ip route set 0 pref-src= 10.0.3.1
Введём правила преобразования адресов 192.168.0.2, 192.168.1.2, 192.168.2.2,
192.168.3.2 внутренних маршрутизаторов R4, R5, R6 и R7 во внешние адреса тапинтерфейсов маршрутизаторов R0, R1, R2 и R2. Например
[admin@R0] >/ip firewall nat add chain=dstnat action=dst-nat to-addresses=
192.168.0.2 dst-address=10.0.0.22
[admin@R1] >/ip firewall nat add chain=dstnat action=dst-nat to-addresses=
192.168.1.2 dst-address=10.0.1.22
[admin@R2] >/ip firewall nat add chain=dstnat action=dst-nat to-addresses=
192.168.2.2 dst-address=10.0.2.22
[admin@R3] >/ip firewall nat add chain=dstnat action=dst-nat to-addresses=
192.168.3.2 dst-address=10.0.3.22
Проверьте тщательно преобразования. Вы должны, поочерёдно находясь на
каждом из внутренних маршрутизаторов R4, R5, R6 и R7, соединятся по
протоколу telnet к адресам 10.0.0.22/24, 10.0.1.22/24, 10.0.2.22/24 и 10.0.3.22/24
тап-интерфейсов внешних маршрутизаторов R0, R1, R2 и R3 и попадать в
соответствующие внутренние маршрутизаторы R4, R5, R6 и R7.
3. Объединим филиалы с помощью VPN с использованием SSTP. Мы используем
схему соединения филиалов по протоколу SSTP номер 0 из рис. 17.3. Для других
схем настройка SSTP несколько отличается. Будьте внимательны.
Начнём с сертификатов. Перейдите в свою папку easy-rsa в Ubuntu. Создайте
корневой сертификат CA (Certificate Authority), необходимый для подписи
сертификатов клиента и сервера
. vars (через пробел)
./clean-all
./pkitool --initca
Создадим 3 сертификата s0, s1 и s2 сервера, например
230
grigoryev.victor@gmail.com http://vmg.pp.ua
./pkitool --server s1
и 3 сертификата с0, с1 и с2 клиента, например
./pkitool с0
Перепишем по ssh корневой сертификат на все внутренние компьютеры R4,
R5, R6 и R7, например scp ca.crt admin@10.0.4.1:. Перепишем по ssh сертификаты
и ключи для сервера в SSTP-сервера. Перепишем по ssh сертификаты и ключи для
клиента в SSTP-клиенты
Для топологии 0 нашего варианта 0 (рис. 17.3) перепишем с0, с1 и с2 в R4, а
s0, s1 и s2 в R5, R6 и R7, соответственно
Импортируем в R4
[admin@R4] >certificate import file-name=ca.crt
[admin@R4] >certificate import file-name=с0.crt
[admin@R4] >certificate import file-name=с1.crt
[admin@R4] >certificate import file-name=с2.crt
[admin@R4] >certificate import file-name=с0.key
[admin@R4] >certificate import file-name=с1.key
[admin@R4] >certificate import file-name=с2.key
На запрос passphrase – просто жмём enter. Переименовываем KR
сертификаты. Здесь и далее будьте внимательны с номерами после set. Для их
правильного назначения используйте команду certificate print detail.
[admin@R4] >certificate set 1 name=c0
[admin@R4] >certificate set 2 name=c1
[admin@R4] >certificate set 3 name=c2
Импортируем в R5
[admin@R5 >certificate import file-name=ca.crt
[admin@R5 >certificate import file-name=s0.crt
[admin@R5 >certificate import file-name=s0.key
Переименовываем KR сертификат
[admin@R5 >certificate set 1 name=s0
Импортируем в R6
certificate import file-name=ca.crt
certificate import file-name=s1.crt
certificate import file-name=s1.key
Переименовываем KR сертификат
[admin@R6] >certificate set 1 name=s1
Импортируем в R7
[admin@R7] >certificate import file-name=ca.crt
[admin@R7] >certificate import file-name=s2.crt
[admin@R7] >certificate import file-name=s2.key
Переименовываем KR сертификат
[admin@R7] >certificate set 1 name=s2
На SSTP-серверах добавляем имена, пароли, локальный и удалённый адреса
для SSTP-пользователей
[admin@R5>ppp secret add name=c0 password=c0 local-address=172.16.0.1
remote-address=172.16.0.2
231
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@R6>ppp secret add name=c1 password=c1 local-address=172.16.0.3
remote-address=172.16.0.4
[admin@R7>ppp secret add name=c2 password=c2 local-address=172.16.0.5
remote-address=172.16.0.6
Здесь адреса взяты произвольно. Каких либо рекомендаций по их выбору не
даётся.
Добавляем SSTP-сервера и определяем в них сертификаты
[admin@R5 >int sstp-server add name=s0 user=c0
[admin@R5] >int sstp-server server set enabled=yes certificate=s0 verifyclient-certificate=ye
[admin@R6 >int sstp-server add name=s1 user=c1
[admin@R6]>int sstp-server server set enabled=yes certificate=s1 verifyclient-certificate=ye
[admin@R7 >int sstp-server add name=s2 user=c2
[admin@R7] >int sstp-server server set enabled=yes certificate=s2 verifyclient-certificate=ye
Параметр user – не обязателен.
Добавляем 3 SSTP-клиента в R4 и определяем в них сертификаты. Помним,
что SSTP-клиенты подсоединяются к SSTP-серверам через NAT. Поэтому вместо
адресов
SSTP-серверов
указываем
адреса
соответствующих
внешних
маршрутизаторов.
[admin@R4] >interface sstp-client add certificate=c0 connect-to=10.0.1.22
name=c0 user=c0 password=c0 verify-server-certificate=yes disabled=no
[admin@R4] >interface sstp-client add certificate=c1 connect-to=10.0.2.22
name=c1 user=c1 password=c1 verify-server-certificate=yes disabled=no
[admin@R4] >interface sstp-client add certificate=c2 connect-to=10.0.3.22
name=c2 user=c2 password=c2 verify-server-certificate=yes disabled=no
На R4, R5, R6 и R7 должны появиться новые адреса из диапазона 172.16.0.1172.16.0.6. Пропингуйте из SSTP-клиентов соответствующие им SSTP-сервера по
динамически назначенным адресам
[admin@R4] >ping 172.16.0.1
[admin@R4] >ping 172.16.0.3
[admin@R4] >ping 172.16.0.5
С помощью команды interface bridge add добавим на R4, R5, R6 и R7
интерфейсы-петли в виде моста bridge1. Назначим на них адреса. Значения этих
адресов никак не регламентируются
[admin@R4] >ip address add address=4.4.4.4/32 interface=bridge1
[admin@R5] >ip address add address=5.5.5.5/32 interface=bridge1
[admin@R6] >ip address add address=6.6.6.6/32 interface=bridge1
[admin@R7] >ip address add address=7.7.7.7/32 interface=bridge1
4. Добьемся, чтобы R4, R5, R6 и R7 видели друг друга по этим адресам. В
качестве протокола маршрутизации возьмём
RIP. Помним, что надо
рекламировать сети, а не маршруты
[admin@R4] >ip ad pr
0 10.0.5.1/24
10.0.5.0
ether7
232
grigoryev.victor@gmail.com http://vmg.pp.ua
1 192.168.0.2/24 192.168.0.0 ether1
2 D 172.16.0.2/32
172.16.0.1
c0
3 D 172.16.0.4/32
172.16.0.3
c1
4 D 172.16.0.6/32
172.16.0.5
c2
5
4.4.4.4/32
4.4.4.4
bridge1
[admin@R4] >routing rip network add network=4.4.4.4/32
[admin@R4] >routing rip network add network=172.16.0.1/32
[admin@R4] >routing rip network add network=172.16.0.3/32
[admin@R4] >routing rip network add network=172.16.0.5/32
[admin@R5] >ip ad pr
0 10.0.5.1/24
10.0.5.0
ether7
1 192.168.1.2/24 192.168.1.0 ether1
2 D 172.16.0.1/32
172.16.0.2
s0
3
5.5.5.5/32
5.5.5.5
bridge1
[admin@R5] >routing rip network add network=5.5.5.5/32
[admin@R5] >routing rip network add network=172.16.0.2/32
[admin@R6] >ip ad pr
0 10.0.6.1/24
10.0.6.0
ether7
1 192.168.2.2/24 192.168.2.0 ether1
2 D 172.16.0.3/32
172.16.0.4
s1
3
6.6.6.6/32
6.6.6.6
bridge1
[admin@R6] >routing rip network add network=6.6.6.6/32
[admin@R6] >routing rip network add network=172.16.0.4/32
[admin@R7] >ip ad pr
0 10.0.7.1/24
10.0.7.0
ether7
1
192.168.3.2/24 192.168.3.0 ether1
2 D 172.16.0.5/32
172.16.0.6
s2
3
7.7.7.7/32
7.7.7.7
bridge1
[admin@R7] >routing rip network add network= 7.7.7.7/32
[admin@R7] >routing rip network add network= 172.16.0.6/32
Проверяем маршруты
[admin@R4] >ip route print
0AS
0.0.0.0/0
192.168.0.1
1
1 ADC
4.4.4.4/32
4.4.4.4
bridge1
0
2 ADr
5.5.5.5/32
172.16.0.1
120
3 ADr
6.6.6.6/32
172.16.0.3
120
4 ADr
7.7.7.7/32
172.16.0.5
120
5 ADC
10.0.4.0/24
10.0.4.1
ether7
0
6 ADC
172.16.0.1/32
172.16.0.2 c0
0
7 ADC
172.16.0.3/32
172.16.0.4 c1
0
8 ADC
172.16.0.5/32
172.16.0.6 c2
0
9 ADC
192.168.0.0/24
192.168.0.2 ether1
0
[admin@R5] >ip route print
0 A S 0.0.0.0/0
192.168.1.1
1
1 ADr 4.4.4.4/32
172.16.0.2
120
233
grigoryev.victor@gmail.com http://vmg.pp.ua
2 ADC
5.5.5.5/32
5.5.5.5
bridge1
0
3 ADr
6.6.6.6/32
172.16.0.2
120
4 ADr
7.7.7.7/32
172.16.0.2
120
5 ADC
10.0.5.0/24
10.0.5.1
ether7
0
6 ADC
172.16.0.2/32
172.16.0.1 s0
0
7 ADr
172.16.0.3/32
172.16.0.2
120
8 ADr
172.16.0.5/32
172.16.0.2
120
9 ADC
192.168.1.0/24 192.168.1.2 ether1
0
[admin@R6] >ip route print
0AS
0.0.0.0/0
192.168.2.1
1
1 ADr
4.4.4.4/32
172.16.0.4
120
2 ADr
5.5.5.5/32
172.16.0.4
120
3 ADC
6.6.6.6/32
6.6.6.6
bridge1
0
4 ADr
7.7.7.7/32
172.16.0.4
120
5 ADC
10.0.6.0/24
10.0.6.1
ether7
0
6 ADr
172.16.0.1/32
172.16.0.4
120
7 ADC
172.16.0.4/32
172.16.0.3 s1
0
8 ADr
172.16.0.5/32
172.16.0.4
120
9 ADC
192.168.2.0/24 192.168.2.2 ether1
0
[admin@R7] >ip route print
0AS
0.0.0.0/0
192.168.3.1
1
1 ADr
4.4.4.4/32
172.16.0.6
120
2 ADr
5.5.5.5/32
172.16.0.6
120
3 ADr
6.6.6.6/32
172.16.0.6
120
4 ADC
7.7.7.7/32
7.7.7.7
bridge1
0
5 ADC
10.0.7.0/24
10.0.7.1
ether7
0
6 ADr
172.16.0.1/32
172.16.0.6
120
7 ADr
172.16.0.3/32
172.16.0.6
120
8 ADC
172.16.0.6/32
172.16.0.5 s2
0
9 ADC
192.168.3.0/24
192.168.3.2 ether1
0
Глядя на таблицы маршрутов, мы на всех устройствах видим маршруты на
сети 4.4.4.4/32, 5.5.5.5/32, 6.6.6.6/32 и 7.7.7.7/32. Мы с уверенностью в успехе
запускаем расширенные пинги из R4, R5, R6 и R7 на адреса 4.4.4.4 5.5.5.5 6.6.6.6
7.7.7.7 интерфейсов-петель с адресом источника равным адресу локального
интерфейса-петли, например
[admin@R4] >ping 5.5.5.5 src-address=4.4.4.4
[admin@R4] >ping 6.6.6.6 src-address=4.4.4.4
[admin@R4] >ping 7.7.7.7 src-address=4.4.4.4
[admin@R5] >ping 6.6.6.6 src-address=5.5.5.5
[admin@R5] >ping 7.7.7.7 src-address=5.5.5.5
и т.д.
SSTP VPN уровня 3 настроена. Значит настроена и VPN уровня 2. Настроим
MPLS поверх VPN уровня 2. В MPLS-сети LSP организуем с помощью LDP.
5. Настраиваем LDP, добавляя в него SSTP-интерфейсы и указывая в
качестве транспортного адреса адрес моста
234
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@R4] >mpls ldp set enabled=yes transport-address=4.4.4.4 lsrid=4.4.4.4
[admin@R4] >mpls ldp interface add interface=c0
[admin@R4] >mpls ldp interface add interface=c1
[admin@R4] >mpls ldp interface add interface=c2
[admin@R5] >mpls ldp set enabled=yes transport-address=5.5.5.5 lsrid=5.5.5.5
[admin@R5] >mpls ldp interface add interface=s0
[admin@R6] >mpls ldp set enabled=yes transport-address=6.6.6.6 lsrid=6.6.6.6
[admin@R7] >mpls ldp interface add interface=s1
[admin@R7] >mpls ldp set enabled=yes transport-address=7.7.7.7 lsrid=7.7.7.7
[admin@R7] >mpls ldp interface add interface=s2
Проверим LDP-соседей командой mpls ldp neighbor print. Маршрутизатор
R4 выдаёт такие транспортные адреса соседей: 5.5.5.5, 6.6.6.6 и 7.7.7.7. И R5 и R6 и
R7 выдают адрес 4.4.4.4.
6. Настроим BGP. Мы отражателем маршрутов назначим маршрутизатор R5.
Настроим BGP сессии к отражателю от остальных внутренних маршрутизаторов
R4, R6 и R7. В качестве источника обновлений возьмём интерфейс-петлю bridge1.
В качестве адреса удалённого пира используем адрес его интерфейса-петли.
Предварительно проверьте доступность remote-address.
[admin@R5] >routing bgp instance set 0 client-to-client-reflection=yes
[admin@R5]>routing bgp peer add remote-address=4.4.4.4 remote-as=65530
update-source=bridge1 route-reflect=yes
[admin@R5]>routing bgp peer add remote-address=6.6.6.6 remote-as=65530
update-source=bridge1 route-reflect=yes
[admin@R5]>routing bgp peer add remote-address=7.7.7.7 remote-as=65530
update-source=bridge1 route-reflect=yes
[admin@R4] >routing bgp instance set 0 client-to-client-reflection=no
[admin@R4]>routing bgp peer add remote-address=5.5.5.5 remoteas=65530update-source=bridge1 route-reflect=no
[admin@R6] >routing bgp instance set 0 client-to-client-reflection=no
[admin@R6]>routing bgp peer add remote-address=5.5.5.5 remote-as=65530
update-source=bridge1 route-reflect=no
[admin@R7] >routing bgp instance set 0 client-to-client-reflection=no
[admin@R7]>routing bgp peer add remote-address=5.5.5.5 remote-as=65530
update-source=bridge1 route-reflect=no
Для R4, R5, R6 и R7 в winbox должно начать изменятся время BGP-сессии
в поле routing bgp peer Uptime. Обязательно проверьте. Если это поле пустодальнейшая работа бессмыслена. Проверьте маршрутизацию.
Переходим к топологии на рис. 17.2, добавьте компьютеры R10, R11, R12 и
R13 к существующей топологии и дайте им имена. Проверьте соседей у новых
компьютеров и назначьте адреса на тап-интерфейсы. Сохраните проект MPLS и
сделайте две копии: BGPVPLS и BGPVRF.
235
grigoryev.victor@gmail.com http://vmg.pp.ua
Создадим VPN уровня 2 типа BGP VPLS. Откроем проект BGPVPLS. На R4,
R5, R6 и R7 с помощью коменды interface bridge add name=vpls создадим мосты
с именем vpls и добавим в каждый из них интерфейсы, идущие в сторону
компьютеров
R10, R11, R12 и R13 локальных сетей филиалов: interface
bridge port add bridge=vpls interface=ether2. Назначим на компьютеры R10, R11,
R12 и R13 адреса согласно варианту. Для варианта V=0 имеем(рис. 17.4).
Рис. 17.4 Топология BGPVPLS
[admin@R10] >ip address add address=172.16.200.1/24 interface= ether1
[admin@R11] >ip address add address=172.16.200.2/24 interface= ether1
[admin@R12] >ip address add address=172.16.200.3/24 interface= ether1
[admin@R13] >ip address add address=172.16.200.4/24 interface= ether1
Установим для BGP-сессий семейства адресов l2vpn
[admin@R4]>routing bgp peer set 0 address-families=l2vpn
[admin@R5]>routing bgp peer set 0,1,2 address-families=l2vpn
[admin@R6]>routing bgp peer set 0 address-families=l2vpn
[admin@R7]>routing bgp peer set 0 address-families=l2vpn
Для настройки VPLS BGP выполните команды
[admin@R4]>interface vpls bgp-vpls add bridge= vpls bridge-horizon=1 routedistinguisher=4.4.4.4:1
site-id=4
export-route-targets=4:1
import-routetargets=5:1,6:1,7:1
[admin@R5]>interface vpls bgp-vpls add bridge= vpls bridge-horizon=1 routedistinguisher=5.5.5.5:1
site-id=5
export-route-targets=5:1
import-route236
grigoryev.victor@gmail.com http://vmg.pp.ua
targets=4:1,6:1,7:1
[admin@R6]>interface vpls bgp-vpls add bridge= vpls bridge-horizon=1 routedistinguisher=6.6.6.6:1
site-id=6
export-route-targets=6:1
import-routetargets=4:1,5:1,7:1
[admin@R7]>interface vpls bgp-vpls add bridge= vpls bridge-horizon=1 routedistinguisher=7.7.7.7:1
site-id=7
export-route-targets=7:1
import-routetargets=4:1,5:1,6:1
Проверим на маршрутизаторах R4, R5, R6 и R7 LDP-соседей командой mpls
ldp neighbor print. Видим, что каждый является соседом каждого.
На каждом маршрутизаторе автоматически создадутся по три VPLSинтерфейса, например
[admin@R4] > /interface vpls print
Flags: X - disabled, R - running, D - dynamic, B - bgp-signaled, C - cisco-bgp-signaled
0 RDB name="vpls1" mtu=1500 l2mtu=1500 mac-address=02:6E:3C:4F:4A:E0
arp=enabled disable-running-check=no remote-peer=5.5.5.5 cisco-style=no ciscostyle-id=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes
vpls=bgp-vpls1
1 RDB name="vpls2" mtu=1500 l2mtu=1500 mac-address=02:EE:3A:22:7B:CD
arp=enabled disable-running-check=no remote-peer=6.6.6.6 cisco-style=no ciscostyle-id=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes
vpls=bgp-vpls1
2 RDB name="vpls3" mtu=1500 l2mtu=1500 mac-address=02:3A:0B:F0:4A:C0
arp=enabled disable-running-check=no remote-peer=7.7.7.7 cisco-style=no ciscostyle-id=0 advertised-l2mtu=1500 pw-type=raw-ethernet use-control-word=yes
vpls=bgp-vpls1
Проверьте командой interface bridge port print, что эти интерфейсы
добавились в мост vpls.
Устройства R10, R11, R12 и R13 видят друг друга как соседи, например
[admin@R10] > ip neighbor pr
# INTERFACE ADDRESS
MAC-ADDRESS
IDENTITY VERSION BOARD
5 ether1 172.16.200.2
00:AA:00:92:A8:00
R11
5.5
x86
8 ether1 172.16.200.3
00:AA:00:2C:6B:00
R12
5.5
x86
10 ether1 172.16.200.4
00:AA:00:76:48:00
R13
5.5
x86
Проверьте, что устройства R13, R12, R10 и R11 пингуют друг друга по MACадресам и адресам (V=0) 172.16.200.1 172.16.200.2 172.16.200.3 172.16.200.4.
VPN уровня 2 типа BGP VPLS настроена.
8. Создадим VPN уровня 3 типа BGP VRF. Откроем проект BGPVRF.
Назначим во внутренних маршрутизаторах адреса на интерфейс ether2, идущий в
сторону компьютера локальной сети филиала. Для варианта V=0 имеем (рис. 17.5)
[admin@R4] >ip address add address=172.16.1.1/24 interface=ether2
[admin@R6] >ip address add address=172.16.2.1/24 interface=ether2
[admin@R7] >ip address add address=172.16.3.1/24 interface=ether2
[admin@R5] >ip address add address=172.16.4.1/24 interface=ether2
237
grigoryev.victor@gmail.com http://vmg.pp.ua
Рис. 17.5. Топология BGPVRF
Установим для BGP-сессий семейства адресов vpnv4
[admin@R4]>routing bgp peer set 0 address-families= vpnv4
[admin@R5]>routing bgp peer set 0,1,2 address-families= vpnv4
[admin@R6]>routing bgp peer set 0 address-families= vpnv4
[admin@R7]>routing bgp peer set 0 address-families= vpnv4
Используем сокращённую настройку VRF. Поместим в R4, R5, R6 и R7
интерфейс ether2, идущий в сторону локальной сети филиала в VRF с routedistinguisher
2:2 и назначим маркер маршрутов rm. Это осуществляется
командой
ip route vrf add routing-mark= rm interfaces= ether2 route-distinguisher=2:2
import-route-targets=2:2 export-route-targets=2:2
Укажем BGP в R4, R5, R6 и R7, что VRF с идентификатором 2:2 будут
участвовать в маршрутизации для семейства адресов vpnv4 с перераспределением
присоединённых маршрутов. Это осуществляется командой
routing bgp instance vrf add routing-mark=rm redistribute-connected=yes
Посмотрим на маршруты. Например для R4
[admin@R4] >ip route print detail where routing-mark=rm
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp,
o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
0 ADC dst-address=172.16.1.0/24 pref-src=172.16.1.1 gateway=vrf gatewaystatus=vrf reachable distance=0 scope=10 routing-mark=rm
238
grigoryev.victor@gmail.com http://vmg.pp.ua
1 ADb dst-address=172.16.2.0/24 gateway=6.6.6.6 gateway-status=6.6.6.6 recursive
via 172.16.0.3 c1 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:2:2"
2 ADb dst-address=172.16.3.0/24 gateway=7.7.7.7 gateway-status=7.7.7.7 recursive
via 172.16.0.5 c2 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:2:2"
3 ADb dst-address=172.16.4.0/24 gateway=5.5.5.5 gateway-status=5.5.5.5 recursive
via 172.16.0.1 c0 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:2:2"
[admin@R4] >routing bgp vpnv4-route pr
Flags: L - label-present
# ROUTE-DISTINGUISHER
DST-ADDRESS
GATEWAY IN..
0 L 2:2
172.16.2.0/24
6.6.6.6
c1
1 L 2:2
172.16.3.0/24
7.7.7.7
c2
2 L 2:2
172.16.4.0/24
5.5.5.5
c0
3 L 2:2
172.16.1.0/24
vrf
[admin@R5] >ip route print detail where routing-mark=rm
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp,
o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
0 ADb dst-address=172.16.1.0/24 gateway=4.4.4.4
gateway-status=4.4.4.4
recursive via 172.16.0.2 s0 distance=200 scope=40 target-scope=30 routingmark=rm
bgp-local-pref=100
bgp-origin=incomplete
bgp-extcommunities="RT:2:2"
1 ADb dst-address=172.16.2.0/24 gateway=6.6.6.6 gateway-status=6.6.6.6 recursive
via 172.16.0.2 s0 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:2:2"
2 ADb dst-address=172.16.3.0/24 gateway=7.7.7.7 gateway-status=7.7.7.7 recursive
via 172.16.0.2 s0 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:2:2"
3 ADC dst-address=172.16.4.0/24 pref-src=172.16.4.1 gateway=vrf gatewaystatus=vrf reachable distance=0 scope=10 routing-mark=rm
[admin@R5] >routing bgp vpnv4-route pr
Flags: L - label-present
# ROUTE-DISTINGUISHER DST-ADDRESS GATEWAY IN..
0 L 2:2
172.16.1.0/24
4.4.4.4
s0
1 L 2:2
172.16.2.0/24
6.6.6.6
s0
2 L 2:2
172.16.3.0/24
7.7.7.7
s0
3 L 2:2
172.16.4.0/24
vrf
[admin@R6] >ip route print detail where routing-mark=rm
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp,
o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
0 ADb dst-address=172.16.1.0/24 gateway=4.4.4.4 gateway-status=4.4.4.4 recursive
via 172.16.0.4 s1 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref= bgp-origin=incomplete bgp-ext-communities="RT:2:2"
239
grigoryev.victor@gmail.com http://vmg.pp.ua
1 ADC
dst-address=172.16.2.0/24 pref-src=172.16.2.1 gateway=vrf gatewaystatus=vrf reachable distance=0 scope=10 routing-mark=rm
2 ADb dst-address=172.16.3.0/24 gateway=7.7.7.7 gateway-status=7.7.7.7 recursive
via 172.16.0.4 s1 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:2:2"
3 ADb dst-address=172.16.4.0/24 gateway=5.5.5.5 gateway-status=5.5.5.5 recursive
via 172.16.0.4 s1 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:2:2"
[admin@R6] >routing bgp vpnv4-route pr
Flags: L - label-present
#ROUTE-DISTINGUISHER DST-ADDRESS GATEWAY IN..
0 L 2:2
172.16.1.0/24
4.4.4.4
s1
1 L 2:2
172.16.3.0/24
7.7.7.7
s1
2 L 2:2
172.16.4.0/24
5.5.5.5
s1
3 L 2:2
172.16.2.0/24
vrf
[admin@R7] >ip route print detail where routing-mark=rm
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp,
o - ospf, m - mme, B - blackhole, U - unreachable, P - prohibit
0 ADb dst-address=172.16.1.0/24 gateway=4.4.4.4 gateway-status=4.4.4.4 recursive
via 172.16.0.6 s2 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:2:2"
1 ADb dst-address=172.16.2.0/24 gateway=6.6.6.6 gateway-status=6.6.6.6 recursive
via 172.16.0.6 s2 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:2:2"
2 ADC dst-address=172.16.3.0/24 pref-src=172.16.3.1 gateway=vrf gatewaystatus=vrf reachable distance=0 scope=10 routing-mark=rm
3 ADb dst-address=172.16.4.0/24 gateway=5.5.5.5 gateway-status=5.5.5.5 recursive
via 172.16.0.6 s2 distance=200 scope=40 target-scope=30 routing-mark=rm bgplocal-pref=100 bgp-origin=incomplete bgp-ext-communities="RT:2:2"
admin@R7] >routing bgp vpnv4-route pr
Flags: L - label-present
#ROUTE-DISTINGUISHER DST-ADDRESS GATEWAY IN..
0 L 2:2
172.16.1.0/24
4.4.4.4
s2
1 L 2:2
172.16.2.0/24
6.6.6.6
s2
2 L 2:2
172.16.4.0/24
5.5.5.5
s2
3 L 2:2
172.16.3.0/24
vrf
Видим, что маршруты на сети 172.16.1.0/24 172.16.2.0/24 172.16.3.0/24
172.16.4.0/24 присутствуют во всех маршрутизаторах R4, R5, R6 и R7.
9. Назначим адреса на компьютеры, согласно варианту R10172.16.1+4*V.2/24, R11-172.16.2+4*V.2/24, R12-172.16 .3+4*V+2.2/24, R13-172.16 .
4+4*V.2/24. Для V=0 имеем
[admin@R10] >ip address add address=172.16.1.2/24 interface=ether1
[admin@R11] >ip address add address=172.16.2.2/24 interface=ether1
[admin@R12] >ip address add address=172.16.3.2/24 interface=ether1
240
grigoryev.victor@gmail.com http://vmg.pp.ua
[admin@R13] >ip address add address=172.16.4.2/24 interface=ether1
Для каждого компьютера проверьте связь по IP к маршрутизатору и затем
пропишите шлюзы
[admin@R10] >ip route add gateway=172.16.1.1
[admin@R11] >ip route add gateway=172.16.2.1
[admin@R12] >ip route add gateway=172.16.3.1
[admin@R13] >ip route add gateway=172.16.4.1
Теперь R10, R11, R12 и R13 видят друг друга по адресам 172.16.1.2,
172.16.2.2 172.16.3.2 172.16.4.2. То есть MPLS VRF VPN уровня 3 функционирует.
В отличие от VPN 2 Устройства R10, R11, R12 и R13 не видят друг друга как
соседи, а видят только физически присоединённые устройства, например
[admin@R10] > ip neighbor pr
# INTERFACE ADDRESS MAC-ADDRESS
IDENTITY VERSION
BOARD
0 ether1 172.16.1.1
00:AA:00:C2:5C:01
R4
5.5
x86
1 ether1 10.0.10.1
52:54:00:12:34:5C
R10
5.5
x86
2 ether7 172.16.1.1
00:AA:00:C2:5C:01
R4
5.5
x86
3 ether7 172.16.1.2
00:AA:00:23:42:00
R10
5.5
x86
Быстрый старт
Действующие резервные копии топологий BGPVRF и BGPVPLS
расположены на сайте eom.pp.ua (labs.mikrotik.com.ua). Начните работу над
курсовым проектом с изучения этих работающих конфигураций.
При восстановлении из резервных копий, используйте свои тап-интерфейсы
и рекомендуемые адреса для них. Это приведёт к необходимости редактировать
настройки, особенно во внешних маршрутизаторах R0, R1, R2 и R3.
Конфигурации содержат сертификаты, которые не восстанавливаются.
Следует создать сертификаты и импортировать их в маршрутизаторы до
восстановления всей конфигурации. Далее обязательно надо проверить сетевые
настройки для SSTP в которых фигурируют сертификаты.
Требование к отчёту и порядок сдачи проекта.
Отчёт должен содержать два скриншота топологий типа рис. 17.4 и 17.5,
адаптированных к своему варианту. Программу для выполнения скриншота
находится в меню Applications-Accessories-TakeScreeshot.
Текст отчёта повторяет вышеизложенный материал с адаптацией к своему
варианту. В отчёте все результаты команд вывода типа ip address print должны
быть текстовыми скриншотами реального вывода этих команд в консоли RouterOS
для работающего проекта согласно своего варианта. Текстовые скриншоты
создаются в консоли RouterOS с помощью мыши по технологии CopyPaste.
Для сдачи курсового проекта следует предъявить работающие топологии
BGPVPLS и BGPVRF. Эти проекты должны находится в вашей папке в Ubuntu на
сайте eom.pp.ua (labs.mikrotik.com.ua).
241
Download