Professional Documents
Culture Documents
Net Labs PDF
Net Labs PDF
Н А Ц І О Н А Л ЬН И Й ТЕХНІЧНИЙ УНІВЕРСИТЕТ
«ХАРКІВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ»
КОМП’ЮТЕРНІ МЕРЕЖІ
Лабораторний практикум
для студентів денної та заочної форм навчання
за спеціальністю «Комп’ютерна інженерія»
Затверджено
редакційно-видавничою
радою університету НТУ «ХПІ»,
протокол № 2 від 17.05.2019
Харків
НТУ «ХПІ»
2019
УДК 004.7
М44
ISBN 978-617-7771-78-3
УДК 004.7
М. В. Мезенцев,
ISBN 978-617-7771-78-3 М.Й. Заполовський,
В. І. Панченко, 2019
ЗМІСТ
Вступ ................................................................................................................ 4
Лабораторна робота 1. Знайомство з середовищем GNS3. IP-адресація ... 5
Лабораторна робота 2. Ознайомлення з мережною операційною
системою IOS компанії Cisco ....................................................................... 16
Лабораторна робота 3.Ознайомлення з мережною операційною системою
RouterOS фірми Mikrotik ............................................................................... 38
Лабораторна робота 4. Статична маршрутизація....................................... 56
Лабораторна робота 5. Організація об’єднання мереж за допомогою
протоколу ІР ................................................................................................... 67
Лабораторна робота 6. Динамічна маршрутизація .................................... 88
Лабораторна робота 7. Безкласова адресація і маски змінної довжини . 101
Лабораторна робота 8. Балансування каналів.......................................... 113
Лабораторна робота 9. Передача на канальному рівні. Протокол STP .. 123
Лабораторна робота 10. Віртуальні локальні мережі .............................. 142
Лабораторна робота 11. Протоколи транспортного рівня ТСР/ІР.
Протоколи ICMP та DHCP. Служба DNS................................................... 155
Лабораторна робота 12. Списки управління доступом. Захист мереж... 176
Лабораторна робота 13. Трансляція мережних адрес.............................. 194
Лабораторна робота 14. Технологія Проксі-сервер ................................. 203
Лабораторна робота 15. Віртуальні приватні мережі .............................. 216
Лабораторна робота 16. Технологія IPSec................................................ 236
Лабораторна робота 17. Технології бездротових мереж ......................... 251
Лабораторна робота 18. Технологія MPLS ............................................. 267
Лабораторна робота 19. Технологія MPLS L2VPN ................................ 281
Лабораторна робота 20. Технологія MPLS L3VPN ................................ 304
Лабораторна робота 21 Додаткові функції маршрутизаторів. Скрипти. 316
Лабораторна робота 22. Основи мережного програмування................... 335
Список літератури ..................................................................................... 357
3
ВСТУП
4
Лабораторна робота 1
5
Виникає питання, як в будь-якій IP-адресі виділити адресу мережі і
адресу хоста? На початку використання TCP/IP для вирішення цього питання
використовувалася класова система адресації. IP-адреси були розбиті на п'ять
класів, що не перетиналися. Розбиття було здійснене згідно зі значеннями
декількох перших біт у першому октеті.
Якщо перший біт у першому октеті дорівнює нулю, то це адреса класу
А. Адреси класу В починаються з бінарних «10». Адреси класу С – з
бінарних «110».
У адресах класу А адреса мережі розташовується в першому октеті. У
класі В для адресації мережі використовується перший і другий октети. У
класі С для адресації мережі використовується перший, другий і третій
октети. Використання класів D і E специфічне і тут не розглядається.
У сучасних мережах класи часто ігноруються, а використовується
безкласова IP-схема, заснована на масках підмереж.
Тут і далі ми використовуватимемо маски у вигляді послідовності
бінарних одиниць, що переходить в послідовність бінарних нулів загальною
довжиною в 32 біти. Маски прийнято записувати в десятковій формі подібно
до IP-адрес
111111111111111100000000000000 <->11111111 1111111 0000000 0000000
<->255 255 0 0 <-> 255.255.0.0
Маска підмережі є необхідним доповненням до ІР-адреси. Якщо біт в
ІР-адресі відповідає одиничному біту в масці, то цей біт в ІР-адресі
представляє номер мережі, а якщо біт в ІР-адресі відповідає нульовому біту в
масці, то цей біт в ІР-адресі представляє номер хоста. Так, для маски
255.255.0.0 і адреси 172.24.100.45 номер мережі буде 172.24.0.0, а для маски
255.255.255.0 номер мережі буде 172.24.100.0.
Інша форма запису маски – /N, де N – число одиниць в масці. Ця форма
використовується тільки у поєднанні з ІР-адресою. Наприклад, для маски
255.255.0.0 і адреси 172.24.100.45 пишуть 172.24.100.45/16.
Усі адреси класу А мають маску 255.0.0.0, адреси класу В – маску
255.255.0.0, а адреси класу С – маску 255.255.255.0. Зворотне твердження
неправомірне, оскільки при визначенні класу використовуються перші біти в
першому октеті адреси.
6
Якщо число нулів в масці дорівнює М, то число доступних адрес хостів
в підмережі дорівнює 2М-2. Тобто дві адреси в підмережі для адресації не
використовуються, вони мають специфічне значення. Одна з цих адрес, у
якої останні М біт дорівнюють нулю, називається адресою підмережі, а друга
з цих адрес, у якої останні М біт дорівнюють одиниці, – широкомовною
адресою. Так, для адреси 172.24.100.45/24 адреса підмережі дорівнює
172.24.100.0, а широкомовна адреса дорівнює 172.24.100.255. Число адрес в
підмережі становить 28-2 =254.
Адреси класу А і В складають близько 75 відсотків адресного простору.
Кількість мереж класів А і В приблизно дорівнює 17000. Придбання мережі
класу В, а тим більше класу А нині неможливо. Адреси класу С складають
близько 12,5 відсотків адресного простору. Кількість мереж класу С
приблизно складає 2,1 мільйона. На жаль, мережа класу С обмежена 254
адресами, що не відповідає потребам великих організацій, які не можуть
придбати адреси класу А або В.
7
Для побудови топології треба, використовуючи метод Drag-n-Drop
(обираємо об’єкт і утримуючи ліву кнопку миші перетягуємо його в потрібне
вікно), додати необхідні елементи з розділу All Devices в праве поле
головного вікна програми (рис. 1.2).
8
контекстне меню Configure на елементі РC1. Далі у вікні, що з’явиться,
необхідно перейти у закладку NIO UDP, та видалити всі рядки записів, крім
першого, у розділі NIOs (рис. 1.3).
Так само треба виконати налаштування для пристроїв РС2, РС3 та РС4.
При цьому слід залишити тільки відповідно 2, 3 та 4 рядки у розділі NIOs.
Справа в том, що GNS3 емулює роботу з кінцевими пристроями
(хостами) за допомогою VPCS за протоколом UDP.
Тепер необхідно виконати з’єднання всіх пристроїв в топології. Для
цього слід обрати вільний інтерфейс nio_udp пристрою РС1 (він повинен
мати червоний колір) та з’єднати його з вільним інтерфейсом комутатора
SW1 (наприклад 1). Якщо все зроблено правильно, GNS3 покаже з’єднання
зеленим кольором. Дплі виконанується з’єднання пристроїв, як показано на
рис. 1.4.
9
Рисунок 1.4 – Топологія
Тепер необхідно виконати налаштування VPCS, а саме задати ІР-
адреси для кожного хоста. Для цього слід обрати пункт меню Tools\VPCS.
Утиліта VPCS має інтерфейс командного рядка. Зовнішній вигляд вікна
VPCS наведено на рис. 1.5.
10
Рисунок 1.6 – Команда ір у VPCS
11
Рисунок 1.7 – Команда show в VPCS
12
працездатності мережі між двома вузлами. Наприклад, необхідно зайти на
хост 4 і пропінгувати хост 1. Для цього треба виконайти команду
VPCS[4]>ping 192.168.0.2
Результат виконання цієї команди зображено на рис. 1.8.
13
3. Що являє собою ІР-адреса (IPv4)?
4. Для чого використовується маска?
5. Які класи ІР-адрес існують і як їх розрізнити?
6. Як отримати ІР-адресу мережі та хоста (показати на прикладі)?
7. Як задати ІР-адресу у VPCS?
8. Як встановити відповідність між хостами у GNS3 та VPCS?
9. Для чого використовується команда ping?
10. Для чого використовується параметр –t команди ping?
14
2. Призначити хостам ІР-адреси згідно з одержаним варіантом (v = 1 –
12). ІР-адреси для хостів, що наведені на рис. 1.10, подані в табл. 1.2.
15
Лабораторна робота 2
16
Незалежно від того, як звертаються до мережного пристрою – через
консоль термінальної програми, приєднаної через нуль-модем до
COM- порту мережного пристрою, або у рамках сеансу протоколу Telnet –
цей пристрій можна перевести в один з таких режимів:
• Призначений для користувача – це режим перегляду, в якому
користувач може тільки переглядати певну інформацію про мережний
пристрій, але не може нічого змінювати. У цьому режимі запрошення має
вигляд типу Router>.
• Привілейований – підтримує команди налаштування і тестування,
детальну перевірку мережного пристрою, маніпуляцію з конфігураційними
файлами і доступ в режим конфігурації. У цьому режимі запрошення має
вигляд типу Router#.
• Режим глобальної конфігурації – реалізує потужні однорядкові
команди, які вирішують завдання конфігурації. У цьому режимі запрошення
має вигляд типу Router(config) #.
Команди в будь-якому режимі IOS розпізнає по перших унікальних
символах. При натисненні клавіши «TAB» IOS сам доповнить команду до
повного імені.
При введенні в командному рядку будь-якого режиму імені команди і
знака питання «?» на екран виводяться коментарі до команди. При введенні
одного знака «?» результатом буде список усіх команд режиму. На екран
може виводитися багато екранів рядків команд, тому іноді внизу екрану
з’являтиметься підказка – «More –». Для продовження слід натиснути «Enter»
або пробіл.
Команди режиму глобальної конфігурації визначають поведінку
системи в цілому. Окрім того, команди режиму глобальної конфігурації
включають команди переходу в інші режими конфігурації, які
використовуються для створення конфігурацій, що вимагають
багаторядкових команд. Для входу в режим глобальної конфігурації
використовується команда привілейованого режиму configure. При введенні
цієї команди слід вказати джерело команд конфігурації: terminal (термінал),
memory (незалежна пам’ять або файл), network (сервер tftp (Trivialftp-
17
зпрощений ftp) в мережі). За умовчанням команди вводяться з терміналу
консолі.
Наприклад:
Router#configure terminal
Router(config)#(commands)
Router(config)#exit
Router#
Команди для активізації приватного виду конфігурації повинні
передувати командами глобальної конфігурації. Так, для конфігурації
інтерфейсу, на можливість якої вказує запрошення Router(config-if)#,
спочатку вводиться глобальна команда для визначення типу інтерфейсу і
номера його порту :
Router#conf t
Router(config)#interface type port
Router(config-if)#(commands)
Router(config-if)#exit
Router(config)#exit
Для обмеження доступу до системи використовуються паролі. Команда
lineconsole встановлює пароль на вхід на термінал консолі:
Router(config)#lineconsole 0
Router(config-line)#login
Router(config-line)#password cisco
Команда linevty 0 4 встановлює парольний захист на вхід по протоколу
Telnet:
Router(config)#linevty 0 4
Router(config-line)#login
Router(config-line)#password сisco
Команда enable password обмежує доступ до привілейованого режиму:
Router#conf t
Router(config)#enable password пароль
Далі
Ctrl-Z
Router#ex
…
Press RETURN to get started.
Router>en
Password: пароль
Router#
Тут «пароль» – послідовність латинських символів.
18
Для встановлення на мережному інтерфейсі IP-адреси
використовується команда
Router(config-if)#ip address [ip-address] [subnet-mask]
Важливо мати можливість контролю правильності функціонування та
стану мережного пристрою в будь-який момент часу. Для цього служать
певні команди (табл. 2.1).
19
Для виводу інформації про сусідні пристрої, виявлені по протоколу
CDP, використовується сімейство команд show cdp. Вони виводять наступні
дані по кожному порту і по кожному приєднаному до нього пристрою:
ідентифікатори пристроїв, список адрес, ідентифікатор порту, перелік
функціональних можливостей, апаратна платформа пристроїв.
20
Команда traceroute показує адреси проміжних інтерфейсів (хопів) на
шляху пакетів в пункт призначення:
Router>traceroute 172.16.101.1
Розширена версія команди ping підтримується тільки в
привілейованому режимі. Для того щоб увійти до розширеного режиму,
необхідно в рядку підказки Extended commands ввести букву «y» (Yes).
Команда в режимі діалогу опитує значення параметрів. Важливо
відмітити, що ця команда дозволяє, знаходячись на одному пристрої,
перевіряти зв’язок між мережними інтерфейсами на інших пристроях:
Router#ping
Protocol [ip]:
Target IP address:2.2.2.2
Repeat count [5]:
Datagram size [100]:
Timeout in seconds [2]:
Extended commands [n]:y (вхід в розширений режим)
Source address:1.1.1.1 (адрес з якого йде ping)
Type of service [0]:
Set DF bit in IP header? [no]:
Validate reply data [no]:
Data pattern [OxABCD]:
Loose, Strict, Record, Timestamp, Verbose [none]:
Sweep range of sizes [n]:
Параметри в квадратних скобках є параметрами за замовчуванням.
Якщо влаштовує такий параметр – то необхідно лише підтвердити команду,
натиснувши «Еnter»; вводити текст в скобках не потрібно.
Команда telnet
21
його консоллю. Мережні пристрої Cisco здатні підтримувати одночасно до
п’яти вхідних сеансів протоколу Telnet.
Налаштування GNS3
22
Рисунок 2.2 – Топологія мережі
Роутер Адаптери
Router1 slot0 = NM-1E
Router2 slot0 = NM-1E; slot1 = NM-4T
Router3 slot0 = NM-4T
23
Тепер ви підключені до мережного пристрою і знаходитеся в
командному рядку в даному випадку в привілейованому режимі. Тут
«Router1» – це ім’я мережного пристрою, а «#» означає, що ви знаходитеся в
привілейованому режимі.
2. Увійдіть команду disable, щоб потрапити в режим користувача:
Router#disable
Router>
3. Щоб повернутися в привілейований режим, просто надрукуйте
enable. З режиму користувача введіть logout або exit, щоб покинути
мережний пристрій:
Router#disable
Router>exit
Router1 con0 is now available
Press RETURN to get started.
24
визначення місця знаходження. Встановіть «Rl» як ім’я вашого мережного
пристрою:
Router(config)#hostname R1
R1(config)#
7. Пароль доступу дозволяє вам контролювати доступ в
привілейований режим. Це дуже важливий пароль, тому що в
привілейованому режимі можна вносити конфігураційні зміни. Встановіть
пароль доступу «cisco»:
R1(config)#enable password cisco
8. Давайте випробуємо цей пароль. Вийдіть з мережного пристрою і
спробуйте зайти в привілейований режим.
R1>en
Password:*****
R1#
Тут знаки ***** – це ваш ввід пароля. Ці знаки на екрані невидимі.
Основні Show-команди
25
5. Дві команди дозволять вам повернутися до команд, введених раніше.
Натисніть на стрілку вгору або на <ctrl>+р.
6. Дві команди дозволять вам перейти до наступної команди,
збереженої в буфері. Натисніть на стрілку вниз або на <ctrl>+n.
7. Можна побачити список хостів і IP-адреси усіх їх інтерфейсів
R1>show hosts
8. Наступна команда виведе детальну інформацію про кожен інтерфейс
R1>show interfaces
9. Команда
R1>show sessions
виведе інформацію про кожну telnet-сесію.
10. Команда
R1>show terminal
показує конфігураційні параметри терміналу.
11. Можна побачити список усіх користувачів, приєднаних до
пристрою по термінальних лініях,
R1>show users
12. Команда
R1>show controllers
показує стан контролерів інтерфейсів.
13. Перейдіть в привілейований режим.
R1>en
14. Введіть команду для перегляду усіх доступних show-команд.
R1#show ?
Привілейований режим включає усі show-команди призначеного для
користувача режиму і ряд нових.
15. Подивіться активну конфігурацію в пам’яті мережного пристрою.
Потрібний привілейований режим. Активна конфігурація автоматично
зберігається і буде втрачена у разі збою електроживлення:
R1#show running-config
У рядку --More-- натисніть на клавішу enter для перегляду наступної
сторінки інформації.
16. Наступна команда дозволить вам побачити поточний стан
протоколів третього рівня
R1#show protocols
26
Введення в конфігурацію інтерфейсів
27
Ввімкніть інтерфейс.
R2(config-if)#no shutdown
Тепер, коли інтерфейси на двох кінцях Ethernet-з’єднання ввімкнені, на
екрані з’явиться повідомлення про зміну стану інтерфейсу на активний.
7. Перейдіть до конфігурації послідовних інтерфейсів. Зайдіть на R2.
R2#conf t
R2(config)#int s1/0
R2(config-if)#clock rate ?
Оберіть частоту 64000:
R2(config-if)#clock rate 64000
та підійміть інтерфейс
Router1(config-if)#no shut
7. Перейдіть до маршрутизатора Router3 и змініть йому так саме ім’я на
R3. Підійміть на ньому інтерфейс Serial0/0. Тепер, коли інтерфейси на обох
кінцях послідовного з’єднання включені, на екрані з’явиться повідомлення
про зміну стану інтерфейсу на активне.
8. Перевірте на кожному пристрої, що конфігуровані нами інтерфейси
знаходяться в стані UP:
R1#sh int e0/0
R2#sh int e0/0
R2#sh int s1/0
R3#sh int s0/0
CDP
28
Можнп побачити, що маршрутизатор R2 сполучений з інтерфейсом
Ser 0/0 (Port ID) маршрутизатора R (Capability) R3 (Device ID) серії 3640
(Platform) через інтерфейс Ser 1/0 (Local Intrfce) і з інтерфейсом Eth 0/0
маршрутизатора R1 серії 3640 через інтерфейс Eth 0/0.
3. На R2 введіть команду для детальнішої інформації про сусідів
R2#show cdp neighbors detail
Ця команда показує по одному пристрою за раз. Вона використовується
для відображення адресної інформації мережного рівня. На даний момент
цей рівень не налагоджений, тому поле Entry address(es) порожнє. Команда
також виводить інформацію про версію IOS.
4. На R2 введіть команду, щоб дізнатися інформацію про пристрій
Router3:
R2#show cdp entry R3
Ця команда дає ту ж інформацію, як і show cdp neighbor detail, але для
одного конкретного пристрою. Пам’ятайте, що імена хостів чутливі до
регістра.
5. На пристрої R2 введіть команду, щоб побачити, як часто R2 посилає
сусідам оновлення CDP і як довго у сусідів вони повинні зберігатися:
R2#show cdp
29
і знову включити для усього пристрою:
R2(config)#cdp run
7. Іноді необхідно відключити CDP для певного інтерфейсу, наприклад,
при його вузькій смузі пропускання або з метою безпеки. На пристрої R2
відключіть CDP на інтерфейсі Ethernet0/0.
R2(config)#interface Ethernet 0/0
R2(config-if)#no cdp enable
R2(config)#(Ctrl+Z)
R2#show cdp interface
У отриманому вікні ми не побачими відомостей про Ethernet 0/0.
30
6. Подивіться детальну IP-інформацію про кожен інтерфейс і
переконайтеся, що відконфігуровані інтерфейси перейшли в стан UP:
R1#show ip interface
R2#show ip interface
R3#show ip interface
7. Коротку інформацію можна отримати командою show ip interface
brief, наприклад:
R2#show ip in bri
Успішно.
9. Поверніться на R1. З нього можна успішно пропінгувати адресу
10.1.1.1 безпосередньо приєднаного інтерфейсу Ethernet 0/0 на пристрої R2. З
R3 можна успішно пропінгувати адресу 172.17.72.1 безпосередньо
приєднаного інтерфейсу Serial 1/0 на пристрої R2. Спробуйте пропінгувати
інтерфейс Ethernet 0/0 на пристрої R2:
R3#ping 10.1.1.1
31
10. Поверніться на R1. Спробуйте пропінгувати адресу 172.17.72.1
інтерфейсу Serial1/0 на пристрої R2. Невдача. Спробуйте пропінгувати
адресу 172.17.72.2 інтерфейсу Serial 0/0 на пристрої R3. Невдача.
Невдачі виникли тому, що на маршрутизаторах не налаштована
маршрутизація.
11. Зайдіть на пристрій R2. Визначите шляхи проходження пакетів на
Router2
R2#traceroute 10.1.1.2
і R3
R2#traceroute 172.17.72.2
Можна побачити по одному хопу.
12. Виконайте команду розширеного пінгу від адреси 10.1.1.2 до адреси
172.17.72.2:
R2#ping
…
Target IP address: 172.17.72.2
…
Extended commands [n]: y
Source address or interface: 10.1.1.1
Telnet
32
4. Можна побачити прохання ввести пароль. Введіть пароль cisco і
натисніть <enter>. При цьму ім’я мережного пристрою поміняється на «R2»,
тому, що було встановлено telnet-з’єднання з R2. Команда
R2>show user
R1#resume 1
R2#
7. Тепер ім’я хоста знову помінялося на R2. Натисніть комбінацію
Ctrl+Shift+6 і клавішу x, щоб повернутися назад на R1.
8. Закрийте сесію
R1#disconnect 1
33
Рисунок 2.3 – Зберігання проекту
34
11. Яку інформацію можна подивитися командами show в
призначеному для користувача режимі?
12. Яку інформацію можна подивитися командами show в
привілейованому режимі, але не можна подивитися в призначеному для
користувача режимі?
13. Як підняти інтерфейс і визначити його стан?
14. Як призначити IP-адресу на інтерфейс і переконатися, що вона
призначена?
15. Чому можуть не проходити пінги між пристроями?
16. Як припинити і відновити telnet-сесію. Як закрити telnet-з’єднання?
35
Тип зв’язків між вузлами мережі оберіть відповідно з варіантом, наданим
у табл. 2.3
36
Таблиця 2.5 – Приклад визначення адрес
Пристрій Інтерфейс Адреса
R1 i13 1.1.1.1
R1 i12 1.1.2.1
R2 i21 1.1.2.2
R2 i23 1.101.1.1
R3 i31 1.1.1.2
R3 i32 1.101.1.2
37
Лабораторна робота 3
CLI
38
Кожну команду можна виконати, задавши повний шлях до неї у
командному рядку. Для цього перед командою ставиться знак «/».
Наприклад: /ip route print. Замість набору кожного разу шляху ip route для
виконання команди в цьому меню можна просто перейти в це меню.
Наприклад
[admin@MikroTik] >ip route
[admin@MikroTik] ip route>print
Для переходу на одну команду вверх необхідно виконати «..». Для
переходу у корінь необхідно виконати «/».
Також можна використовувати «/» та «..» для виконання команд з
другого рівня меню без зміни поточного рівня.
Швидкий набір
39
знайти команду, що починається із частини набраного слова. Якщо знайдено
тільки один збіг, то частина команди, що залишилася, буде автоматично
додана:
[admin@MikroTik] > /inte[Tab] /interface _
Якщо знайдено більше одного збігу та всі вони починаються з набраної
частини, то буде виведена максимально можлива довжина, потім слово
відрізається й нічого не додається у кінець:
[admin@MikroTik] > /interface set e[Tab]/interface set
ether_
Якщо ви набрали тільки основну частину й один раз натиснули клавішу
[Tab], це не буде мати ефекту. Однак, натиснувши [Tab] другий раз, вам
будуть відображені усі можливі варіанти:
[admin@MikroTik] > interface set e[Tab]_
[admin@MikroTik] > interface set ether[Tab]_
[admin@MikroTik] > interface set ether[Tab]_
ether1 ether5
Клавіша [Tab] може бути використана в іншому контексті, де консоль
може знайти ключі до можливих значень – імен команд, імен аргументів,
аргументів, що мають кілька можливих значень (назви елементів списків або
назви протоколів в firewall- і NAT-правилах). Ви не можете прискорювати
набір номерів, IP-адрес і інших подібних значень.
Інший шлях зменшення натискання клавіш – це скорочення команд і
аргументів. Ви можете набирати тільки початок команди, і, якщо воно (ім’я
команди) не повне, консоль прийме її як повне ім’я команди.
Вбудована допомога
Основні команди
40
Опис команд
41
Вхідні параметри команди set:
1) copy-from – скопіювати існуючий елемент. Ця дія встановлює
значення за замовчуванням властивостей нових елементів, узятих з інших
елементів;
2) place-before – помістити новий елемент перед існуючим елементом.
Положення попереднього елемента необхідно вказати. У противному разі
необхідно використовувати команду move після додавання елемента в
список;
3) disabled – керування станом відключено/включено нового доданого
елемента;
4) comment – вставити коментар для нового створеного елемента.
Команда add виводить внутрішній номер елемента, якщо він доданий,
команда remove – видаляє елемент(и) із списку. Вхідні параметри команди
remove – це номер(и) або ім’я(імена) елемента(ів) для видалення.
Команда move – змінює порядок проходження елементів у списку.
Послідовна нумерація елементів після виконання команди move змінюється,
тому краще перешикувати список, використовуючи команду print щораз
після використання команди move.
Вхідні параметри команди move:
1) перший аргумент визначає за номером елемент, що пересувається;
2) другий аргумент визначає, перед яким елементом буде розміщений
переміщуваний.
Команда find має аргументи, як і команда set, і доповнюється
аргументами, отриманими в результаті виконання команди print.
Команда edit застосовується скрізь, де працює команда set; вона
використовується для редагування властивостей елемента.
Безпечний режим
42
Зазвичай безпечний режим використовується для мінімізації ризиків
при настроюванні. Перехід у безпечний режим здійснюється натисканням
клавіш [Ctrl]+[X]. Для виходу з безпечного режиму слід повторно натисніть
[Ctrl]+[X].
Повідомлення безпечного режиму відображається й зміни негайно
застосовуються, щоб показати, що ви перебуваєте в безпечному режимі. Всі
зміни конфігурації, які зроблені (також з інших сеансів) поки маршрутизатор
перебуває у безпечному режимі, автоматично скидаються, якщо безпечний
режим завершується некоректно.
Якщо під час безпечного режиму було зроблено занадто багато змін і
якщо немає можливості тримати їх в історії (поточна історія може містити до
100 нових записів), то сеанс автоматично переходить у безпечний режим, без
автоматичного скасування змін. У такий спосіб краще змінювати
конфігурацію поступово (маленькими кроками), поки ви перебуваєте в
безпечному режимі.
WebFig
Winbox
43
3.3. Практична частина
Налаштування GNS3
44
Після натискання клавіші «і» необхідно дати згоду на їх встановлення
(двічі натиснути клавішу «y»). Після закінчення встановленя слід закрити
вікно з Qemu (тому що програма переходить знову на встановлення ОС).
Протестуйте запуск RouterOS, для цього у командному рядку з
каталогу GNS оберіть команду:
qemu images\mikrotik-5.26.img
45
«>». Далі оберіть Type = Qemu Guest та у полі Name введіть Mikrotik.
Натисніть на кнопку Apply та потім на OK (рис. 3.3).
Якщо все зроблено вірно, в списку All devices повинен з’явитися новий
елемент – Mikrotik.
Встановіть OpenVPN-клієнт (є в комплекті програм, що видає
викладач). При встановленні клієнта програма установки встановить також
один віртуальний мережний адаптер «TAP-Win32 Adapter V9». Встановіть
ще 2 віртуальних адаптери. Для цього виконайте з каталогу OpenVPN\BIN
двічі файл addtap.bat. Задайте встановленим адаптерам ім’я відповідно tap0,
tap1, tap2. (Перейдіть у налаштування мережних адаптерів: Панель
керування – Центр керування мережами та загальним доступом –
Змінення параметрів адаптерів. З контекстного меню кожного адаптера
«TAP-Win32 Adapter V9» оберіть пункт «Перейменувати». Ці адаптери
будуть використовуватися для доступу до маршрутизаторів Mikroitk.
Створіть новий проект (при створенні потрібно обрати два пункти:
Save nvrams… та Unbase images…) (рис. 3.4).
46
Рисунок 3.4 – Налаштування проекту
47
При необхідності додавайте ще tap-інтерфейси для нових маршрутизаторів
через addtap.bat
48
[admin@MikroTik] /system>
Натисніть <TAB> для перегляду доступних команд.
Командний процесор використовує кольорове зораження інформації:
пункти меню, що мають підменю, виділяються блакитним кольором, кінцеві
команди – пурпурним.
4. Ім’я хоста мережного пристрою використовується для локальної
ідентифікації. Коли ви входите в мережний пристрій, ви бачите ім’я хоста
після імені користувача та символа @. Це ім’я може бути використане для
визначення місця знаходження. Встановіть «Rl» як ім’я вашого мережного
пристрою.
[admin@MikroTik] /system> identity set name=R1
[admin@R1] /system>
Отримайте інформацію про час роботи системи, про встановлені
пакети, ресурсах апаратного забезпечення, на якому працює RouterOS.
Наведіть історію виконаних команд. Задайте маршрутизатору Router2 ім’я
R2, а Router3 – ім’я R3.
5. Для роботи з маршрутизатором за замовчуванням використовується
користувач admin без паролю. Для роботи з користувачами є команда user.
Пароль доступу дозволяє вам контролювати доступ на маршрутизатор:
[admin@R1] > user
[admin@R1] /user>
Додайте користувача з ім’ям, яке дорівнює вашому імені. Задайте
пароль та права повного доступу. Вийдіть з системи. Зайдіть на
маршрутизатор за допомогою створеного користувача. Тимчасово забороніть
вхід користувачу за замовченням (admin). Спробуйте зайти на
маршрутизатор в якості користувача admin. Поверніть налаштування у
вихідний стан.
49
Отримайте скорочену та детальну інформацію про інтерфейси Ethernet:
[admin@R1] /interface> ethernet print
[admin@R1] /interface> ethernet print detail
Визначити який інтерфейс відповідає tар-інтерфейсу.
2. За допомогою команди monitor-traffic продивіться статистику
передачі інформації по інтерфейсу ether1.
50
[admin@R3] /ip> address add address=172.17.72.2/24
interface=ether2
6. На кожному пристрої побачьте інформацію про сусідів та зрівняйте її
з інформацією, яку ви отримали, виконуючи п. 2.
7. Підключіться до пристрою R2. Ви повинні успішно пропінгувати
безпосередньо приєднаний інтерфейс е0 на пристрої R1 та інтерфейс е1
пристрою R3:
[admin@R2] > ping 10.1.1.2
(Ctrl+C)
Успішно.
8. Поверніться на R1. Ви повинні успішно пропінгувати адресу 10.1.1.1
безпосередньо приєднаного інтерфейсу e0 на пристрої R2. Поверніться на R3.
Ви повинні успішно пропінгувати адресу 172.17.72.1 безпосередньо
приєднаного інтерфейсу e1 на пристрої R2. Спробуйте пропінгувати
інтерфейс e0 на пристрої R2:
[admin@R3] > ping 10.1.1.1
51
11. Виконайте команду розширеного пінгу від адреси 10.1.1.2 до адреси
172.17.72.2:
[admin@R2] > ping 172.17.72.2 src-address=10.1.1.1
Telnet
52
маршрутизаторами та робочою станцією є можливим. Для цього виконайте
пінг з командного рядка операційної системи на ІР-адреси 192.168.0.1,
192.168.1.1 та 192.168.2.1.
Зайдіть у будь-який браузер та у рядку з адресою введіть
http://192.168.0.1. Ви повинні потрапити у Web-інтерфейс налаштування
маршрутизатора R1. Структура команд у Web-інтерфейсі аналогічна
структурі команд при роботі з консоллю (рис. 3.6).
53
Робота з маршрутизатором через утиліту WinBox
54
3.4. Контрольні питання
55
3.6 Завдання для самостійної роботи
56
Лабораторна робота 4
СТАТИЧНА МАРШРУТИЗАЦІЯ
57
Приклад таблиці маршрутизації:
Мережа Маска Інтерфейс Метрика
10.1.1.0 255.255.255.0 Ethernet0 0
172.17.72.0 255.255.255.0 Ethernet1 0
Маршрутизація за замовчуванням
58
притулку (last resort). Маршрути за замовчуванням використовуються, коли
маршрутизатор не може поставити у відповідність до мережі призначення
рядок в таблиці маршрутів. Маршрутизатор повинен використовувати
маршрут за замовчанням для відсилання пакетів іншому маршрутизатору.
Наступний маршрутизатор матиме маршрут до цієї мережі призначення або
матиме свій маршрут за замовчанням до третього маршрутизатора і так далі.
Наприкінці пакет буде відправлений на маршрутизатор, що має маршрут до
мережі призначення.
Маршрут за замовчанням може бути статично введений
адміністратором або динамічно отриманий з протоколу маршрутизації.
Оскільки усі IP-адреси належать мережі 0.0.0.0 з маскою 0.0.0.0, то
чином додавання запису у таблицю маршрутизації про мережу 0.0.0.0 з
маскою 0.0.0.0 є маршрутом за замовчуванням.
Ручне завдання маршруту за замовчанням на кожному маршрутизаторі
підходить для простих мереж. У складних мережах необхідно організувати
динамічний обмін маршрутами за замовчуванням.
Інтерфейс-петля
Команда trace
59
зв’язку між відправником і одержувачем, вона перевіряє кожен крок на
шляху. Команда trace використовує здатність маршрутизаторів генерувати
повідомлення про помилку при перевищенні пакетом свого встановленого
часу життя (Time To Live, TTL). Ця команда посилає декілька пакетів і
виводить на екран дані про час проходження туди і назад для кожного з них.
Перевага команди trace полягає в тому, що вона показує черговий досягнутий
маршрутизатор на шляху до пункту призначення. Це дуже потужний засіб
для локалізації відмов на шляху від відправника до одержувача. Варіанти
відповідей утиліти trace для пристроїв Cisco:
Символ Значення
!H Зондуючий пакет був прийнятий маршрутизатором, але не
переадресований, що зазвичай буває із-за списку доступу
P Протокол недосяжний
N Мережа недосяжна
U Порт недосяжний
* Перевищення часу очікування
60
Призначте для інтерфейсів відповідних маршрутизаторів наступні
ІР-адреси:
Статичні маршрути
Router2:
61
Router3:
62
Налаштуйте ІР-адресу хоста С1. Для цього в консолі VPCS виконайте
команду:
VPCS[1]> ip 192.168.0.33/24 192.168.0.1
Адреса 192.168.0.1 – це адреса маршрутизатора, до якого підключений
хост. Якщо з хоста відсилається пакет з ІР-адресою мережі, яка не дорівнює
192.168.0.0/24, то цей пакет за замовчуванням буде відісланий
маршрутизатору (192.168.0.1), який повинен визначити шлях для цього
пакета.
Тепер усі пристрої попарно пінгуються. Перевірте це.
Маршрутизація за замовчуванням
Loopback
63
2. Задайте ІР-адресу для створеного інтерфейсу
Router1(config-if)#ip address 15.0.0.1 255.0.0.0
3. З Router3 спробуйте пропінгувати створену петлю.
64
2. Тип маршрутизатора оберіть виходячи з табл. 4.1. Зверніть увагу,
що підключення робочої станції до маршрутизатора Mikrotik
виконується через комутатор:
65
4. Призначте інтерфейсам адреси, згідно з варіантом (v=1–16) з
табл. 4.2. Усі маски дорівнюють 255.255.255.0.
66
Лабораторна робота 5
Технологія Ethernet
67
Кадр Ethernet II
P DA SA Type Data FCS
8 6 6 2 46 – 1500 4
68
заповнюються виготовлювачем; деякі мережні адаптери дозволяють
встановлювати для них довільну MAC-адресу;
б) широкомовну (broadcast) адресу – складається із усіх одиниць
(0xFFFFFFFFFFFF), вказує на те, що даний кадр повинен бути отриманий
всіма вузлами мережі;
в) групову (multicast) адресу – перший біт старшого байта дорівнює 1, в
інших бітах зберігається номер групи вузлів, для яких призначений даний
кадр.
4) поле SA (Source Address, адреса джерела) – містить MAC-адресу
відправника кадру (завжди є індивідуальною адресою);
5) поле Type (тип) – вказує на протокол верхнього рівня, чиї дані
передаються в кадрі (фактично, виконує функції полів DSAP і SSAP із
заголовка кадру LLC);
6) поле Length (довжина) – містить розмір поля Data (у байтах);
7) поле Data (дані) – містить дані, передані протоколом верхнього
рівня;
8) поле FCS (Frame Check Sequence, контрольна послідовність кадру) –
містить контрольну суму кадру, обчислену за алгоритмом CRC-32;
9) поля DSAP, SSAP і Control становлять заголовок LLC-Кадру;
10) поле ProtID (ідентифікатор протоколу) – дозволяє використовувати
кадри Ethernet для передачі даних більш широкої множини протоколів
верхнього рівня. Це поле складається із двох підполів: OUI та Type.
Трибайтове підполе OUI (Organizationally Unique Identifier, організаційно-
унікальний ідентифікатор), зберігає номер організації, що контролює коди
протоколів у двобайтовому підполі Type (тип). IEEE присвоєний OUI =
0x00000.
Протокол ARP
69
Даний протокол дуже розповсюджений і надзвичайно важливий.
Кожний вузол мережі має як мінімум дві адреси: фізичну й логічну. У мережі
Ethernet для ідентифікації джерела й одержувача інформації
використовуються обидві адреси. Інформація, що пересилається від одного
комп’ютера іншому по мережі, містить у собі фізичну адресу відправника,
IP-адресу відправника, фізичну адресу одержувача й IP-адресу одержувача.
ARP-протокол забезпечує зв’язок між цими двома адресами. Існує чотири
типи ARP-повідомлень: ARP-запит (ARP request), ARP-відповідь (ARP reply),
RARP-запит (RARP-request) і RARP-відповідь (RARP-reply). Локальний хост
за допомогою ARP-запиту запитує фізичну адресу хоста-одержувача.
Відповідь (фізична адреса хоста-одержувача) приходить у вигляді ARP-
відповіді.
Перед тим як створити підключення до якого-небудь пристрою в
мережі, IP-протокол перевіряє свій ARP-кеш щоб з’ясувати, чи не
зареєстрована в ньому вже потрібна для підключення інформація про хост-
одержувача. Якщо такого запису в ARP-кеші немає, то виконується
широкомовний ARP-запит. Цей запит для пристроїв у мережі має такий
зміст: «Хто-небудь знає фізичну адресу пристрою, що володіє наступною IP-
адресою?» Коли одержувач прийме цей пакет, то він відповідає: «Так, це моя
IP-адреса». Після цього відправник обновить свій ARP-кеш і буде здатний
передати інформацію одержувачеві.
RARP (англ. Reverse Address Resolution Protocol – зворотний протокол
перетворення адрес) – виконує зворотне відображення адрес, тобто
перетворює апаратну адресу в IP-адресу.
Протокол застосовується під час завантаження вузла (наприклад
комп’ютера), коли він посилає групове повідомлення-запит зі своєю
фізичною адресою. Сервер приймає це повідомлення й переглядає свої
таблиці (або перенаправляє запит) у пошуках відповідної IP-адреси. Після її
виявлення знайдена адреса відсилається назад на вузол, що її запросив. Інші
станції також можуть «чути» цей діалог і локально зберегти цю інформацію у
своїх ARP-таблицях.
Для перегляду ARP-кеша можна використовувати однойменну утиліту
arp з параметром «–a».
70
Після того як IP-адреса пройшла процедуру вирішення адреси, вона
залишається в кеші протягом 2-х хвилин. Якщо протягом цих двох хвилин
відбулася повторна передача даних за цією адресою, то час зберігання запису
в кеші продовжується ще на 2 хвилини. Ця процедура може повторюватися
доти, поки запис у кеші проіснує до 10 хвилин. Після цього запис буде
вилучений з кеша й буде відправлений повторний ARP-запит.
Протокол IP
Номер Довжина
Тип сервісу Загальна довжина
версії заголовка
Ідентифікатор «великого пакета» Прапори Зсув фрагмента
Час життя Протокол Контрольна сума заголовка
Адреса відправника
Адреса одержувача
Опції Вирівнювання до 32-бітної границі
(змінна довжина) (заповнення нулями)
71
1. Номер версії (Version) [4 біти] – визначає використовуваний формат
заголовка. У цей час основна використовувана версія має номер 4 (IPv4).
2. Довжина заголовка (Internet Header Length) [4 біти] – довжина
заголовка в 32-бітних словах; мінімальне допустиме значення – 5 (відповідає
довжині заголовка в 20 байт). Максимальна довжина заголовка – 60 байт.
3. Тип сервісу (Type of Service) [8 біт] – вказує на бажані параметри
якості обслуговування. Формат байта типу сервісу наведено на рис. 10.3.
4. Поле Пріоритету (Precedence) для звичайних пакетів дорівнює 0,
інші значення (від 1 до 7) використовуються для службових цілей; чим
більше значення, тим вище пріоритет (Рис. 5.3).
0 1 2 3 4 5 6 7
Пріоритет D T R ECN
72
можна фрагментувати, «1» = не можна фрагментувати; 2 біт (MF, More
Fragments) – «0» = останній фрагмент, «1» = ще будуть фрагменти.
10. Зсув фрагмента (Fragment Offset) [13 біт] – указує на місце у
«великому пакеті», з якого починаються дані поточної дейтаграми.
Вимірюється в 64-бітних словах. Наприклад, зсув фрагмента, що дорівнює 2,
означає, що дані поточної дейтаграми повинні перебувати у «великому
пакеті», починаючи з 16-го байта. Перший фрагмент має нульовий зсув.
11. Час життя (Time to Live, TTL) [8 біт] – максимальний час
перебування дейтаграми в мережі. Кожний маршрутизатор повинен
зменшувати це значення на одиницю і відкидати дейтаграми зі значенням
TTL = 0 (сповістивши про це відправникові). Наявність цього поля
забезпечує знищення дейтаграми, «яка зациклилися» або «заблудилася».
Поле TTL також дозволяє обмежити дальність поширення дейтаграми (це
зручно, наприклад, при одночасній передачі безлічі абонентів) і є основою
для роботи утиліти traceroute.
12. Протокол (Protocol) [8 біт] – вказує, дані якого протоколу верхнього
рівня передаються в дейтаграмі. Можливі значення цього поля
стандартизовані (RFC «Assigned Numbers»), деякі з них такі: 1 – ICMP, 4 –
IP, 6 – TCP, 17 – UDP, 89 – OSPF.
13. Контрольна сума заголовка (Header Checksum) [16 біт] – контрольна
сума всіх полів заголовка, яка обчислюється як доповнення суми всіх 16-
бітових слів заголовка (з нульовими бітами в полі контрольної суми).
Оскільки деякі поля заголовка (наприклад, час життя) змінюються при
передачі дейтаграми через мережу, контрольна сума перераховується кожним
маршрутизатором. Якщо отримано дейтаграму з неправильною контрольною
сумою, така дейтаграма відкидається.
14. Адреса відправника (Source Address) [32 біта] – IP-адреса
відправника дейтаграми.
15. Адреса одержувача (Destination Address) [32 біта] – IP-адреса
одержувача дейтаграми.
16. Опції (Options) [змінна довжина] – необов’язкове поле, яке може
містити дані про безпеку, маршрут дейтаграми (при маршрутизації від
джерела) і т. д. В одній дейтаграмі може бути кілька опцій, кожна з яких
73
складається з коду опції (1 байт), довжини опції (1 байт) і байтів даних опції.
Якщо для опції не потрібні додаткові дані, вона складається з одного байта –
коду опції.
Код опції складається з трьох полів:
0 біт («Копіювати») – «0» = копіювати опції в усі фрагменти, «1» =
копіювати опції тільки в перший фрагмент
1 – 2 біти («Клас опції») – 0 = керування дейтаграмами/мережею, 2 =
налагодження мережі, 1 і 3 = зарезервовані.
3 – 7 біти («Номер опції») – номер опції усередині класу; так, для класу
0 визначено 7 номерів опцій, які несуть маршрути і дані про безпеку, а для
класу 2 – тільки один номер опції 4, що несе тимчасові мітки, які
використовуються при протоколюванні проходження дейтаграми за
маршрутом.
Фрагментація IP-пакетів
74
фрагментів одного пакета і не повторюватися для різних пакетів, поки в обох
пакетів не минув час життя.
При розподілі даних пакета розмір усіх фрагментів, крім останнього,
повинен бути кратний 8 байтам. Це дозволяє приділити менше місця в
заголовку під поле «Зсув фрагмента».
Другий біт поля Прапори (More fragments), якщо він дорівнює одиниці,
вказує на те, що даний фрагмент не є останнім у пакеті.
Якщо пакет відправляється без фрагментації, прапор «More fragments»
встановлюється в 0, а поле Зсув фрагмента заповнюється нульовими бітами.
Якщо перший біт поля Прапори (Don’t fragment) дорівнює одиниці, то
фрагментація пакета заборонена. Якщо цей пакет повинен бути переданий
через мережу з недостатнім MTU, то маршрутизатор змушений буде його
відкинути (і сповістити про це відправникові за допомогою протоколу
ICMP). Цей прапор використовується у випадках, коли відправникові відомо,
що в одержувача немає досить ресурсів з відновлення пакетів із фрагментів.
75
використовуються для вивчення динаміки й взаємодії у мережах. Зокрема,
вони дозволяють легко й наочно вивчати тонкості мережних протоколів.
Спостерігаючи за даними, які посилає протокол, ви можете глибше зрозуміти
його функціонування на практиці, а також побачити, коли деяка конкретна
реалізація працює не у відповідності до специфікації.
У стандартному режимі вікно сніфера WireShark ділиться на 3 панелі:
список захоплених кадрів, «аналізатор» протоколів та вихідні дані кадрів.
Розмір кожної панелі можна змінювати.
Розглянемо ці панелі докладніше.
Верхня панель містить список кадрів, захоплених на відповідних
мережних інтерфейсах. Список можна відсортувати по будь-якому полю (у
прямому або зворотному порядку) – для цього необхідно натиснути на
заголовок відповідного поля.
Кожний рядок містить такі поля (за замовчанням):
1) порядковий номер кадру (No);
2) час надходження кадру (Time);
3) адреса джерела кадру (Source);
4) адреса призначення кадру (Destination);
5) протокол (Protocol);
6) довжина кадру у байтах (Length);
7) інформаційне поле (Info).
Список відображуваних полів настроюється в Edit/Perferencis/Columns.
Для того, щоб зміни набули ефекту, необхідно хнову запустити програму,
попередньо натиснувши кнопку Save. При натисканні правої кнопки миші на
тому або іншому кадрі з’явиться контекстне меню.
Середня панель містить так зване «дерево протоколів» для обраного у
верхньому вікні кадру. У цій панелі в ієрархічному вигляді для обраного у
верхньому вікні захопленого кадру відображається вкладеність протоколів
відповідно до моделі взаємодії відкритих систем OSI. При натисканні на
праву кнопку миші викликається контекстне меню. При «розкритті» кожного
із протоколу натисканням на ліворуч, виводяться поля даних відповідних
протоколів.
76
Нижня панель містить подання обраного кадру у 16-річній системі
числення та у символьному вигляді. При виборі того або іншого поля в
середній панелі автоматично буде підсвічуватися відповідна ділянка
16-річного подання. Також є можливість подання у двійковій системі
числення.
Фільтрація пакетів
Фільтри відображення
77
основного екрана («Filter:»). Найпростіший фільтр відображення дозволяє
відібрати кадри за тим або іншим протоколом. Для цього в рядку потрібно
вказати назву протоколу (наприклад ARP) і нажати кнопку «Apply». Після
цього у верхньому вікні залишаться кадри, що належать цьому протоколу.
Кнопкою «Cleart» дія фільтра відміняється. Для роботи з фільтрами можна
викликати вікно «Analyze/Display Filters». Можна зберігати створені вирази
під певними іменами для наступного використання й т. д. За допомогою
логічних операцій (синтаксис мови С) можна складати логічні вирази.
Наприклад: tcp.port == 80. Майстер побудови фільтрів відображення
доступний через кнопку «Expression…».
Фільтри захоплення
78
Якщо протокол не визначений, то будуть захоплюватися кадри всіх
протоколів. Тобто: «src linux» означає «(ip or arp or rarp) src linux»; «net ctam»
означає «(ip or arp or rarp) net ctam»; «port 53» означає «(tcp or udp) port 53».
Також існує кілька спеціальних специфікаторів, які не попадають в
описані вище випадки: gateway; broadcast; less; greater; арифметичні
вирази.
Складні фільтри захоплення будуються з використанням логічних
виразів.
Наприклад:
• Захоплення всіх IP-пакетів між хостом host1 і кожним хостом за
винятком hostX: ip host host1 and not hostX;
• Захоплення IP-пакетів розміром більше ніж 576 байт, що проходять
через шлюз snup: gateway snup and ip[2:2] > 576;
• Захоплення всіх ICMP-пакетів, за винятком пакетів ping: icmp[0] !=
8 and icmp[0] != 0.
79
Рисунок 5.3 – Топологія для виконання практичної частини
80
Ви повинні побачити наступну інформацію про tap-інтерфейси
(рис. 5.4).
81
Список захоплених кадрів
"Розшифровка" обраного
кадра по протоколам
82
ping
ARP запит та відповідь
ARP протокол
ІР-адреса одержувача
МАС-адреса порожня
Широкомовна адреса
83
Рисунок 5.7 – Аналіз ARP-відповіді
84
11. Навіщо використовуються фільтри відображення та фільтри
захоплення сніфера Wireshark? У чому їх відмінність?
12. Які базові функції статистичної обробки захоплених пакетів має
сніфер Wireshark?
85
4. Призначте інтерфейсам адреси згідно з варіантом (v=1–16) з
табл. 5.2. Усі маски дорівнюють 255.255.255.0. Для tap-інтерфейсів адреси
оберіть самостійно. Для робочих станцій обов’язково задайте gateway – ІР-
адресу маршрутизатора, до якого станція підключена.
86
5.7. Зміст звіту
87
Лабораторна робота 6
ДИНАМІЧНА МАРШРУТИЗАЦІЯ
88
Маршрутизатори використовують метрики для оцінки або виміру
маршрутів. Коли від маршрутизатора до мережі призначення існує багато
маршрутів і усі вони використовують один протокол маршрутизації, то
маршрут з найменшою метрикою розглядається як кращий. Якщо
використовуються різні протоколи маршрутизації, то для вибору маршруту
використовуються адміністративні відстані, які призначаються маршрутам
операційною системою маршрутизатора.
Результати роботи маршрутизуючих протоколів заносяться в таблицю
маршрутів, яка постійно змінюється при зміні ситуації в мережі.
Для того щоб динамічні протоколи маршрутизації обмінювалися
інформацією про статичні маршрути, слід здійснювати додаткову
конфігурацію.
Дистанційно-векторна маршрутизація
89
Рисунок 6.1 – Дистанційно-векторна маршрутизація
Протокол RIP
Протокол BGP
90
Один з основних атрибутів, який передається з інформацією про
маршрут – це список автономних систем, через які пройшла ця інформація.
Ця інформація дозволяє BGP визначати де знаходиться мережа відносно
автономних систем, виключати петлі маршрутизації, а також може бути
використана при налаштуванні політик.
Маршрутизація здійснюється покроково від однієї автономної системи
до іншої. Всі політики BGP налаштовуються, в основному, по відношенню до
зовнішніх / сусідніх автономних систем. Тобто описуються правила взаємодії
між ними.
Оскільки BGP оперує великими обсягами даних (поточний розмір
таблиці для IPv4 більш 450 тисяч маршрутів), то принципи його
налаштування і роботи відрізняються від внутрішніх протоколів динамічної
маршрутизації.
91
На відміну від дистанційно-векторних маршрутизаторів,
маршрутизатори стану зв’язку можуть формувати спеціальні стосунки зі
своїми сусідами.
Має місце початковий наплив LSA-пакетів для побудови бази цих
станів зв’язку. Далі оновлення маршрутів проводиться тільки при зміні станів
зв’язку або якщо стан не змінився протягом певного інтервалу часу. Якщо
стан зв’язку змінився, то часткове оновлення пересилається негайно. Воно
містить тільки стани зв’язків, які змінилися, а не усю таблицю маршрутів.
Адміністратор, що піклується про використання ліній зв’язку,
знаходить ці часткові і рідкісні оновлення ефективною альтернативою
дистанційно-векторної маршрутизації, яка передає усю таблицю маршрутів
через регулярні проміжки часу.
Протоколи стану зв’язку мають швидшу збіжність і краще
використання смуги пропускання в порівнянні з дистанційно-векторними
протоколами.
Вони перевершують дистанційно-векторні протоколи для мереж будь-
яких розмірів, проте мають два головні недоліки: підвищені вимоги до
обчислювальної потужності маршрутизаторів і складне адміністрування.
Збіжність
92
суперечлива, що може призвести до відкидання пакетів і петель
маршрутизації.
Неможливо, щоб усі маршрутизатори в мережі одночасно виявили
зміни в топології. Залежно від використаного протоколу, може пройти багато
часу доки усі процеси маршрутизації в мережі зійдуться. На це впливають
такі чинники:
• Відстань в хопах до точки зміни топології.
• Число маршрутизаторів, що використовують динамічні протоколи.
• Смуга пропускання і завантаження каналів зв’язку.
• Завантаження маршрутизаторів.
Ефект деяких чинників може бути зменшений при ретельному
проектуванні мережі.
Протокол OSPF
93
6.3. Практична частина
94
Ви повинні побачити обмін повідомленнями протоколу RIP.
95
Налаштування протоколу BGP
96
[admin@R2] > routing ospf instance set 0 distribute-default=always-as-type-1
[admin@R4] > routing ospf instance set 0 distribute-default=always-as-type-1
Після цього можна побачити маршрути, отримані на кожному з
маршрутизаторів у мережі. Наприклад на маршрутизаторі 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
0 ADo 0.0.0.0/0 100.1.1.2 110
1 ADo 100.0.0.1/32 100.1.1.2 110
2 ADo 100.0.0.2/32 100.1.1.2 110
3 ADC 100.0.0.3/32 100.0.0.3 bridge1 0
4 ADC 100.1.1.0/24 100.1.1.1 ether1 0
5 ADC 100.2.2.0/24 100.2.2.2 ether2 0
6 ADo 100.3.3.0/24 100.1.1.2 110
Встановіть BGP-сесію:
[admin@R2] > routing bgp peer add remote-address=200.0.0.1 remote-as=200
multihop=yes update-source=bridge1
[admin@R4] > routing bgp peer add remote-address=100.0.0.1 remote-as=100
multihop=yes update-source=bridge1
97
Для того, щоб маршрутизатори змогли побачити мережі з інших
автономних систем необхідно їх анонсувати шляхом налаштування BGP. При
цьому можна вказувати їх або статично заданими, або шляхом перерозподілу
з протоколу внутрішньої маршрутизації (чого робити не бажано).
Для статичного анонсування мереж виконайте наступні команди:
[admin@R2] > routing bgp network add network=100.1.1.0/24
[admin@R2] > routing bgp network add network=100.2.2.0/24
[admin@R2] > routing bgp network add network=100.3.3.0/24
[admin@R4] > routing bgp network add network=200.1.1.0/24
[admin@R2] > routing bgp network add network=200.2.2.0/24
[admin@R2] > routing bgp network add network=200.3.3.0/24
98
Також можна виконати перерозподіл BGP-маршрутів в протокол
внутрішньої маршрутизації. Зазначемо, що в реальності це робити небажано,
тому що розміри BGP-таблиць включають маршрути для всього світу та
містять сотні тисяч строк. В корпоративній мережі ці маршрути зовсім не
потрібні. Перерозподіл виконується наступною командою (її необхідно
виконати на кожному маршрутизаторі автономної системи):
routing ospf instance set 0 redistribute-bgp=as-type-1
99
4. Оформити звіт (зміст звіту див. нижче).
5. Захистити звіт.
100
Лабораторна робота 7
101
CIDR дозволяє маршрутизаторам агрегувати або підсумовувати
інформацію про маршрути. Вони роблять це шляхом використання маски
замість класів адрес для визначення мережної частини IP-адреси. Це
скорочує розміри таблиць маршрутів, оскільки використовується лише одна
адреса і маска для представлення маршрутів до багатьох підмереж.
Без CIDR і агрегації маршрутів маршрутизатор повинен містити
індивідуальну інформацію для усіх підмереж.
Наприклад розглянемо мережу класу А 85.0.0.0/8, в якій виділяється 8
підмереж:
Мережний Перший Другий Третій Четвертий
номер октет октет октет октет
85.24.0.0/16 01010101 00011000 00000000 00000000
85.25.0.0/16 01010101 00011001 00000000 00000000
85.26.0.0/16 01010101 00011010 00000000 00000000
85.27.0.0/16 01010101 00011011 00000000 00000000
85.28.0.0/16 01010101 00011100 00000000 00000000
85.29.0.0/16 01010101 00011101 00000000 00000000
85.30.0.0/16 01010101 00011110 00000000 00000000
85.31.0.0/16 01010101 00011111 00000000 00000000
Перші два октети (16 біт) є адресою підмережі. Оскільки перші 16 біт
адреси кожної з цих восьми підмереж унікальні, то класовий маршрутизатор
бачить вісім унікальних мереж і повинен створити рядок в таблиці маршрутів
для кожної з цих підмереж.
Проте ці вісім адрес підмереж мають загальну частину: перші 13 біт
однакові. CIDR-сумісний маршрутизатор може підсумовувати маршрути до
цих восьми підмереж, використовуючи загальний 13-бітовий префікс в
адресах: 0101010100011. Для зображення цього префікса в десятковій формі
доповнимо його справа нулями:
01010101 00011000 00000000 00000000 = 85.24.0.0;
13-бітова маска підмережі має вигляд
11111111 11111000 00000000 00000000 = 255.248.0.0.
Отже, одна адреса і одна маска визначають безкласовий префікс, який
підсумовує маршрути до восьми підмереж : 85.24.0.0/13.
102
Supernetting та subnetting
103
Нехай компанія отримала у провайдера дві мережі класу C, адреси в
яких безперервні: 207.21.54.0 і 207.21.55.0.
VLSM
104
/27 призведе до втрати адрес. Для створення підмережі з двох адрес краще за
все підходить 30-бітова маска. Це якраз те, що потрібно для послідовного
з’єднання. Розіб’ємо одну з підмереж 207.21.24.192/27 на вісім підмереж,
використовуючи 30-бітову маску.
105
Таким чином за допомогою маски /25 маємо дві підмережі:
192.168.18.0 та 192.168.18.128, кожна з яких містить по 27 – 2 = 126 адрес
хостів. Друга підмережа може бути використана для адресації в мережі, що
потребує 100 хостів.
Далі з підмережі 192.168.18.0/25 за допомогою маски /26 можна
отримати ще дві підмережі: 192.168.18.0/26 та 192.168.18.64/26. Кожна
підмережа містить 26 – 2 = 62 адреси хостів. Мережа 192.168.18.64/26
використовується для адресації мережі з 60 хостами.
Підмережа 192.168.18.0/26 знову за допомогою маски /27 розбивається
на дві підмережі: 192.168.18.0/27 та 192.168.18.32/27. Кожна з підмереж
містить 25 – 2 = 30 адрес хостів. Тобто підмережа 192.168.18.32/27
використовується для адресації в мережі з 30 хостами.
Тепер необхідно організувати зв’язок між маршрутизаторами. Для
цього також необхідні ІР-адреси. Після розбиття залишилася підмережа
192.168.18.0/27, що має 30 адрес хостів. Для зв’язку маршрутизаторів
достатньо мати три підмережі, кожна з яких містить 2 реальні адреси (тобто
повинні мати маску /30) (див. рис. 7.1). Таким чином можна розділити
підмережу 192.168.18.0/27 на дві підмережі, а потім одну з підмереж
розділити на 4. Отже маємо такі адреси мереж:
106
Рисунок 7.1 – Топологія для виконання практичної частини
На маршрутизаторі Cisco2:
Cisco2>en
Cisco2#conf t
Cisco2(config)#int s0/0
Cisco2(config-if)#ip ad 192.168.18.2 255.255.255.252
Cisco2(config-if)#no sh
Cisco2(config-if)#int e1/2
Cisco2(config-if)#ip ad 192.168.18.129 255.255.255.128
Cisco2(config-if)#no sh
Cisco2(config-if)#int e1/1
Cisco2(config-if)#ip ad 192.168.18.9 255.255.255.252
Cisco2(config-if)#no sh
Cisco2(config-if)#int e1/0
Cisco2(config-if)#ip ad 192.168.18.5 255.255.255.252
107
Cisco2(config-if)#no sh
Cisco2(config)#ip route 0.0.0.0 0.0.0.0 192.168.18.1
На маршрутизаторі Mikrotik1:
На маршрутизаторі Mikrotik2:
108
Таблиці маршрутизації:
на Cisco2:
на Mikrotik1
на Mikrotik2
109
Команда ping між C2 і С1, С2 і С3 та С2 і Cisco1:
110
7.6. Завдання для самостійної роботи
111
7.7. Зміст звіту
112
Лабораторна робота 8
БАЛАНСУВАННЯ КАНАЛІВ
113
замовчуванням: accept) – дія, що виконується, якщо пакет відповідає
правилу:
• accept – прийняти пакет. Нічого не робити. Пакет проїде через
маршрутизатор і жодне правило не буде застосоване до нього;
• add-dst-to-address-list – додати адресу призначення IP-пакета в список
адрес;
• add-src-to-address-list – додати адресу джерела IP-пакета в список
адрес;
• change-ttl – зміна значення поля часу життя пакета на значення, що
відповідає параметру new-ttl;
• jump – перехід у ланцюжок, що відповідає значенню параметра jump-
target;
• log – кожна відповідність цій дії буде додавати повідомлення в
системний журнал;
• mark-connection – маркування, яке відповідає параметру new-
connection на всьому з'єднанні, що відповідає правилу;
• mark-packet – маркування, яке відповідає параметру new-packet-mark
на пакеті, що відповідає правилу;
• mark-routing – маркування пакета відповідно до параметра new-
routing-mark. Цей вид маркування використовується тільки для політики
маршрутизації;
• passthrough – ігнорувати це правило й перейти до наступного;
• return – ігнорувати це (поточне) правило й перейти до наступного.
address-list (name) – ім’я зі списку адрес, у якому зібрані IP-адреси за
правилом action=add-dst-to-address або action=add-src-to-address-list. Цей
список адрес згодом може бути використаний для узгодження пакетів;
address-list-timeout (time; за замовчуванням: 00:00:00) – інтервал,
після закінчення якого адреса буде вилучена зі списку адрес з параметром
address-list. Використовується сукупно з дією add-dst-to-address-list або add-
src-to-addresslist:
• 00:00:00 – залишає адресу в списку адрес назавжди;
chain (forward | input | output | postrouting | prerouting) – ланцюжок для
додавання в нього певного правила. Якщо певний трафік йде через певні
114
ланцюжки, то будьте обережні у виборі ланцюжка для нового правила. Якщо
при введенні ім’я не відповідає вже існуючому ланцюжку, буде створений
новий ланцюжок.
connection-bytes (integer-integer) – відповідність пакетів у випадку,
якщо певна кількість байт була передана через певне з’єднання:
• 0 – нескінченність. Наприклад, connection-bytes=2000000-0;
використовується це правило, якщо більш ніж 2Мб було передано через
обране з’єднання.
connection-limit (integernet-mask) – обмежити кількість з’єднань за
адресою або за блоком адрес.
content (text) – текст, що повинні містити пакети для відповідності
правилу.
dst-address (IP/netmask | IP range) – певний діапазон адрес, яким може
бути призначений IP-пакет.
dst-address-list (name) – відповідність призначеної адреси пакета
списку адрес, визначених користувачем.
dst-address-type (unicast | local | broadcast | multicast) – відповідність
адреси призначення IP-пакета одному з типів:
• unicast – IP-адреси для передачі типу точка-точка. У цьому випадку
існує тільки один відправник і один одержувач;
• local – відповідність адрес, заданих інтерфейсам маршрутизатора;
• broadcast – IP-пакет, що посилається від однієї точки до інших точок
IP-підмережі;
• multicast – даний тип IP-адресації призначений для передачі від однієї
або більше точок до інших точок.
limit (integer-time-integer) – обмежує інтенсивність пакетів відповідно
до заданого ліміту. Використовується для зменшення кількості записів у
системному журналі:
• count – максимальна середня інтенсивність пакетів, яка виміряється в
пакетах за секунду (pps), якщо не супроводжується опцією Time;
• time – визначає часовий інтервал, протягом якого буде відбуватися
вимір інтенсивності пакетів;
• burst – кількість пакетів, що відповідають піку.
115
new-ttl (decrement | increment | setinteger) – визначення нового значення
поля TTL, використовується в парі з action=change-ttl:
• decrement – значення поля TTL буде декрементоване на зазначене
значення;
• increment – значення поля TTL буде інкрементоване на зазначене
значення;
• set: – значення поля TTL буде встановлене в зазначене значення.
nth (integer, integer) – певний Nth пакет, отриманий відповідно до
правила.
out-interface (name) – інтерфейс, через який пакет залишає
маршрутизатор.
packet-size(integer: 0..65535 - integer: 0..65535) – відповідність пакета
певному розміру або діапазону розмірів, зазначених у байтах:
• min – значення, що визначає нижню границю діапазону або конкретне
значення;
• max – значення, що визначає верхню границю діапазону.
passthrough(yes | no; за замовчуванням: yes) – чи дозволено пакету
проходити далі, після маркування заданою міткою.
protocol (ddp | egp | encap | ggp | gre | hmp | icmp | idrp -cmtp | igmp |
ipencap | ipip | ipsec -ah |ipsec-esp | iso-tp4 | ospf | pup | rdp | rspf | st | tcp | udp |
vmtp | xns -idp | xtp | integer) – відповідність частці IP-протоколу,
обумовленому за ім’ям або за номером. Для визначення портів необхідно
визначити протокол.
routing-mark (name) – відповідності пакетів, відзначених специфічною
міткою маршруту.
src-address (IP-addressnetmask-IP-address-IP-address) – визначає
діапазон адрес, від яких прийшов IP-пакет. Примітка: консоль конвертує
уведення значення address/netmask у дійсну адресу, тобто 1.1.1.1/24
конвертується в 1.1.1.0/24.
src-address-list (name) – відповідність адреси джерела пакета списку
адрес, визначеному користувачем.
src-mac-address (MAC-address) – MAC-адреса джерела.
116
time (timetimesat | fri | thu | wed | tue | mon | sun) – дозволяє створити
фільтр, заснований на даті й часі надходження пакета або на даті й часі
відправлення для локально згенерованих пакетів.
Балансування пакетів
117
[admin@R1] > ip route add gateway=1.1.2.2
[admin@R4] > ip route add gateway=1.4.2.2
[admin@R3] > ip route add gateway=1.2.3.2,2.2.3.2
Додайте правила брандмауера, в яких поставте різне маркери для
кожного першого та другого з двох пакетів. (Параметр passthrough=no вказує
на те, що пакет буде виключений з подальшої обробки за правилами
брандмауера):
[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 (nth=2,1 – тобто з 2 пакетів перший), кожен другий – gw2
(nth=2,2 – тобто з 2 пакетів другий).
Додайте маршрутизацію:
[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
Тобто якщо у пакета маркування gw1, то він повинен
маршрутизуватися на шлюз 2.2.3.3, в іншому випадку – на шлюз 1.2.3.3.
Запустіть на R1 або R4 тест на ширину смуги пропускання убік адреси
1.2.3.3 або 2.2.3.3:
[admin@R1] > tool bandwidth-test address=2.2.3.3
На R2 запускаємо моніторинг використання інтерфейсів:
[admin@R2] > int monitor-traf interf=ether1,ether2,ether3,ether5
118
Балансування з’єднань
Балансування каналів
119
На маршрутизаторі R3 слід видалити існуючий маршрут убік R2 та
створити 2 нових:
[admin@R3] > ip ro rem 0
[admin@R3] > ip ro add dst-address=1.1.2.0/24 gateway=1.2.3.2
[admin@R3] > ip ro add dst-address=1.4.2.0/24 gateway=2.2.3.2
Правильність налаштувань перевіряється шляхом запуску тесту на
ширину смуги пропускання по черзі на R1 і на R4 на адрес 1.2.3.3 та
моніторингу навантаження інтерфейсів на R2.
Обмеження полоси пропускання для R1:
[admin@R2]> queue simple add name=private1 target-addresses=1.1.2.0/24
max-limit=256K/512K interface=ether2
[admin@R2]> queue simple add name=private2 dst-address=1.1.2.0/24 max-
limit=256K/512K interface=ether2
[admin@R2]> queue simple add name=private3 target-addresses=1.1.2.0/24
max-limit=256K/512K interface=ether1
[admin@R2]> queue simple add name=private4 dst-address=1.1.2.0/24 max-
limit=256K/512K interface=ether1
120
8.6. Завдання для самостійної роботи
N%3 0 1 2
Спосіб CLI WebFig WinBox
121
Таблиця 8.1 – Варіанти для індивідуального завдання
Топологія
№1 №2 №3
Розподіл зовн. каналів
Балансування каналів 1 2 3
Балансування пакетів 4 5 6
Балансування з’єднань 7 8 9
122
Лабораторна робота 9
Повторювачі
123
обмеження на його довжину. Так, максимальна довжина кабелю UTP для
одного сегмента мережі складає 100 м. Якщо потрібна більша відстань, то
слід використовувати повторювачі. У більшості сучасних мереж Ethernet
замість повторювачів використовуються комутатори, іноді ще можна
зустріти і концентратори (багатопортові повторювачі).
Призначення повторювачів полягає в регенерації і ресинхронізації
мережних сигналів на бітовому рівні для того, щоб вони могли пройти
більшу відстань по середовищу, в якому виконується передавання.
Повторювачі зазвичай використовуються в тих випадках, коли в мережі
є дуже багато вузлів або коли довжини наявного кабелю недостатньо для
досягнення віддалених робочих станцій.
124
шлюзи. Мости і комутатори функціонують на канальному рівні моделі OSI.
Функція моста полягає у визначенні того, чи потрібно відправляти сигнали,
що надійшли на один з його портів, в інший сегмент мережі. Мости можуть
також бути використані для з’єднання мереж, що використовують різні
протоколи або різні середовища передавання.
Під час роботи міст використовує метод прозорого перенаправлення.
Цей метод описаний у специфікації ІЕЕЕ 802.1d, яка визначає п’ять процесів
оброблення кадру (frame) при проходженні через міст (рис. 9.1):
125
Коли міст отримує фрейм, він порівнює MAC-адресу відправника з
адресною таблицею, що є в нього, для визначення того, чи слід цей кадр
відфільтрувати (відкинути), надіслати його лавинним способом або у
визначений сегмент мережі.
Прийняття цього рішення відбувається таким чином:
• якщо пристрій-одержувач знаходиться в тому ж сегменті, з якого
цей кадр був отриманий, то міст запобігає його передаванню в інші сегменти.
Цей процес називається фільтруванням (filtering);
• якщо пристрій-одержувач знаходиться в іншому сегменті і його
адреса присутня в адресній таблиці, то міст пересилає кадр у відповідний
сегмент;
• якщо пристрій-одержувач відсутній в таблиці адрес (тобто
"невідомий" мосту) або кадр є широкомовний чи багатоадресний, то міст
розсилає кадр у всі сегменти, за винятком того, звідки був отриманий кадр.
Таку поведінку називають лавинним розсиланням.
Стратегічно правильно встановлений міст може значно збільшити
продуктивність мережі.
Режими комутації
126
проміжне місце за рівнем контролю і швидкістю і дозволяє відкидати лише ті
кадри, розмір яких менше 64 байтів і які виникають внаслідок колізій. Ряд
мостів підтримують усі ці режими і дозволяють автоматично вибирати їх
залежно від особливостей роботи мережі.
127
Припустимо, наприклад, що станція А має запис про станцію В в
таблиці ARP і надсилає одноадресний пакет ping до станції В. Станція В
тимчасово від’єднана від мережі, і відповідний запис в таблиці комутатора
був вилучений. Припустимо, що обидва комутатори не використовують
протокол STP. Тоді кадр надходить на порти 1 обох комутаторів. Розглянемо
ситуацію щодо моста SW1. Оскільки станція B знаходиться в несправному
стані, то в таблиці моста SW1 немає записів про МАС-адресу ВВ-ВВ-ВВ-ВВ-
ВВ-ВВ, і тому SW1 пропускає одержаний кадр далі в мережу. SW2 через
порт 2 одержує фрейм відправлений SW1. Це призводить до виникнення
двох таких ситуацій:
128
Отже, одноадресні повідомлення не лише насичують мережу, а й
викривляють інформацію в МАС-таблицях комутаторів, що призводить до
порушення працездатності такої мережі. Для уникнення вище вказаних
проблем у мережах на основі мостів/комутаторів використовується протокол
зв’язуючого дерева.
129
Призначений міст (Designated Bridge) – це міст, якому належить
призначений порт даного сегмента.
Протокольні одиниці даних моста (BPDU - Bridge Protocol Data Unit) –
спеціальні пакети, якими періодично обмінюються мости для автоматичного
визначення конфігурації зв’язуючого дерева. Такі пакети несуть інформацію,
наприклад, про ідентифікатори мостів та портів, відстань до кореневого
моста тощо.
Функціонування STP
130
2. Версія STP протоколу (Protocol Version Identifier) – поле розміром
в 1 байт.
3. Тип BPDU (BPDU type) – поле розміром 1 байт, яке набуває
значення «0», якщо це конфігураційний BPDU (CBPDU), або «1», якщо це
TCN BPDU.
• CBPDU (Configuration Bridge Protocol Data Unit) – кадр, який
використовується для обчислення зв’язуючого дерева. Тобто, коли значення
дорівнює 0.
• TCNBPDU (Topology Change Notification Bridge Protocol Data
Unit) – кадр, який використовується, щоб повідомити інших про зміни в
топології. Тобто, коли значення дорівнює 1.
Простіше кажучи, якщо комутатор бачить, що сталася якась зміна в
топології (лінк відвалився, «помер» сусід і т.д.), він пускає BPDU зі
значенням «1» в поле BPDU Type. А далі працюють кадри зі значенням «0»,
щоб заново перебудувати дерево.
4. Прапори (Flags) – в цьому полі використовується тільки 1 байт. Ці
прапори застосовуються при зміні топології (біт «1») і при підтвердженні
топології (біт «8»).
5. Ідентифікатор кореневого моста (Root Identifier) – в цьому полі
міститься інформація про кореневий комутатор, а саме про його пріоритет і
MAC-адресу.
6. Відстань до кореневого моста (Root Path Cost) – тут міститься
сумарна вартість до кореневого комутатора.
7. Ідентифікатор моста (Bridge Identifier) – сюди комутатор-
відправник записує свої дані (пріоритет + MAC-адресу).
8. Ідентифікатор порту (Port Identifier) – сюди комутатор-відправник
записує ідентифікатор порту (тобто той, з якого цей BPDU вийде).
9. Час життя повідомлення (Message Age) – тут міститься часовий
інтервал (в секундах). Він потрібен для того, щоб розпізнати застарілі кадри і
відкинути іх. Його формує кореневий комутатор і встановлює в початкове
значення «0». Далі кожен наступний комутатор збільшує це значення на час
затримки. Як тільки це значення перевищить максимальне порогове
значення, воно буде відкинуте.
131
10. Максимальний час життя повідомлення (Max Age) – це поле
відповідає саме за максимальний час життя. Перевищивши його, комутатор
відкидає кадр.
11. Час вітання (Hello Time) – часовий інтервал, через який комутатор
посилає BPDU кадри. За замовчуванням це 2 секунди.
12. Затримка зміни станів (Forward Delay) – часовий інтервал, який
вказує, скільки секунд порт комутатора буде перебувати в стані
прослуховування і навчання.
Всі BPDU розсилаються кожним комутатором на спеціальну
мультикастову МАС-адресу 01:80:С2:00:00:00.
132
кореневого комутатора. Комутатор, у якого вибрано призначений порт для
даного сегмента, називається призначеним комутатором.
У кореневого комутатора усі порти є призначеними (винятком є лише
ситуація, коли деякі порти кореневого комутатора утворюють фізичні петлі).
Порти, які не стали кореневими та призначеними, блокуються і
здійснюють логічне розірвання петель у мережі.
Математично доведено, що в результаті функціонування даного
алгоритму для мережі отримуємо покривне дерево.
133
3. Вибір призначених портів. Оскільки кожен сегмент у мережі
повинен мати один призначений порт, то такими портами для лівого і
правого сегментів мережі стають відповідно порти 1 і 2 комутатора SW1
(оскільки мають найменшу кореневу вартість). Для нижнього сегмента
призначеним було обрано порт 2 комутатора SW2. Це пояснюється тим, що
кореневі вартості портів 2 комутаторів SW1 та SW2 мають однакове
значення 19. У такому випадку вирішальним фактором стає значення
ідентифікатора відправника, а ідентифікатор комутатора SW2 менший, ніж
моста SW3. Порт, що залишився (порт 2 комутатора SW3), стає
непризначеним і переходить у стан блокування. Отже, тепер у мережі логічно
розірвано петлю.
134
На рис. 9.5 наведено послідовність станів портів, на яких працює
протокол STP.
135
Rapid Spanning Tree Protocol (RSTP)
136
Multiple Spanning Tree Protocol (MSTP)
137
На маршрутизаторі Mikrotik виконайте такі команди:
138
Тепер створіть мости на маршрутизаторах Mikrotik_2 та Mikrotik_3 і
додайте у них відповідні інтерфейси. Відключить протокол визначення
сусідів на створених мостах.
Запустіть аналізатор трафіку Wireshark на інтерфейсі e1
маршрутизатора Mikrotik.
Спробуйте ще раз виконати пінг з С1 на С2.
При цьому пінги не йдуть. Це пов’язано з виникненням петлі на
канальному рівні. Якщо подивитися в аналізаторі трафіку захоплені кадри, то
можна побачити, що там є багато широкомовних кадрів, які «затоплюють»
мережу (рис. 9.8).
139
Спробуйте замінити пріоритет некореневого мосту на нижчий ніж
пріоритет кореневого, та опишіть, що при цьому відбулося. Наведіть
відповідні скріншоти.
Зміна пріоритету виконується командою
int bridge set bridge1 priority=
140
3. Виконати в GNS практичну частину.
4. Оформити звіт (зміст звіту див. нижче).
5. Захистити звіт.
141
Лабораторна робота 10
142
приходять кадри. При підключенні до одного порту декількох пристроїв
через концентратор (hub) в таблиці одному порту відповідатиме декілька
MAC-адрес. Таблиці зберігаються в пам’яті. Якщо адреса відправника
відсутня в таблиці, то вона туди заноситься. Разом з парами адреса-порт в
таблиці зберігається і мітка часу. Мітка часу в рядку таблиці змінюється або
при приході на комутатор кадру з такою ж адресою, або при зверненні
комутатора за цією адресою. Якщо рядок таблиці не використовувався
певний період часу, то він видаляється. Це дозволяє комутатору
підтримувати правильний список адрес пристроїв для передачі кадрів.
Використовуючи таблицю адрес і адресу одержувача, що міститься в
кадрі, що прийшов, комутатор організовує віртуальне з’єднання порту
відправника з портом одержувача і передає кадр через це з’єднання.
Віртуальне з’єднання між портами комутатора зберігається протягом
передачі одного кадру, тобто для кожного кадру віртуальне з’єднання
організовується наново на основі адреси одержувача, що міститься в цьому
кадрі.
Оскільки кадр передається тільки в той порт, до якого підключений
адресат, інші пристрої, підключені до комутатора, не отримають цей кадр.
У комутаторах Ethernet передача даних між будь-якими парами портів
відбувається незалежно, і, отже, для кожного віртуального з’єднання
виділяється уся смуга каналу.
При передачі широкомовного кадру в комутаторі утворюється
об’єднання каналів за принципом один до багатьох. Прикладами джерел
широкомовного трафіку є ARP і протоколи маршрутизації.
Комутатори можна сполучати один з одним. При цьому група попарно
прямо або побічно пов’язаних комутаторів утворює один логічний комутатор
з теоретично довільним числом портів. Тобто комутатори дозволяють
створювати теоретично скільки завгодно велику локальну мережу.
Правильне з’єднання комутаторів, тобто вибір топології мережі, складає
одне з найважливіших завдань проектування локальних мереж.
Рекомендується здійснювати з’єднання комутаторів по таких шарах
(рис. 10.1): серверному, шару розподілу (distribution) і шару доступу (access).
143
Рядові комп’ютери підключаються до шару доступу, а сервери – серверного
шару.
144
Віртуальні локальні мережі VLAN є сукупністю портів одного або
більше комутаторів.
VLAN дозволяють логічно розбити початкову локальну мережу на
декілька незалежних локальних мереж без фізичного обриву мережних
з’єднань. Для цього адміністратор мережі повинен на кожному комутаторі
визначити, які з його портів відносяться до відповідних VLAN. За
замовчуванням усі порти комутатора відносяться до одної VLAN з
номером 1. Максимальне число VLAN в комутаторі дорівнює загальному
числу його портів. Правильне розбиття локальної мережі на VLAN складає
одне з найважливіших завдань проектування.
VLAN поводяться так само, як і фізично розділені локальні мережі.
Тобто після розбиття мережі на VLAN ми отримаємо декілька локальних
мереж, які далі необхідно об’єднати в єдине ціле за допомогою
маршрутизації на третьому мережному рівні.
Концепція VLAN, окрім вирішення проблеми з широкомовним
трафіком, дає також ряд додаткових переваг: формування локальних мереж
не за місцем розташування найближчого комутатора, а за приналежністю
комп’ютерів до розв’язання тієї або іншої виробничої задачі; створення
мережі за типом споживаного обчислювального ресурсу і необхідної
серверної послуги (файл-сервер, сервер баз даних). VLAN дозволяє вести
різну політику безпеки для різних віртуальних мереж; переводити комп’ютер
з однієї мережі в іншу без здійснення фізичного переміщення або нового
підключення.
Для обміну інформацією про VLAN комутатори використовують
магістральний (транковий) протокол. Для здійснення обміну інформацією
про VLAN між комутаторами необхідно створити магістральні порти.
Магістральний порт – це порт, що використовується для передачі інформації
про VLAN в інші мережні пристрої, приєднані до цього порту. Звичайні
порти не рекламують інформацію про VLAN, але будь-який порт може бути
налагоджений для прийому/передачі інформації про VLAN. Тому слід
активізувати магістральний протокол на потрібних портах, оскільки він
вимкнений за замовчуванням.
145
Порт комутатора працює або в режимі доступу або в магістральному
режимі. Відповідно зв’язок, приєднаний до порту є або зв’язком доступу або
магістральним зв’язком. У режимі доступу порт належить тільки одній
VLAN. Порт доступу приєднується до крайового пристрою: робочої станції,
сервера, хаба. Кадри, що проходять через порт доступу, є звичайними
Ethernet-кадрами.
Магістральні зв’язки здатні підтримувати декілька VLAN. VLAN на
різних комутаторах зв’язуються через магістральний протокол. Магістральні
порти не залежать від певної VLAN і використовуються для під’єднання до
інших комутаторів, маршрутизаторів або серверів, що мають мережні
адаптери з можливістю для підключення до багатьох VLAN.
Магістралі можуть розширити VLAN по усій мережі. Для
магістральних цілей призначають високошвидкісні порти комутаторів:
Gigabit Ethernet і 10Gigabit .
Для мультиплексування трафіку VLAN існують спеціальні протоколи,
що дозволяють приймальним портам визначити, якому VLAN належить кадр.
Для зв’язку між пристроями Cisco використовується протокол Inter – Switch
Link (ISL). За наявності в мережі устаткування декількох виробників
застосовується протокол IEEE 802.1Q
Без магістральних зв’язків для підтримки VLAN необхідно
організувати по одному зв’язку доступу для кожної VLAN. Такий підхід
дорогий і неефективний, тому магістральні зв’язки абсолютно потрібні при
проектуванні локальних мереж.
На рис. 11.2 порти А і В на комутаторі Y визначені як зв’язки доступу
на тій самій VLAN 200. За визначенням вони можуть належати тільки одній
VLAN і не можуть отримувати Еthernet-кадри, що містять ідентифікатор
VLAN. Наприклад, коли Y отримує трафік від порту А до порту В, то він не
додає ISL заголовок в Еthernet-кадри.
Порт С на комутаторі Z також є портом доступу і також належить до
VLAN 200. Якщо порт А пересилає кадр в порт С, то відбувається таке:
1. Комутатор Y отримує кадр і, зіставляючи номер порту призначення
з номером VLAN, визначає його як трафік, спрямований до VLAN 200 на
іншому комутаторі.
146
2. Комутатор Y додає до кадру ISL-заголовок з номером VLAN і
пересилає кадр через проміжний комутатор на магістральний зв’язок.
3. Цей процес повторюється на кожному комутаторі по шляху кадру
до кінцевого порту С.
4. Комутатор Z отримує кадр, видаляє ISL-заголовок і направляє кадр
на порт С.
Якщо порт знаходиться в магістральному режимі, то він може бути
налагоджений для транспорту або усіх VLAN, або обмеженої множини
VLAN. Магістральні зв’язки використовуються для зв’язку комутаторів з
іншими комутаторами, маршрутизаторами або з серверами, що мають
підтримку VLAN.
147
сенсі розподілу навантаження: малий трафік на деяких зв’язках може не
коштувати того, що цей зв’язок є пучком віртуальних зв’язків через один
фізичний зв’язок. На нижній фігурі один фізичний зв’язок здатний нести
трафік для будь-якої VLAN. Для досягнення цього комутатор Sa так
оформлює кадри, що Sb знає, на яку VLAN вони прямують. Для такого
оформлення пакетів використовуються або стандарт IEEE 802.1Q, або Cisco-
протокол ISL.
148
початкової конфігурації, то краще використовувати статичне визначення
віртуальних мереж.
У топології локальних мереж можливі цикли (петлі). Наприклад, вже
три комутатори сполучених один з одним по колу утворюють цикл в
топології. Петлі призводять до неоднозначності при визначенні шляху від
джерела кадрів до приймача. Для вирішення цієї серйозної проблеми був
розроблений протокол покривного дерева STP (Spanning Tree Protocol). Для
графа топології кожній VLAN, яка визначена в мережі, будується мінімальне
покривне дерево (граф без циклів) з вершиною в деякому комутаторі. Для
фізичної реалізації таких дерев STP переводить надлишкові порти в стан
блокування. Розрахунок дерев проводиться паралельно на усіх комутаторах.
Далі пакети у VLAN йдуть тільки по шляхах, визначених в побудованих
покривних деревах. При зміні топології, активації/зупинці портів
відбувається перерахунок покривних дерев. Для створення топології
єднального дерева існують спеціальні кадри, звані модулями даних
мостового протоколу (Bridge Protocol Data Units, BPDU). Ці кадри
вирушають і приймаються усіма комутаторами в мережі через рівні
проміжки часу.
149
Рисунок 10.4 – Топологія практичної частини
150
Виконайте попарно команду ping між пристроями. Тільки станції, що
знаходяться у тій самій VLAN, повинні побачити одна одну. Тобто в даному
випадку для зв’язку комутаторів між собою для передачі інформації про
номери VLAN задіяні дві лінії (по одній на кожний номер VLAN). Таке
рішення дуже погано масштабується.
Подивіться таблицю комутації на комутаторах. Для цього з меню, що
з’являється при натисканні на праву кнопку миші над комутатором, оберіть
пункт «MAC Аddress Тable».
151
Рисунок 10.7 – Об’єднання пристроїв в різних VLAN на мережному рівні
152
6. Наскільки велику локальну мережу можна створити за допомогою
комутаторів?
7. Як прийнято будувати великі локальні мережі?
8. Що є головною перешкодою для створення великих локальних
мереж за допомогою одних тільки комутаторів?
9. Що таке домен широкомовлення?
10. Як зменшити домен широкомовлення?
11. Що таке VLAN?
12. Які проблеми локальних мереж вирішує VLAN?
13. Як в локальній мережі організувати обмін інформацією про VLAN?
14. У яких режимах працюють порти комутатора?
15. Який VLAN належить до магістрального порту?
16. Як розповсюдити одну VLAN на декілька комутаторів?
17. Чи можна організувати декілька VLAN на декількох комутаторах
без використання магістралей?
18. Навіщо потрібні протоколи ISL і IEEE 802.1Q?
19. Навіщо потрібні магістралі в локальній мережі?
19. Які завдання вирішує VTP?
21. Які завдання вирішує STP?
25. У локальній мережі є одинадцять VLAN. Скільки маршрутизаторів
потрібно для об’єднання усіх 11 VLAN в єдине ціле?
153
Повторити усі пункти практичної частини для IP-мережі підприємства
= N.M.0.0/16, де N та M відповідно номер по списку та місяць народження
студента. Практична частина виконана для мережі 172.16.0.0/16.
154
Лабораторна робота 11
155
Пара «порт – IP-адреса» називається (у термінології TCP/IP) гніздом
або сокетом (socket) і однозначно вказує на процес у мережі.
Протокол UDP
156
3) нулів (8 біт);
4) протоколу (8 біт);
5) довжини дейтаграми (16 біт).
Крім того, до кінця дейтаграми, можливо, додають нульовий байт, щоб
його довжина (разом із псевдозаголовком) була кратна 16 бітам. Потім
обчислюється контрольна сума (як у протоколі IP), і псевдозаголовок
відкидається.
Численні ключові Інтернет-додатки використовують UDP, у тому
числі: DNS (де запити повинні бути швидкими й складатися тільки з одного
запиту, за яким потрібен один пакет відповіді); простий протокол керування
мережами (SNMP); протокол маршрутизації (RIP); протокол динамічної
конфігурації вузла (DHCP).
Голосовий і відеотрафік зазвичай передається за допомогою UDP.
Протоколи потокового відео й аудіо в реальному часі розроблені для обробки
випадкових втрат пакетів таким чином, що якість відео/аудіо лише незначно
зменшується. Це краще, ніж збільшення затримок при повторній передачі
загублених пакетів.
Протокол TCP
157
сегмента. Коли надійде підтвердження прийому сегмента (тобто буде
прийнятий сегмент, у якому буде заявлено, що та сторона готова прийняти
байт із номером, більшим за всі номери байтів сегмента, що чекає повторної
передачі), сегмент видаляється із черги. Якщо підтвердження не надходить
до спрацювання таймера, сегмент відправляється повторно. Сегмент
складається із заголовка і поля даних.
Формат заголовка сегмента TCP наведений на рис. 11.1.
158
6) біти керування (Control bits) [6 біт] – від старшого до молодшого:
URG (Urgent Pointer field significant) – брати до уваги поле Покажчик
терміновості; ACK (Acknowledgement field significant) – брати до уваги поле
Номер підтвердження; PSH (Push function) – сегмент містить «проштовхнуті»
дані; RST (Reset the connection) – перервати зв’язок; SYN (Synchronize
sequence numbers) – синхронізувати номери байтів у потоці; FIN (No more
data from sender) – відправник більше не буде передавати дані;
7) вікно (Window) [16 біт] – розмір вікна – кількість байтів даних,
починаючи із зазначеного в полі Номер підтвердження, які відправник
даного сегмента готовий прийняти;
8) контрольна сума (Checksum) [16 біт] – контрольна сума всього
сегмента (заголовка і даних), обчислюється за алгоритмом протоколу IP. Як і
в UDP, перед обчисленням контрольної суми до сегмента приписується
псевдозаголовок (тієї ж структури, що і в UDP) ;
9) покажчик терміновості (Urgent Pointer) [16 біт] – містить номер
першого байта, що має звичайний статус терміновості. При цьому повинен
бути встановлений керуючий біт URG;
10) опції (Options) [змінний розмір] – додаткова службова інформація.
Подібно до опції заголовка, IP-дейтаграми мають змінну довжину і можуть
бути взагалі відсутніми;
11) вирівнювання (Padding) – поле, що використовується для доведення
розміру заголовка до цілого числа 32-бітових слів.
Щоразу при встановленні з’єднання модуль TCP створює структуру
даних – Блок керування передачею (Transmission Control Block, TCB), що
зберігає постійну інформацію про з’єднання (IP-адреси, номери портів,
покажчики на вхідний і вихідний буфери, черга повторного відправлення і
т. д.) і поточні значення змінних, що описують поточний стан з’єднання.
На відміну від традиційної альтернативи – UDP, що може відразу ж
почати передачу пакетів, TCP установлює з’єднання, яке повинно бути
створене перед передачею даних. TCP з’єднання можна розділити на 3 стадії:
• Установлення з’єднання.
• Передача даних.
• Завершення з’єднання.
159
Стан сеансу TCP
Установлення з’єднання
160
1) Клієнт, що має намір установити з’єднання, посилає серверу сегмент
із номером послідовності й прапором SYN.
• Сервер одержує сегмент, запам’ятовує номер послідовності й
намагається створити сокет (буфери й керуючі структури пам’яті) для
обслуговування нового клієнта.
• У випадку успіху сервер посилає клієнтові сегмент із номером
послідовності й прапорами SYN і ACK і переходить у стан SYN-RECEIVED.
• У випадку невдачі сервер посилає клієнтові сегмент із прапором
RST.
2) Якщо клієнт одержує сегмент із прапором SYN, то він запам’ятовує
номер послідовності й посилає сегмент із прапором ACK.
• Якщо він одночасно одержує й прапор ACK (що звичайно й
відбувається), то він переходить у стан ESTABLISHED.
• Якщо клієнт одержує сегмент із прапором RST, то він припиняє
спроби з’єднатися.
• Якщо клієнт не одержує відповіді протягом 10 секунд, то він
повторює процес з’єднання заново.
3) Якщо сервер у стані SYN-RECEIVED одержує сегмент із прапором
ACK, то він переходить у стан ESTABLISHED.
• У противному разі після тайм-ауту він закриває сокет і переходить у
стан CLOSED.
Процес називається триетапним узгодженням (three way handshake),
оскільки незважаючи на те, що можливий процес установлення з’єднання з
використанням 4 сегментів (SYN убік сервера, ACK убік клієнта, SYN убік
клієнта, ACK убік сервера), на практиці для економії часу використовується
3 сегменти.
TCP A TCP B
1. CLOSED LISTEN
2. SYN-SENT → <SEQ=100><CTL=SYN> → SYN-RECEIVED
3. ESTABLISHED ← <SEQ=300><ACK=101><CTL=SYN,ACK> ← SYN-RECEIVED
4. ESTABLISHED → <SEQ=101><ACK=301><CTL=ACK> → ESTABLISHED
5. ESTABLISHED ← <SEQ=301><ACK=101><CTL=ACK> ← ESTABLISHED
161
У рядку 2 TCP A починає передачу сегмента SYN, що говорить про
використання номерів послідовності, починаючи з 100. У рядку 3 TCP B
передає SYN і підтвердження для прийнятого SYN на адресу TCP A. Треба
відзначити, що поле підтвердження показує очікування TCP B прийому
номера послідовності 101, що підтверджує SYN з номером 100.
У рядку 4 TCP A відповідає порожнім сегментом з підтвердженням
ACK для сегмента SYN від TCP B; у рядку 5 TCP B передає деякі дані.
Відзначимо, що номер послідовності сегмента в рядку 5 збігається з номером
у рядку 4, оскільки ACK не займає простори номерів послідовності (якщо це
зробити, доведеться підтверджувати підтвердження – ACK для ACK!).
Передача даних
162
запам’ятовуючи їх у буфері. Для цього використовується прапор PSH. Якщо
в отриманому сегменті виявляється прапор PSH, то реалізація TCP віддає всі
буферизовані на поточний момент дані приймальному додатку.
«Проштовхування» використовується, наприклад, в інтерактивних додатках.
У мережних терміналах нема рації очікувати введення користувача після
того, як він закінчив набирати команду. Тому останній сегмент, що містить
команду, зобов’язаний містити прапор PSH, щоб додаток на приймальній
стороні зміг почати її виконання.
Завершення з’єднання
Протокол ICMP
163
ICMP-повідомлення (тип 12) генеруються при знаходженні помилок у
заголовку IP-IP-пакета (за винятком самих ICMP-пакетів, щоб не привести до
нескінченно зростаючого потоку ICMP-повідомлень про ICMP-
повідомлення).
ICMP-повідомлення (тип 3) генеруються маршрутизатором при
відсутності маршруту до адресата.
Утиліта Ping, що служить для перевірки можливості доставки IP-IP-
пакетів, використовує ICMP-повідомлення з типом 8 (ехо-запит) і 0 (ехо-
відповідь).
Утиліта Traceroute, що відображає шлях проходження IP-пакетів,
використовує ICMP-повідомлення з типом 11.
Протокол DHCP
164
Таблиця 11.1 – Опис полів протоколу DHCP
Довжина
Поле Опис
(у байтах)
Тип повідомлення. Наприклад може приймати такі значення:
op BOOTREQUEST (1, запит від клієнта до сервера) і BOOTREPLY 1
(2, відповідь від сервера до клієнта)
Тип апаратної адреси. Припустимі значення цього поля визначені
htype в RFC1700 «Assigned Numbers». Наприклад, для MAC-адреси 1
Ethernet 10 Мбит це поле набуває значення 1
hlen Довжина апаратної адреси в байтах. Для MAC-адреси Ethernet = 6 1
Кількість проміжних маршрутизаторів (так званих агентів
hops ретрансляції DHCP), через які пройшло повідомлення. Клієнт 1
установлює це поле в 0
Унікальний ідентифікатор транзакції. Генерується клієнтом на
xid 4
початку процесу одержання адреси
Час у секундах з початку процесу одержання адреси. Може не
secs 2
використовуватися (у цьому випадку він встановлюється в 0)
flags Поле для прапорів – спеціальних параметрів протоколу DHCP 2
IP-адреса клієнта. Заповнюється тільки в тому випадку, якщо
клієнт вже має власну IP-адресу й здатен відповідати на запити
ciaddr 4
ARP (це можливо, якщо клієнт виконує процедуру відновлення
адреси після закінчення строку оренди)
yiaddr Нова IP-адреса клієнта, запропонована сервером 4
siaddr IP-адреса сервера. Вертається в пропозиції DHCP 4
IP-адреса агента ретрансляції, якщо такий брав участь у процесі
giaddr 4
доставки повідомлення DHCP до сервера
chaddr Апаратна адреса (зазвичай MAC-адреса) клієнта 16
sname Необов’язкове ім’я сервера у вигляді нуль-терминованого рядка 64
Необов’язкове ім’я файла на сервері, що використовується
file бездисковими робочими станціями при віддаленному 128
завантаженні
options Поле опцій DHCP змінна
165
Процес отримання ІР-адреси складається із чотирьох етапів:
1) Виявлення DHCP. Спочатку клієнт виконує широкомовний запит
по всій фізичній мережі з метою виявити доступні DHCP-сервери. Він
відправляє повідомлення типу DHCPDISCOVER, при цьому IP-адреса
джерела вказується 0.0.0.0 (тому що комп’ютер ще не має власної IP-адреси),
а як адреса призначення – широкомовна адреса 255.255.255.255.
Клієнт заповнює кілька полів повідомлення початковими значеннями:
• У полі xid міститься унікальний ідентифікатор транзакції, що
166
4) Підтвердження DHCP. Нарешті, сервер підтверджує запит і
направляє це підтвердження (DHCPACK) клієнтові. Після цього клієнт
повинен настроїти свій мережний інтерфейс, використовуючи надані опції.
Система DNS
167
мають більший обсяг інформації про запитану зону, ніж сервер, що
відповідає (найчастіше – адреси кореневих серверів), є некоректними.
У випадку рекурсивного запиту DNS-сервер опитує сервери (у порядку
убування рівня).
Зворотний DNS-запит
168
Перевірка роботи служби DNS
169
Після цього спробуйте виконати команду ping спочатку на адресу
mikrotik1.com, а потім на mikrotik2.com. Команди повинні пройти успішно. За
допомогою WireShark знайдіть відповідні кадри.
(! Якщо кадри не відображаються спробуйте замінити в топології
комутатор SW1 на концентратор HUB).
На рис. 11.5 наведено кадр запиту до DNS при вирішенні адреси
mikrotik1.com.
170
dhcp server interface: ether1
Select network for DHCP addresses
lease time: 3d
171
Рисунок 11.7 – Етапи отримання ІР-адреси від DHCP-сервера
Рисунок 11.8 – Топологія для аналізу роботи протоколів ICMP, UDP та TCP
172
Підключіть WireShark до інтерфейсу е0/0. Виконайте з командного
рядка VPCS такі команди:
VPCS[2]> ping 192.168.1.2 -c 1 -l 100
VPCS[2]> ping 192.168.1.2 -2 -c 1 -l 100
VPCS[2]> ping 192.168.1.2 -3 -c 1 -l 100
173
Рисунок 11.10 – Взаємодія між вузлами за протоколом ТСР
1. Що таке сокет?
2. Для чого використовується протокол UDP?
3. Які додатки використовуються для взаємодії за протоколом UDP?
4. Який формат заголовка UDP-дейтаграми?
5. Для чого використовується протокол ІСМР і який формат має
заголовок ІСМР?
6. Для чого використовується протокол ТСР і які поля є у заголовку
ТСР-сегменту?
7. Назвіть основні етапи взаємодії за протоколом ТСР.
8. Назвіть стани сеансу ТСР.
9. Для чого використовується прапор PSH при зв’язку за протоколом
ТСР?
10. Для чого використовується протокол DHCP?
11. Які етапи отримання інформації клієнтом за протоколом DHCР?
12. Яка основна і додаткова інформація може бути отримана за
протоколом DHCР?
13. Для чого використовується DNS?
14. Чим відрізняється рекурсивний DNS-запит від нерекурсивного?
174
11.5. Порядок виконання і здачі роботи
175
Лабораторна робота 12
Стандартний ACL
При використанні стандартних ACL, єдиним критерієм для визначення
того, що пакет дозволений або заборонений є IP-адреса джерела цього
пакета. Формат елемента списку доступу такий:
Router(config)#access-list # permit | deny source-address source-mask,
176
де # (ціле число) – номер списку доступу, source-address – адреса джерела
пакету, source-mask – маска в інверсній формі, що накладається на адресу;
permit – дозволити проходження пакета, deny – заборонити проходження
пакета. Число # визначає приналежність елемента списку доступу до певного
списку доступу з номером #. Перша команда access-list визначає перший
елемент списку доступу, друга команда визначає другий елемент списку
доступу і так далі. Маршрутизатор обробляє кожен визначений в ньому
список доступу по елементах зверху вниз. Тобто якщо адреса source-address
пакета з урахуванням маски задовольняє умову елемента списку, то подальші
елементи списку маршрутизатор не обробляє. Отже, для уникнення зайвої
обробки, елементи, що визначають загальніші умови, слід поміщати на
початку списку. Усередині маршрутизатора можуть бути визначені декілька
списків доступу. Номер стандартного списку повинен лежати в діапазоні 1 –
99. Маска в списку доступу задається в інверсній формі. Наприклад маска
255.255.0.0 виглядає як 0.0.255.255.
Маршрутизатори Cisco припускають, що усі адреси, не згадані в списку
доступу в явному вигляді, заборонені. Тобто у кінці списку доступу
присутній невидимий елемент
Router(config)#access-list # deny 0.0.0.0 255.255.255.255
Так, якщо ми хочемо дозволити тільки трафік від адреси 1.1.1.1 і
заборонити увесь інший трафік, то достатньо в список доступу помістити
один елемент
Router(config)#access-list 77 permit 1.1.1.1 0.0.0.0.
Тут передбачається, що ми організували список доступу з номером 77.
Розглянемо можливість застосування стандартних списків доступу для
діапазону адрес. Візьмемо, приміром, діапазон 10.3.16.0 – 10.3.31.255. Для
отримання інверсної маски можна відняти із старшої адреси молодшу і
отримати 0.0.15.255. Тоді приклад елемента списку можна задати командою
Router(config)#access-list 100 permit 10.3.16.0 0.0.15.255
Для того щоб список доступу почав виконувати свою роботу, він має
бути застосований до інтерфейсу за допомогою команди
Router(config-if)#ip access-group номер-списка-доступа in або out
Список доступу може бути застосований або як вхідний (in), або як
вихідний (out). Коли ви застосовуєте список доступу як вхідний, то
маршрутизатор отримує вхідний пакет і звіряє його вхідну адресу з
177
елементами списку. Маршрутизатор дозволяє пакету маршрутизуватися на
інтерфейс призначення, якщо пакет задовольняє елементам списку або
відкидає пакет, якщо він відповідає умовам заборонних елементів списку.
Якщо ви застосовуєте список доступу як вихідний, то роутер отримує
вхідний пакет, маршрутизує його на інтерфейс призначення і тільки тоді
обробляє вхідну адресу пакета згідно з елементами списку доступу цього
інтерфейсу. Далі маршрутизатор або дозволяє пакету покинути інтерфейс,
або відкидає його згідно з дозвільними елементами списку або з заборонними
відповідно. Так, створений раніше список з номером 77 застосовується до
інтерфейсу Ethernet 0 маршрутизатора як вхідний список шляхом виконання
команди
Router(config-if)#ip access-group 77 in
Цей же список застосовується до інтерфейсу Ethernet 0 маршрутизатора
як вихідний список за допомогою команди
Router(config - if)#ip access-group 77 out
Відміняється список на інтерфейсі за допомогою команди no:
Router(config - if)#no ip access-group 77 out
Послідовність дій для втілення списку доступу:
1) Визначити критерії і обмеження для доступу.
2. Утілити їх за допомогою команд аccess-list, створивши список
доступу з певним номером.
3. Застосувати список до певного інтерфейсу або як такий, що входить,
або як такий, що виходить.
Зупинимося на останньому пункті. У загальному випадку стандартний
список доступу слід поміщати як можна ближче до точки призначення, а не
до джерела пакетів. Хоча можуть бути виключення. Оскільки стандартний
список доступу працює тільки з початковими адресами, то не завжди
можлива детальна конфігурація. Вимагається докласти зусиль, щоб уникнути
виникнення небажаних конфігурацій доступу. Якщо список поміщений
поблизу джерела пакетів, то дуже ймовірно, що доступ до пристроїв, на яких
не здійснюється ніяка конфігурація доступу, буде ускладнений.
178
Розширені ACL
Із стандартним ACL ви можете вказувати тільки адресу джерела, а
маска не обов’язкова. У розширених ACL ви повинні вказати і адресу
приймача, і адресу джерела з масками. Можете додати додаткову
протокольну інформацію для джерела і призначення. Наприклад, для TCP і
UDP дозволено вказувати номер порту, а для ICMP – тип повідомлення.
Загальна форма команди для формування рядка списку розширеного
списку доступу
access-list ACL-number {permit | deny} protocol source source-wildcard
[operator source - port] destination destination-wildcard [operator
destination - port] [precedence precedence-number] [tos tos] [established]
[log | log-input], де ACL-number – 100 – 199|2000 – 2699, protocol – ip, icmp,
tcp, gre, udp, igrp, eigrp, igmp, ipinip, nos і ospf. Для порту source-port або
destination-port можна використовувати номер порту або його позначення
bgp, chargen, daytime, discard, domain, echo, finger, ftp, ftp - data, gopher,
hostname, irc, klogin, kshell, lpd, nntp, pop2, pop3, smtp, sunrpc, syslog, tacacs-
ds, talk, telnet, time, uucp, whois і www. Operator це eq (дорівнює), neq (не
дорівнює), gt (більше ніж), lt (менше ніж), range (вказується два порти для
визначення діапазону).
Як і для стандартних ACL, розширений ACL слід застосувати до
інтерфейсу. До трафіку, що входить на інтерфейс
Router(config-if)#ip access-group #ACL in
або до трафіку, що виходить з інтерфейсу
Router(config-if)#ip access-group #ACL out
Тут #ACL – номер списку.
Приклади елементів розширеного ACL:
• Дозволити SMTP звідусіль на хост
Router(config)#access-list 111 permit tcp any host 172.17.11.19 eq 25
• Дозволити телнет звідусіль на хост
Router(config)#access-list 111 permit tcp any host 172.17.11.19 eq 23
Розширений ACL дозволяє дуже тонко настроїти права доступу.
Іменовані ACL
До іменованих ACL звертаються за ім’ям, а не за номеру, що дає
наочність і зручність для звернення. Для створення іменованого ACL є
команда
179
Router(config)#ip access-list extended ACL_name
і далі команди для створення елементів списку саме цього іменованого
списку
Router(config-ext-nacl)#permit|deny IP_protocol source_IP_address
wildcard_mask [protocol_information] destination_IP_address
wildcard_mask [protocol_information] [log]
Для завершення створення списку слід дати команду exit.
Ім’я іменованого списку чутливе до регістра. Команди для створення
іменованого списку аналогічні командам для створення елементів
нумерованого списку, але сам процес створення відмінний. Ви повинні
використовувати ключове слово ip перед головним ACL-оператором і тим
самим увійти до режиму конфігурації саме для цього іменованого списку. У
цьому режимі ви починаєте з ключових слів permit або deny і не повинні
вводити access-list на початку кожного рядка. Прив’язка іменованих ACL до
інтерфейсу здійснюється командою
Router(config)#interface type [slot_#]port_#
Router(config-if)#ip access-group ACL_name in|out
ACL обробляються зверху вниз. Трафік, що найбільш часто
повторюється, має бути оброблений на початку списку. Як тільки
оброблюваний списком пакет задовольняє елемент списку, обробка цього
пакета припиняється. Стандартні ACL слід поміщати ближче до точки
призначення, де трафік повинен фільтруватися. Вихідні (out) розширені ACL
слід поміщати як можна ближче до джерела фільтрованих пакетів, а вхідні
слід – до точки призначення, де трафік повинен фільтруватися.
Іменований ACLs дозволяє вам себе редагувати. Для цього потрібно
набрати команду, яка була використана для його створення
Router(config)#ip access-list extended ACL_name
За допомогою клавіш з вертикальними стрілками знайти рядок списку,
який ви хочете змінити. Змінити його, використовуючи горизонтальні
стрілки. Натиснути введення. Новий рядок додасться в кінець списку. Старий
не знищиться. Для його знищення слід ввести no на початку рядка.
MikroTik RouterOS
180
1) повна фільтрація пакетів;
2) фільтрація за протоколом peer-to-peer;
3) класифікація трафіку за:
• вихідною MAC-адресою;
• IP-адресою (мережі або списки) і типами адрес (broadcast, local,
multicast, unicast);
• портами або діапазонами портів;
• IP-протоколами;
• опціями протоколів (ICMP-типи й кодові поля, прапори TCP, IP
опції й MSS);
• вхідним і вихідним трафіком;
• внутрішнім потоком й маркуванням з’єднань;
• ToS(DSCP)-байтом;
• умістом пакету;
• лімітуванням, кількістю пакетів (за станом лічильника).
• розміром пакета;
• кількістю пакетів, отриманих за певний час.
181
Фільтруючі ланцюжки
Опис властивостей
182
action(accept | add-dst-to-address-list | add-src-to-address-list | drop |
jump | log | passthrough | reject | return | tarpit; за замовчуванням: accept)
– дія що застосовується до пакета, якщо знайдено відповідність у правилі.
accept – прийняти пакет. Не вживати ніяких дій, тобто пакет прийнятий
і ніякі правила до нього більше не застосовуються.
add-dst-to-address-list – додати адресу призначення IP-пакета в список
адрес, що задано у параметрі address-list.
add-src-to-address-list – додати адресу джерела IP-пакета в список
адрес, що задано у параметрі address-list.
drop – тихо скинути пакет (без посилки ICMP-повідомлення про
відхилення пакета).
jump – стрибнути в ланцюжок, що задано значенням у параметрі jump-
target.
log – кожна відповідність із цієї дії буде додана в системний журнал.
passthrough – ігнорувати це правило й перейти до наступного.
reject – відхилити пакет і послати ICMP-повідомлення про відхилення.
return – повернути контроль у те місце ланцюжка, звідки був
зроблений стрибок.
tarpit – захоплення і втримання вхідних TCP-з’єднань (застосовується
із прапорами SYN/ACK у вхідному TCP SYN-пакеті).
chain (forward | input | output | name) – визначений ланцюжок, у який
вставляється правило. Оскільки різний трафік проходить через різні правила,
то будьте обережні при виборі ланцюжка для визначеного правила. Якщо
уведене значення не буде відповідати назві вже існуючого ланцюжка, то буде
створений новий ланцюжок. Це обов’язкова команда. Зазвичай більша
частина стосується forward трафіку, тобто трафіку, що проходить через
маршрутизатор.
comment(text) – коментар до правила. Коментар, який може
бути використаний для опису правил.
dst-address(IP address/netmask | IP address-IP address) – певний
діапазон IP-адрес призначення. Примітка: консоль конвертує значення
address/netmask у валідну мережну адресу, тобто 1.1.1.1/24 буде конвертовано
в 1.1.1.0/24.
183
dst-address-list(name) – відповідність пакета адресі призначення, взятої
з заданого користувачем списку адрес.
dst-address-type (unicast | local | broadcast | multicast) – відповідність
адрес призначення одному з типів IP-пакетів:
unicast – IP-адреса використана для з’єднання точка-точка. У цьому
випадку цей пакет тільки один посилає й один приймає пакет.
local – відповідність адресам маршрутизатора.
broadcast – пакет посланий від однієї точки всім точкам IP-підмережі.
multicast – цей тип IP-адресації призначений для передачі від однієї або
декількох точок до інших точок.
dst-limit – (integer/time{0,1},integer,dst -address | dst-port | src-
address{+},time{0,1}) – обмеження кількості пакетів за секунду. Лімітується
за IP-адресою призначення або за портом призначення. На відміну від
загального лімітування кожна IP-адреса/порт призначення має свій ліміт.
dst-port (integer: 0..65535-integer: 0..65535{*}) – порт призначення або
діапазон портів.
icmp-options (integer:integer) – відповідність ICMP Type:Code-полям.
in-interface (name) – інтерфейс, на який заходить пакет, що входить в
маршрутизатор.
ipv4-options (any | loose-source-routing | no-record-route | no-router-
alert | no-source-routing | no-timestamp | none | record -route | router-alert |
strict-source-routing | timestamp) – відповідність заголовка опціям ipv4.
out-interface (name) – інтерфейс, через який пакет залишає
маршрутизатор.
packet-size (integer: 0..65535-integer: 0..65535{0,1}) – відповідність
пакета визначеному розміру або розміру в заданому діапазоні (в байтах). Min
– нижня границя розміру діапазону або окремо взятого значення. Max –
верхня границя розміру діапазону.
protocol (ddp | egp | encap | ggp | gre | hmp | icmp | idrp -cmtp | igmp |
ipencap | ipip | ipsec -ah | ipsec-esp | iso-tp4 | ospf | pup | rdp | rspf | st | tcp |
udp | vmtp | xns -idp | xtp | integer) – відповідність визначеному IP-протоколу
за назвою або номером. Вам необхідно використовувати цю можливість,
якщо ви хочете визначати в правилах порти.
184
src-address (IP address/netmask | IP address -IP address) – певний
діапазон IP-пакетів джерела.
src-mac-address (MAC address) – вихідна MAC-адреса (джерела).
src-port (integer: 0..65535-integer: 0..65535{*}) – порт джерела або
діапазон портів.
Перед числовими значеннями може використовуватися заперечення
«!». Наприклад, для завдання в списку розміра пакету більше ніж 100 байт,
можна вказати параметр packet-size наступним чином: packet-size = !0-100.
Прості списки
185
Рисунок 12.1 – Топологія для виконання практичної частини
186
Спробуйте пропінгувати попарно усі хости між собою. Відмітьте
вірність застосування правил брандмауера.
Розширені списки
Видаліть створені прості списки. Для цього на маршрутизаторі Cisco
виконайте команду
Router1(config-if)#no ip access-group 2 in
Router1(config)#no access-list 2
187
Додайте до топології ще один хост, та в його налаштуваннях у розділі
NIO Ethernet оберіть створений адаптер та натисніть Add (рис. 12.3.).
188
Router2, а на маршрутизатор Router1 можливий доступ з мережі 172.17.0.0/16
також тільки по telnet. Інший трафік в мережі не заборонений.
Дозвольте заходити на Router1 телнетом з паролем cisco:
Router1(config)#line vty 0 4
Router1(config-line)#login
Router1(config-line)#password cisco
Router1(conf)#access-list 101 permit tcp 172.17.0.0 0.0.255.255 any eq telnet
log
Router1(config)#access-list 101 deny ip 172.17.0.0 0.0.255.255 any
Router1(config)#access-list 101 permit ip any any
Router1(config)#int e0/2
Router1(config-if)#ip access-group 101 in
Тепер з мережі 172.17.0.0 пінг не проходить через маршрутизатор
Router1
189
На маршрутизаторі Mikrotik необхідно виконати наступні команди:
[admin@MikroTik] /ip firewall filter> add chain=input src-add=10.0.0.0/8 \
protocol=tcp port=23 action=accept
[admin@MikroTik] /ip firewall filter> add chain=input src-add=10.0.0.0/8 \
action=drop
[admin@MikroTik] /ip firewall filter> add chain=forward src-add=10.0.0.0/8 \
action=drop
Переконайтеся, що список працює.
1. Що таке ACL?
2. Яка адреса є критерієм для дозволу/заборони пакета?
3. Де застосовуються ACL?
4. Як задати елемент ACL і що таке інверсна маска?
5. Як роутер обробляє елементи ACL?
6. Який елемент завжди неявно присутній в списках на Cisco, Mikrotik?
7. Чим відрізняється вхідний, вихідний та транзитний трафіку?
8. Де в мережі рекомендується розміщувати ACL?
9. Що фільтрують розширені ACL?
10. Яку додаткову функціональність мають розширені ACL в
порівнянні із стандартними?
190
Для налаштування маршрутизаторів Mikrotik скористайтеся
наступними такими способами налаштування:
N%3 0 1 2
Спосіб CLI WebFig WinBox
191
Створіть списки доступу, що виконують наступні дії:
1) Забороняють мережний трафік між мережами:
Вузол – Вузол –
Варіант Варіант
маршрутизатор маршрутизатор
1 С1 – R1 6 С5 – R2
2 С1 – R2 7 С6 – R1
3 С2 – R3 8 С4 – R3
4 С3 – R1 9 С5 – R3
5 С4 – R2 10 С6 – R2
192
12.8. Зміст звіту
193
Лабораторна робота 13
194
Cisco використовує для NAT специфічну термінологію для вузлів в intranet і
Інтернет як до, так і після перетворення адрес. Це такі адреси:
• Внутрішня (inside) – адреса, використовувана в організації. Різні
організації можуть мати однакові внутрішні адреси.
• Зовнішня (outside) – адреса, визначена де-небудь поза цією
організацією. Зовнішня адреса іншої організації може збігатися з
внутрішньою адресою цієї організації.
• Глобальна – зареєстрована і законна адреса IP, яка може проходити
через Інтернет.
• Локальна – адреса, що використовується внутрішньо в іntranet. Ці
адреси не перетинають Інтернет-адреси і тому розглядаються як локальні.
• Внутрішня локальна (inside local) – адреса, що використовується в
організації та не перетинає Інтернет-адреси.
• Внутрішня глобальна (inside global) – адреса, що використовується в
організації та є Інтернет-адресою.
• Зовнішня локальна (outside local) – адреса, визначена де-небудь поза
цією організацією та така, що не є Інтернет-адресою.
• Зовнішня глобальна (outside global) – адреса, визначена де-небудь
поза цією організацією та така, що є Інтернет-адресою.
При відправці пакетів від інтерфейсу внутрішнього хоста NAT замінює
в ньому адресу джерела на деяку глобальну адресу. При прийомі пакета у
відповідь NAT замінює в ньому глобальну адресу приймача (адресу
зовнішнього інтерфейсу локального маршрутизатора) на адресу інтерфейсу
внутрішнього хоста. Для такої заміни маршрутизатор підтримує спеціальні
таблиці перетворень адрес, які постійно оновлюються.
Розрізняють три способи перетворення адрес:
1) статичний;
2) динамічний;
3) перевантаження (overload, PAT, masquerading).
При статичному NAT в явному вигляді є пари внутрішня_адреса =
глобальна_адреса. При динамічному перетворенні глобальні адреси беруться
з певного пулу адрес. При перевантаженні усі внутрішні адреси, що
195
підлягають перетворенню, замінюються на єдину глобальну адресу
зовнішнього інтерфейсу маршрутизатора.
Для конфігурації NAT слід визначити на маршрутизаторі внутрішні і
зовнішні мережі за допомогою команд ip nat inside | outside. Ця команда
визначається на рівні інтерфейсів, тобто в контексті команди interface.
Додаткові команди залежать від використовуваного типу NAT. Це або
завдання статичного NAT, або визначення пулу зовнішніх адрес або завдання
команди для перевантаження. Як правило, слід також задати список
управління доступом ACL для визначення внутрішнього трафіку, який
перетворюватиметься. Сам по собі ACL не здійснює ніякого NAT-
перетворення.
Зупинимося додатково на перевантаженні, яке, як правило, називають
PAT (Port Address Translation – перетворення адрес за допомогою портів або
masquerading). PAT дозволяє декільком внутрішнім хостам використовувати
одну глобальну адресу. Один з варіантів реалізації PAT базується на
використанні послідовності вільних TCP і UDP портів і полягає в такому:
служба NAT знаходиться на маршрутизаторі М з внутрішньою глобальною
адресою X. Нехай є пакет П від внутрішньої локальної адреси Yi і порту Pi до
зовнішньої адреси G і порту p. Пакет проходить через маршрутизатор М.
NAT замінює в ньому адресу Yi джерела і порт джерела Pi внутрішнього
хоста на унікальну пару X : Pinew, де Pinew – черговий вільний номер порту.
Рядок (Yi: Pi, X: Pinew, G: p) заноситься в таблицю NAT маршрутизатора М.
Пакет у відповідь в полі адреси приймача міститиме X, а в полі порту
приймача – Pinew. У полі адреси – порт джерела буде G: p. Маршрутизатор
М за значеннями X, Pinew, G, p знаходить у своїй NAT-таблиці рядок (Yi: Pi,
X: Pinew, G: p) і замінює в пакеті адресу приймача X на Yi, а порт
призначення Pinew – на Pi. Пакет у відповідь прийде за потрібною адресою
Yi з потрібним номером порту призначення Pi. Порт Pinew повертається в
список вільних портів.
Процес NAT прозорий для внутрішніх адрес. Так, хост з внутрішньою
адресою Yi, що відправив пакет в зовнішній світ і отримав відповідь, «не
здогадується», що пакет пройшов NAT-перетворення на маршрутизаторі як
196
при відправці, так і при прийомі. Внутрішньому хосту здається, що він має
безпосередній вихід в зовнішній світ.
197
R1(config-if)#ip nat inside
Password:
R1>show users
Line User Host(s) Idle Location
0 con 0 175.15.0.2 00:07:53
*130 vty 0 idle 00:00:00 175.15.0.2
2.1. На маршрутизаторі R1 видаліть попередню NAT-команду
статистичного перетворення
R1(config)#no ip nat inside source static 192.168.0.2 175.15.0.1
і настройте NAT для динамічного перетворення адреси маршрутизатора R2.
Використайте область адрес в діапазоні: 175.15.0.50 – 175.15.0.100. Визначте
пул адрес pool1
198
R1(config)#ip nat pool pool1 175.15.0.50 175.15.0.100 netmask
255.255.0.0
Задайте NAT-перетворення адрес із списку 1 в пул адрес pool1:
R1(config)#ip nat inside source list 1 pool pool1
Настройте і перевірте список доступу 1 для внутрішніх адрес, які
перетворюватимуться:
R1(config)#access-list 1 permit 192.168.0.0 0.0.0.255
Перевірте перетворення:
R2#telnet 175.15.0.2
[admin@MikroTik] > user active print
Flags: R - radius
# WHEN NAME ADDRESS
0 nov/04/2013 09:29:25 admin
1 nov/04/2013 10:31:16 admin 175.15.0.50
199
R1#show ip nat translations
Pro Inside global Inside local Outside local Outside global
tcp 175.15.0.1:11000 92.168.0.2:11000 175.15.0.2:23 175.15.0.2:23
3.2. На маршрутизаторі Mikrotik видаліть попередню NAT-команду
динамічного перетворення:
[admin@MikroTik]> ip firewall nat remove 0
Та задайте динамічне перевантаження:
[admin@MikroTik]> ip firewall nat add chain=srcnat action=masquerade \
out-interface=ether1
Перевірте перетворення.
200
Спробуйте зайти з браузеру на ІР-адресу 175.15.0.2. Ви повинні
потрапити в Web-інтерфейс маршрутизатору Mikrotik_2 (На маршрутизаторі
Mikrotik_2 повинен бути налаштован маршрут за замовченням на адресу
192.168.0.1).
201
13.6. Завдання для самостійної роботи
202
Лабораторна робота 14
ТЕХНОЛОГІЯ ПРОКСІ-СЕРВЕР
203
• Стиснення даних: проксі-сервер завантажує інформацію з
Інтернету і передає її кінцевому користувачеві в стислому вигляді. Такі
проксі-сервери використовуються в основному з метою економії зовнішнього
трафіка.
• Захисту локальної мережі від зовнішнього доступу: наприклад,
можна налаштувати проксі-сервер так, що локальні комп’ютери будуть
звертатися до зовнішніх ресурсів тільки через нього, а зовнішні комп’ютери
не зможуть звертатися до локальних взагалі, тому що вони бачать тільки
проксі-сервер (чимось схоже на техологію NAT).
• Обмеження доступу з локальної мережі до зовнішньої: наприклад,
можна заборонити доступ до певних веб-сайтів, обмежити використання
Інтернету якимось локальним користувачам, встановлювати квоти на трафік
або смугу пропускання, фільтрувати рекламу і віруси.
• Анонімізації доступу до різних ресурсів. Проксі-сервер може
приховувати відомості про джерело запиту або користувача. У такому разі
цільовий сервер бачить лише інформацію про проксі-сервер, наприклад, IP-
адресу, але не має можливості визначити дійсне джерело запиту. Існують
також спотворюючі проксі-сервери, які передають цільовим серверам
неправдиву інформацію про справжнього користувача.
Проксі-сервер, до якого може отримати доступ будь-який користувач
мережі Інтернет, називається відкритим.
Крім звичайних проксі-серверів, можуть бути ще такі:
1. Прозорий проксі – схема зв’язку, при якій трафік, або його частина,
перенаправляється на проксі-сервер неявно (засобами маршрутизатора). При
цьому клієнт може використовувати всі переваги проксі-сервера без
додаткових налаштувань, алеу той же час він не має можливості вибору.
2. Зворотний проксі – на відміну від прямого, він ретранслює запити
клієнтів із зовнішньої мережі на один або декілька серверів, логічно
розташованих у внутрішній мережі. Часто використовується для
204
балансування мережного навантаження між декількома веб-серверами і для
підвищення їх безпеки, відіграючи при цьому роль міжмережного екрана на
прикладному рівні.
205
Розпізнавши дані запиту, перевіривши його коректність і дозвіл для
клієнтського комп’ютера, проксі-сервер, не розриваючи з’єднання, сам
відкриває нове з’єднання безпосередньо з ресурсом і робить той же самий
запит. Отримавши дані (або повідомлення про помилку), проксі-сервер
передає їх клієнтському комп’ютеру.
З цього випливають два основні обмеження звичайного проксі-сервера:
1. Проксі-сервер повинен бути повнофункціональним сервером і
клієнтом для кожного підтримуваного протоколу.
2. Проксі-сервер може обслуговувати тільки ті мережні протоколи, у
запиті яких передається ім’я або IP-адреса ресурсу (не відноситься до
прозорих проксі – вони отримують IP-адресу безпосередньо з перехопленого
з’єднання).
У часи становлення Інтернету проксі-сервери були найпопулярнішим
способом виходу в Інтернет з локальних мереж. Цьому сприяли такі
обставини:
– Використання основного протоколу – http, який легко просіюється.
– Підтримка проксі більшістю браузерів і/або операційних систем.
– Контроль доступу та облік трафіку щодо користувачів.
– Проксі-сервер – це звичайна програма (а не системна), яка може
працювати з мінімальними правами на будь-якій ОС з підтримкою мережі
(стека TCP/IP);
– Відсутність доступу в Інтернет за іншими протоколами часто ставала
скоріше перевагою, ніж недоліком.
У зв’язку із зростаннямролі інших мережних протоколів, переходом до
тарифікації послуг Інтернету за швидкістю доступу, а також появою дешевих
апаратних маршрутизаторів з функцією NAT, використання звичайних
проксі-серверів для виходу користувачів до Інтернету застосовується вкрай
рідко. Однак великого поширення набули прозорі проксі-сервери (протоколу
http, іноді деяких інших), в тому числі і ті, що входять до складу багатьох
206
апаратних маршрутизаторів для доступу до Інтернету, з метою збору
статистики та контролю доступу до сайтів. Інші порти (протоколи) при цьому
проходять через NAT.
Властивість Опис
cache-administrator (string; Default: Електронна пошта адміністратора, яка
webmaster) відображається на сторінці помилки проксі-
сервера
cache-on-disk (yes | no; Default: no) Виконувати кешування на диск, чи
оперативну пам’ять
max-cache-size (none | unlimited | integer: Визначає максимальний розмір кешу,
0..4294967295; Default: none) виміряний у кілобайтах
max-client-connections (integer: Dynamic; Максимальна кількість підключень,
Default: 600) прийнятих від клієнтів (будь-які подальші
з'єднання будуть відхилені)
max-fresh-time (time; Default: 3d) Максимальний час для зберігання
кешованого об’єкта. Період дійсності
об’єкта, як правило, визначається самим
об’єктом, але у випадку, якщо він
встановлений занадто великим, можна
перевизначити максимальне значення
max-server-connections (integer: Dynamic; Максимальна кількість підключень до
Default: 600) серверів (будь-які подальші з’єднання з
клієнтами будуть призупинені, доки деякі
з’єднання з сервером не припиняться)
parent-proxy (Ip4 | ip6; Default: 0.0.0.0) IP-адреса та порт іншого HTTP-проксі для
переадресації всіх запитів. Якщо
встановлено значення 0.0.0.0, батьківський
проксі не використовується
parent-proxy-port (integer: 0..65535; Default: Порт, який прослуховує батьківський
0) проксі
207
Продовження табл. 14.1
TCP порт, який проксі-сервер буде слухати.
port (integer: 0..65535; Default: 8080)
Цей порт повинен бути вказаний для всіх
клієнтів, які хочуть використовувати сервер
як HTTP-проксі. Прозоре (з нульовою
конфігурацією для клієнтів) налаштування
проксі-сервера може бути зроблено шляхом
перенаправлення HTTP-запитів до цього
порту в брандмауері IP за допомогою
функції destination NAT
Fetch
208
Продовження табл. 14.2
dst-path (string; Default: )
Назва файлу та шлях призначення
host (string; Default: )
Доменне ім’я або віртуальне доменне ім’я (якщо
використовується на веб-сайті, з якого ви хочете
копіювати інформацію). Наприклад,
address=wiki.mikrotik.com host=forum.mikrotik.com
У цьому прикладі отримана IP-адреса однакова
(66.228.113.27), але хости є різними
keep-result (yes | no; Default: yes)
Якщо так, створюється вхідний файл.
mode (ftp|http|tftp {!} https;
Протокол підключення - http, https, ftp або tftp
Default: http)
password (string;
Пароль, який потрібен для автентифікації на
Default: anonymous)
віддаленому пристрої
port (integer; Default: )
Порт з'єднання
src-path (string; Default: )
Назва дистанційного файлу, який потрібно
скопіювати
upload (yes | no; Default: no)
Якщо ввімкнено, то завантаження буде використано
для завантаження файлу на віддалений сервер
Потрібно встановити параметри src-path та dst-path
url (string; Default: )
URL, що вказує на файл. Можна використовувати
замість параметрів адреси та src-шляху
user (string; Default: anonymous)
Ім’я користувача, яке потрібне для автентифікації на
віддаленому пристрої
209
Рисунок 14.2 – Топологія для практичної частини роботи
<!DOCTYPE html>
<html>
<body>
<h1>Welcome!</h1>
<h2>Testing proxy!</h2>
<p>This page on Cisco HTTP-Server!</p>
</body>
</html>
210
WebServer(config)#ip http port 80
211
reject-with=icmp-network-unreachable
212
Рисунок 14.7 – Процес отримання файлу проксі-сервером
213
Блокування сайту за DNS
214
14.4. Контрольні питання
215
Лабораторна робота 15
216
популярні алгоритми перевірки цілісності даних – MD5 і SHA1. Далі система
перевіряє, чи не були змінені дані під час руху по мережах помилково або
зловмисно. Таким чином, побудова VPN припускає створення захищених від
стороннього доступу тунелів між декількома локальними мережами або
віддаленими користувачами.
Для побудови VPN необхідно мати на обох кінцях лінії зв’язку
програми шифрування вихідного й дешифрування вхідного трафіків. Вони
можуть працювати як на спеціалізованих апаратних пристроях, так і на ПК.
Керування доступом, аутентифікація й шифрування – найважливіші
елементи захищеного з’єднання.
Основи тунелювання
217
багатоканальний протокол PPP (MLPPP), протокол стиску CCP (compression
control protocol), протокол шифрування ECP (encryption control protocol) і т. д.
PPP-протокол був розроблений на основі протоколу HDLC і
доповнений деякими можливостями, які до цього зустрічалися тільки в
комерційних протоколах. PPP дозволяє працювати декільком протоколам
мережного рівня на одному каналі зв’язку. Інакше кажучи, усередині
одного PPP-з’єднання можуть передаватися потоки даних різних мережних
протоколів (IP, Novell IPX і т. д.), а також дані протоколів канального рівня
локальної мережі. Після встановлення з’єднання для настроювання
кожного мережного протоколу використовується протокол NCP. Він
використовується для узгодження й визначення настроювань мережного
рівня, таких як мережна адреса або настроювання стискання.
Кожний кадр PPP завжди починається й завершується прапором 0x7E.
Потім йде байт адреси й байт керування, які теж завжди дорівнюють 0xFF і
0x03 відповідно. У зв’язку з імовірністю збігу байтів усередині блоку
даних із зарезервованими прапорами, існує система автоматичного
коректування «проблемних» даних з наступним відновленням.
Фази PPP
– Link Dead. Ця фаза настає, коли зв’язок порушений, або коли одній зі
сторін вказали не підключатися (наприклад, користувач завершив модемне
з’єднання.)
– Установлення зв’язку (Link Establishment Phase). У даній фазі
проводиться настроювання лінії за допомогою протоколу LCP. Якщо
настроювання було успішне, керування переходить у фазу аутентифікації або
у фазу Network-Layer Protocol, залежно від того, чи потрібна аутентифікація.
– Аутентифікація (Authentication Phase). Дана фаза є необов’язковою.
Вона дозволяє сторонам перевірити одна одну перед установленням
з’єднання. Якщо перевірка успішна, керування переходить у фазу Network-
Layer Protocol.
– Протокол мережного рівня (Network-Layer Protocol Phase). У даній
фазі викликається NCP для бажаного протоколу. Наприклад, IPCP
використовується для встановлення IP-сервісів. Передача даних також
218
проходить у цій фазі. Закриття мережних протоколів теж включається в дану
фазу.
– Link Termination Phase. Ця фаза закриває з’єднання. Вона
викликається у випадку помилок аутентифікації: якщо було настільки багато
помилок контрольних сум, що обидві сторони вирішили закрити з’єднання;
якщо з’єднання раптом обірвалося; якщо користувач відключився. Дана фаза
намагається закрити все настільки акуратно, наскільки це можливо в даних
обставинах.
219
У протоколі SSTP для організації каналу використовується
шифрування за протоколом SSL. У SSTP установлення з’єднання й обмін
даними відбувається в зашифрованому вигляді. Як правило, для
установлення зв’язку за SSL-протоколом клієнт і сервер використовують
сертифікати. Ключі із сертифікатів застосовуються для аутентифікації й
шифрування трафіку.
OpenVPN
Протокол ЕоІР
220
Рисунок 15.1 – Топологія практичної частини
221
Налаштування VPCS:
VPCS[1]> ip 10.1.1.3/24 10.1.1.1
VPCS[2]> ip 10.1.1.4/24 10.1.1.2
222
Зупиніть топологію. Додайте в налаштуванні qemu маршрутизаторів
наступні параметри:
для Mikrotik:
-net nic,vlan=6 -net tap,vlan=6,ifname=tap0
для Mikrotik_3:
-net nic,vlan=6 -net tap,vlan=6,ifname=tap1
Запустіть топологію. Видаліть попередні налаштування на
маршрутизаторах Mikrotik та Mikrotik_3, а саме:
[admin@R1] > int bridge re 0
[admin@R1] > int eoip re 0
[admin@R3] > int bridge re 0
[admin@R3] > int eoip re 0
Додайте ІР-адреси для зв’язку з маршрутизаторами по Winbox:
[admin@R1] > ip ad ad ad=192.168.10.1/24 int=ether7
[admin@R3] > ip ad ad ad=192.168.11.1/24 int=ether7
В налаштуваннях tap-інтерфейсів задайте ІР-адреси: відповідно
192.168.10.2/24 – для tap0; 192.168.11.2/24 – для tap1.
Запустіть два екземпляри Winbox та підключіться до маршрутизаторів
за допомогою ІР-адрес: 192.168.10.1 – до Mikrotik; 192.168.11.1 – до
Mikrotik_3.
Для реалізації PPTP, SSTP, L2TP та OpenVPN каналу між
маршрутизаторами Mikrotik та Mikrotik_3 в топології необхідно мати IP-
канал (він у нас вже налаштований).
У Winbox Mikrotik додайте PPP-користувача user з паролем «pas» (PPP-
>Secrets+).
Отже між маршрутизаторами Mikrotik та Mikrotik_3 встановлений
зв’язок за IP. Виконайте з’єднання через цей канал маршрутизаторів за
протоколом PPTP. Нехай Mikrotik буде PPTP-сервером, а Mikrotik_3 – PPTP-
клієнтом.
Налаштування РРТР
У Winbox Mikrotik додайте PPТP-сервер (PPP->Interfaces + PPТР-server)
(рис. 15.3).
223
Рисунок 15.3 – Налаштування РРTР-сервера
224
Налаштування L2TP
Виконайте аналогічні дії, як і для протоколу РРTР, але заміть РРTР
обиріть L2TP.
RSA-сертифікати
Механізм сертифікатів заснований на технології несиметричного
шифрування, що здійснюється парою ключів – відкритим та закритим. Якщо
повідомлення зашифроване відкритим ключем, то воно може бути
розшифроване тільки закритим ключем, а якщо повідомлення зашифроване
закритим ключем, то воно може бути розшифровано тільки відкритим
ключем. Обмінюються тільки відкритими ключами. Можна запропонувати
такий механізм аутентифікації, що заснований на несиметричному
шифруванні, а саме:
1) Б шле А запит на аутентифікацію.
2) А у відповідь шле Б випадкову послідовність.
3) Б шифрує її закритим ключем і відправляє зашифроване А.
4) А розшифровує прийняте й порівнює з відісланим. Якщо збіглося, то
Б – це Б.
5) А аутентифіціює Б й повідомляє його про це.
Роздачею сертифікатів управляє центр сертифікації. Сертифікат
містить «паспортні» дані одержувача сертифіката, відкритий ключ і
цифровий підпис центру сертифікації (зашифрованим відкритим ключем
центру, що засвідчує паспортні дані й відкритий ключ із цього сертифіката).
Обмін сертифікатами рівносильний обміну відкритими ключами. Два
кореспонденти, одержавши сертифікати, можуть ними обмінятися й потім
перевірити їх на справжніть, якщо в них є сертифікат центру сертифікації.
Для цього вони повинні зашифрувати дані цього сертифіката відкритим
ключем сертифікаційного центру й порівняти їх із цифровим підписом
сертифіката, що перевіряється.
Для роботи з протоколами SSTP та OpenVPN необхідні сертифікати.
Для цього створіть на диску С: каталог С:\openssl\ssl\ та скопіюйте в нього
файл OpenVPN\bin\openssl.exe (він знаходиться у каталозі з OpenVPN).
Також у цей каталог скопіюйте файл openssl.cnf. Далі працюйте в
командному рядку з каталогу С:\openssl\ssl\ та виконайте наступні команди:
225
1) openssl genrsa -des3 -out ca.key 1024
Enter pass phrase for ca.key: pass
Verifying - Enter pass phrase for ca.key: pass
2) openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
Enter pass phrase for ca.key: pass
………………………..
Country Name (2 letter code) [AU]:ua
Locality Name (eg, city) []:kha
Organizational Unit Name (eg, section) []:khpi
Common Name (eg, YOUR name) []:stud
Email Address []:stud@khpi.ua
226
Country Name (2 letter code) [AU]:ua
Locality Name (eg, city) []:kha
Organizational Unit Name (eg, section) []:khpi
Common Name (eg, YOUR name) []:client
Email Address []:client@khpi.ua
………………………..
A challenge password []:pass
8) openssl x509 -req -days 3650 -in client.csr -CA ca.crt -CAkey
ca.key -set_serial 01 -out client.crt
………………………..
Enter pass phrase for ca.key: pass
Далі за допомогою FTP завантажте створені сертифікати на сервер та
клієнт.
Для сервера (тобто Mikrotik), працюючи з командного рядка з каталогу
С:\openssl\ssl\:
ftp 192.168.10.1
Пользователь: admin
Пароль: (натисніть Enter)
ftp>bin
ftp>put ca.crt
ftp>put server.crt
ftp>put server.key
ftp>quit
227
[admin@R3] > certificate import file-name=client.crt
[admin@R3] > certificate import file-name=client.key
Перейдіть у Winbox на маршрутизаторі Mikrotik у розділ System-
>Certificates та перейменуйте сертифікат, що помічений KR, в значення ser
(рис. 15.5).
Налаштування SSTP
У Winbox сервера додайте SSTP-сервер (PPP->Interfaces + SSTP-server),
оберіть ім’я серверного сертифіката svr без перевірки сертифіката клієнта
(рис. 15.6). Для клієнта вкажіть адресу SSTP-сервера 1.1.1.2, додайте PPP-
користувача user з паролем pas та вкажіть ім’я сертифіката клієнта cli без
перевірки сертифіката сервера (рис. 15.7).
228
Рисунок 15.6 – Налаштування SSTP-сервера
Налаштування OpenVPN
У Winbox Mikrotik додайте OpenVPN-сервер (PPP->Interfaces +
OpenVPN-server). Натисніть на кнопку OVPN-server, вказавши в ньому ім’я
серверного сертифіката srv без перевірки сертифіката клієнта й режим
Ethernet, який знадобиться для організації моста (рис. 15.8).
229
Рисунок 15.8 – Налаштування OpenVPN-серверу
230
У Winbox Mikrotik_3 додайте також міст (Bridge+). Відмітьте, що
OpenVPN-клієнт використовує профіль default. Оберіть в цьому профілі
(PPP->profiles->default) також створений міст bridge1. Настройте клієнт
відповідним чином (рис. 15.10).
231
PPTP
232
Рисунок 15.12 – Стек протоколів для PPTP-з’єднання при виключеному
шифруванні
L2TP
233
Рисунок 15.14 – Стек протоколів для L2TP-з’єднання при виключеному
шифруванні
SSTP
OpenVPN
234
VPCS[2]> ping 10.1.1.3 -c 1
Команда повинна виконатися успішно.
1. Що таке VPN?
2. Які задачі вирішує VPN?
3. Які функції виконує протокол РРР?
4. Що таке тунель?
5. Що таке інкапсуляція?
6. Які фази протоколу РРР?
7. Для чого використовується протокол РРТР та як він працює?
8. Для чого використовується протокол L2ТР та як він працює?
9. Для чого використовується протокол SSТР та як він працює?
10. Для чого використовується протокол OpenVPN?
11. Для чого використовуються сертифікати та які протоколи їх
використовують?
12. Для чого використовується протокол ЕоІР та як він працює?
235
Лабораторна робота 16
ТЕХНОЛОГІЯ ІРSEC
Склад IPSec
236
цілісність яких турбуються. Хеш разом з даними передаються по мережі. Для
аутентифікації учасників мережного обміну застосовується або заздалегідь
відомий обом сторонам ключ (PSK – PreShared Keys) або цифрові
сертифікати RSA.
Алгоритм Діффі – Геллмана пропонує процедуру обміну даними між
двома сторонам через небезпечне з’єднання, що приводить до генерації
загального секретного ключа для шифрування. Самі ключі не передається.
Є два варіанти IРSec-протоколу: AH і ESP. Протокол AH
(Authentication Header – заголовок аутентификации) забезпечує перевірку
дійсності змісту IP-дейтаграми шляхом додавання в дейтаграму
контрольного хеш-значення, що розраховується на основі цієї дейтаграми.
Які частини дейтаграми використовуються для розрахунку, а також
розміщення полів дейтаграми, залежить від того, який режим
використовується: тунельний або транспортний.
У транспортному режимі AH-заголовок вставляється після заголовка
IP. AH-заголовок містить контрольне хеш-значення. Для його розрахунку
використовуються IP-дані та заголовки. IP-поля, які можуть мінятися під час
транзиту, само як TTL, приводяться до нульових значень до аутентифікації.
У тунельному режимі вихідний ІР-пакет інкапсулюється в новий ІР-
пакет. Весь вихідний ІР-пакет проходить перевірку дійсності. AH-заголовок
вставляється після нового ІР-заголовка.
AH – це протокол, що не шифрує дейтаграму. Для шифрування
використовується інший протокол – ESP. Основним і єдиним призначенням
AH є забезпечення захисту від атак, пов’язаних з несанкціонованою зміною
вмісту пакета, і від підміни вихідної адреси мережного рівня.
Протокол ESP (Encapsulating Security Payload – інкапсуляція
зашифрованих даних) використовує загальний ключ шифрування для
забезпечення конфіденційності даних. ESP також підтримує свою власну
схему аутентифікації, подібну тієї, котра використовується в AH або котра
може бути використана сумісно з АH.
У транспортному режимі IP-заголовки не піддаються аутентифікації й
шифруванню, а IP-дані піддаються.
237
У тунельному режимі вихідний ІР-пакет інкапсулюється в новий ІР-
пакет, забезпечуючи шифрування IP-даних і IP-заголовка.
Апаратне шифрування дозволяє значно прискорити процес
шифрування за допомогою вбудованого всередині процесора пристрою
шифрування.
Для порівняння маршрутизатор RB1100AH з використанням алгоритму
AES-128 може обробити 550 Мбіт/с зашифрованого трафіку. Без апаратної
підтримки він може обробити тільки 150 Мбіт/с зашифрованого трафіку.
Протокол IKE (Internet Key Exchange) використовується для побудови
та захищеного узгодження параметрів IPSec-тунелю. Для створення
загальних ключів IKE використовує протокол Oakely і алгоритм Діффі –
Геллмана .
SA (Security Association)
238
• IP-адресою одержувача – адресою протилежної сторони, з якої
встановлена асоціація безпеки.
• Security Protocol Identifier – вказує, який протокол IPSec
використовується на SA (AH або ESP).
Політики IPSec
Фази IKE
239
службу IKE і вона ініціює зв’язок до віддаленого хосту. IKE виконує дві
фази.
Фаза 1. Виконується аутентифікація сторін та узгоджуються їх IPSec-
політики. За допомогою алгоритму Діффі – Геллмана розраховуються
загальні ключі для SA. Створюється слабкий тунель, що дозволяє почати
обмін IKE для фази 2. Є два режими фази 1: звичайний і агресивний (за три
пакети).
Фаза 2. Виконується узгодження параметрів SA з метою створення
тунелю IPSec. Встановлюється односпрямований SA для кожної комбінації
алгоритму й протоколу. Створюється сильний тунель.
Всі SA, встановлені службою IKE, мають значення часу життя. Є два
значення часу життя: тверде та м’яке. Коли SA досягає свого м’якого порога,
служба IKE одержує повідомлення й запускає ще одну фазу 2 обміну для
відновлення SA. Якщо SA досягли твердого часу життя, то вони
відкидаються.
Генерація ключів вимагає значних обчислювальних витрат. Це
зазвичай має місце один раз протягом фази 1.
240
Продовження табл. 16.2
certificate (string; Default: ) Им’я локального сертифікату. Він повинен
мати закритий ключ. Використовується при
аутентифікації RSA-signature
h-group (ec2n155 | ec2n185 | modp1024 | Група Diffie-Hellman (сила шифру)
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)
generate-policy (;yes | no Default: no) Дозволяє піру встановити SA для
неіснуючої політики. Політика створюється
динамично під час життя SA. Цей спосіб
корисен, коли адреса віддаленого піра
невідома
hash-algorithm (md5 | sha1; Default: Алгоритм хешування. SHA сильніший, але
md5) повільніший
lifebytes (Integer: 0..4294967295; Час життя першої фази. Визначає, скільки
Default: 0) байт може бути передано до того як SA
буде відкинута. Якщо вказано 0, то SA не
відкидається
lifetime (time; Default: 1d) Час житя фази 1: визначає час дії SA
nat-traversal (yes | no; Default: no) Використання механізму Linux NAT-
traversal для вирішення несумісності
IPsec та NAT
proposal-check (claim | exact | obey Логіка перевірки часу життя фази 2:
strict; Default: obey) claim – узяти саме короткий час з
запропонованих варіантів та сповістити
ініціатора про це; exact – вимагати, щоб час
життя був такий самий; obey – приймати
все, що надішле ініціатор; strict – якщо
запропонований час більший, ніж час за
замовчуванням, то відкинути його. Інакше
прийняти пропозицію
241
Продовження таблиці 16.2
remote-certificate (string; Default: ) Им’я сертифіката для аутентифікації
віддаленої сторони. Закритий ключ
непотрібен. Застосовується при
аутентифікації RSA-signature
secret (string; Default: "") Парольний рядок. Застосовується при
аутентифікації pre-shared key. Якщо
починається з 0x, то розглядаеться як 16-не
число
send-initial-contact (yes | no; Default: Визначає, чи відсилати початкову IKE-
yes) інформацію, чи чекати віддалену сторону
242
Продовження таблиці 16.3
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) Визначає, чи використовувати тунельний
режим
243
Підменю /ip ipsec installed-sa надає інформацію про встановлений SA і
їхні ключі. За допомогою команди /ip ipsec installed-sa flush можна вручну
скинути SA, які некоректно встановлені IKE.
Підменю /ip ipsec remote-peers містить інформацію тільки для читання
про активні віддалені піри.
244
Рисунок 16.2 – Налаштування піра на R0
245
Визначте на R0 політику, що задає шифрування від мережі Src.Address:
10.1.200.0/24 до мережі Dst.Address: 10.1.100.0/24 (рис. 16.4). Для SA як
адресу джерела SA Src.Address візьміть зовнішню адресу 10.0.0.1 R0, а як
адресу приймача SA Dst.Address – зовнішню адресу 10.0.0.2 R1. Обмін
здійснюється в тунельному режимі (рис. 16.5).
Визначте на R1 політику, що задає шифрування від мережі Src.Address:
10.1.100.0/24 до мережі Dst.Address 10.1.200.0/24 (рис. 16.6). Для SA як
адресу джерела візьміть зовнішню адресу SA Src.Address 10.0.0.2 R1, а як
адресу приймача SA Dst.Address – зовнішню адресу 10.0.0.1 R0. Обмін
здійснюється в тунельному режимі (рис. 16.7).
Переконайтеся, що за допомогою IPSec створено VPN типу сайт-сайт
між мережами 10.1.100.0/24 і 10.1.200.0/24. Для цього протрасуйте пакети з
мережі 10.1.100.0/24 у мережу 10.1.200.0/24. Наберіть команду
VPCS[3]> trace 10.1.200.2
trace to 10.1.200.2, 8 hops max, press Ctrl+C to stop
1 10.1.100.1 4.000 ms 2.000 ms 2.001 ms
2 *10.0.0.1 26.001 ms 4.001 ms
3 *10.1.200.2 19.001 ms (ICMP type:3, code:3, Destination port
unreachable)
246
Рисунок 16.5 – Політика на R0. SA
247
При використанні протоколів AH+ESP за допомогою Wireshark можна
побачити інкапсуляцію при передачі пакетів по сформованому тунелю
(рис. 16.8).
248
6. Як забезпечується цілісніть в IPSec?
7. Як виконується аутентифікація в IPSec?
8. Для чого використовується алгоритм Діффі – Геллмана?
9. Що таке IKE і як він працює?
10. Що таке SA?
11. Для чого використовуються політики в IPSec і де вони
зберігаються?
249
2. Наведіть структури кадрів в Wireshark з використанням протоколів
AH, ESP та AH+ESP при виконанні пінгів між вузлами С1 та С4, С3 та С5, С2
та С6.
250
Лабораторна робота 17
251
Для з’єднання віддалених локальних мереж (або вилучених сегментів
локальної мережі) використовується обладнання зі спрямованими антенами,
що дозволяє збільшити дальність зв’язку до 20 км (а при використанні
спеціальних підсилювачів і великій висоті розміщення антен – до 50 км).
Комплекси для об’єднання локальних мереж по топології діляться на «точка-
точка» та «зірка». При топології «точка-точка» (режим Ad-hoc в IEEE 802.11)
організується радіоміст між двома віддаленими сегментами мережі. При
топології «зірка» одна зі станцій є центральною й взаємодіє з іншими
віддаленими станціями. При цьому центральна станція має всеспрямовану
антену, а інші віддалені станції – односпрямовані антени. Застосування
всеспрямованої антени в центральній станції обмежує дальність зв’язку
дистанцією приблизно 7 км. Тому, якщо потрібно з’єднати між собою
сегменти локальної мережі, які віддалені один від іншого на відстань більше
7 км, доводиться з’єднувати їх за принципом «точка-точка». При цьому
організується бездротова мережа з кільцевою або іншою, більш складною
топологією.
252
три непересічні канали, тобто на одній території, не впливаючи одна на одну,
можуть працювати три різні бездротові мережі. У стандарті передбачено два
типи модуляції: DSSS і FHSS. Максимальна швидкість роботи становить 11
Мбіт/с, при цьому доступні також швидкості 5,5; 2 і 1 Мбіт/с.
Стандарт IEEE 802.11b був прийнятий в 1999 році в розвиток
прийнятого раніше стандарту IEEE 802.11. Він також передбачає
використання діапазону частот 2,4 ГГц, але тільки з модуляцією DSSS.
Продукти стандарту IEEE 802.11b, що поставляються різними фірмами,
тестуються на сумісність і сертифікуються організацією Wireless Ethernet
Compatibility Alliance (WECA), яка в наш час більш відома під назвою «Wi-Fi
Alliance». Сумісні бездротові продукти, що пройшли випробування за
програмою «Wi-Fi альянс», можуть бути маркіровані знаком Wi-Fi.
4. IEEE 802.11g – стандарт бездротових локальних мереж, заснований
на бездротовій передачі даних в діапазоні 2,4 ГГц. Діапазон розділений на
три непересічні канали, тобто на одній території, не впливаючи одна на одну,
можуть працювати три різні бездротові мережі. Для збільшення швидкості
обміну даними при ширині каналу, схожій з 802.11b, застосовано метод
модуляції з ортогональним частотним мультиплексуванням (OFDM,
Ortogonal Frequency Division Multiplexing), а також метод двійкового
пакетного згорткового кодування PBCC (Packet Binary Convolutional Coding).
5. IEEE 802.11n – сучасний стандарт бездротових локальних мереж,
заснований на бездротовій передачі даних в діапазоні 2,4 ГГц та 5 ГГц.
Стандарт 802.11n значно перевищує за швидкістю обміну даними попередні
стандарти 802.11b і 802.11g, забезпечуючи швидкість на рівні Fast Ethernet;
зворотно сумісний з 802.11b і 802.11g. Основна відмінність від попередніх
версій Wi-Fi – додавання до фізичного рівня (PHY) підтримки протоколу
MIMO (multiple-input multiple-output) до рівня 4х4 (4 передавача й 4
приймача). При цьому мінімум 2 передавача на точку доступу та 1 передавач
на пристрій користувача. Теоретична швидкість може складати 600 Мбіт/с.
Приклади можливих MCS (Modulation & Coding Scheme) для 802.11n, а також
максимальні теоретичні швидкості передачі даних в радіоканалі наведені у
наступній таблиці:
253
Spatial Streams – це кількість просторових потоків. Type – тип модуляції. Data
Rate – максимальна теоретична швидкість передачі даних в радіоканалі в
Mбіт/сек.
254
Рисунок 17. 1 – Загальна діаграма перекриття частотних каналів в 2,4GHz
255
Безпека, шифрування й авторизація користувачів у бездротових
мережах
256
Також у будь-якої бездротової мережі є унікальний ідентифікатор –
SSID (Service Set IDentifier), що відображається як ім’я мережі при перегляді
списку доступних мереж. Він задається при настроюванні пристрою.
257
З’єднайте маршрутизатор через порт е2 з комутатором за допомогою
UTP кабелю. Запустіть на робочій станції утиліту Winbox та виконайте
підключення до маршрутизатора. Додайте мост (Bridge->Bridge+). Для цього
натисніть на червоний + та у вікні, що відкриється, натисніть Ok. У розділі
Ports, натискаючи на + додайте порти в міст. У вікні, що відкриється в
розділі Interface, оберіть потрібний інтерфейс, в пункті Bridge оберіть
створений раніше міст. Додавати інтерфейси можна тільки по одному. Тому
5 раз виконайте додавання портів – Ether2, Ether3, Ether4, Ether5 та Wlan1
– бездротовий адаптер. Порт Ether1 додавати не треба – він буде
використовуватися для підключення до мережі інституту (для доступу в
Інтернет) (рис. 17.3).
258
Щоб маршрутизатор зміг працювати як DNS-сервер та відповідати на
запити клієнтів, в меню IP->DNS оберіть пункт Allow Remote Requests.
Налаштуйте DHCP-сервер на створений міст (мережа 192.168.88.0/24).
Налаштуйте NAT-masquerade з мережі 192.168.88.0/24 на інтерфейс ether1.
Налаштуйте бездротовий адаптер. Для цього в меню Wireless в розділі
Security Profiles необхідно зайти в налаштування профілю default та
виконати наступні налаштування:
Mode – dynamic keys
Authentication Types – встановити пункти напроти WPA PSK та
WPA2 PSK для включення відповідних шифрувань.
Unicast Ciphers та Group Ciphers – відмітьте типи шифрувань, tkip
та/або aes ccm. Зазвичай встановлюють обидва, щоб усі бездротові пристрої
змогли отримати доступ до мережі.
WPA Pre-Shared Key та WPA2 Pre-Shares Key – в цих полях
вводиться пароль для бездротової мережі; введіть – Mikrotik1.
259
Перейдіть у розділ Interfaces та зайдіть у налаштування бездротового
адаптера. Відразу натисніть на кнопку Advanced справа для включення
розширених налаштувань.
260
На вкладці HT виконується керування антенами пристрою.
Зверніть увагу на те, що галочки стоять навпроти chain0, а друга
антена вимкнена, що не дозволяє працювати на максимальних швидкостях.
Необхідно поставить галочки навпроти chain1.
Задайте ІР-адресу для інтерфейсу ether1: 172.17.72.52/24 та маршрут за
замовчуванням на маршрутизатор 172.17.72.1. Після цього задайте IР-адресу
DNS-сервера 8.8.8.8 в налаштуваннях DNS (IP->DNS->Servers). Спробуйте
підключитися до маршрутизатора по Wi-Fi та зайти на будь-який сайт.
261
Обидва пристрої повинні мати однаковий SSID та одинакові параметри
шифрування, але вони повинні працювати на різних каналах, краще
незалежних. Взаємне розташування пристроїв слід підібрати таким чином,
щоб зони покриття перетиналися без значного послаблення сигналу. Клієнти
бездротової мережі будуть приймати рішення про підключення до тієї або
іншої точки доступу автоматично, залежно від рівня сигналу. Таким чином,
мобільні користувачі можуть вільно пересуватися по всій зоні покриття без
обриву зв’язку. Якщо необхідно використовувати більше трьох точок, то
незалежні канали слід використовувати таким чином, щоб зони їх покриття
не перетиналися.
Виконайте налаштування пристроїв відповідно до топології рис. 17.7 та
протестуйте цей варіант.
Wireless bridge
262
Рисунок 17.9 – Налаштування бездротового інтерфейсу
263
Налаштування маршрутизатору Mikrotik_2
264
Перевірте у розділі НТ наявність використання обох антен (chain0,
chain1 повинні бути обрані). У розділі NV2 встановіть Security та Preshared
Key = 1234567.
Додайте міст та для нього ІР-адресу 192.168.88.2/24. Додайте маршрут
за замовчуванням на ІР=192.168.88.1. Після цього у розділі Status можна
спостерігати наявність та параметри з’єднання (рис. 17.14).
265
7. Для чого використовується бездротовий міст?
266
Лабораторна робота 18
ТЕХНОЛОГІЯ MPLS
267
У найпростішій формі MPLS можна розглядати як поліпшення
маршрутизації – позначений пакет проходить той же шлях, який він би
пройшов, якщо б він не був маркований. Цей шлях комутації за міткою (LSP
– label switching path) забезпечує передачу даних на вихід хмари MPLS.
Маршрутизатор усередині хмари MPLS, що здійснює комутацію пакетів за
мітками, називають LSR (label switch router). Коли LSR одержує пакет, він
використовує мітку пакета для визначення наступного хопа в LSP. При цьому
LSR міняє в пакеті мітку перед його відправленням.
LSR-маршрутизатори, що зв’язують MPLS-хмару із зовнішнім світом
називають граничними маршрутизаторами.
Мітки усередині хмари MPLS розподіляються за допомогою протоколу
розподілу міток LDP (Label Distribution Protocol). Інший спосіб установлення
шляху LSP для проходження пакетів забезпечують TE-тунелі (traffic
engineering – инжиніринг трафіку), що використовують модифікацію
протоколу резервування ресурсів RSVP (Resource Reservation Protocol)
RSVP TE. TE-тунелі дозволяють явно визначити шляхи LSP при обмеженнях
у вигляді обмеженої смуги пропускання інтерфейсів.
LDP
268
FEC обробляються однаковим чином. Де б пакет не перебував в MPLS-
мережі, мітка визначає, до якому класу FEC пакет ставиться. Тобто пакет
пам’ятає своє походження. Саме цією властивістю MPLS вносить
принципово нову якість в сучасні мережні технології. Розглянемо мережу на
рис. 18.2.
269
Loopback задайте відповідно до топології рис. 18.2.
Оскільки 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 на LSR-
маршрутизаторах. На зовнішніх відносно хмари MPLS-маршрутизаторах
призначте маршрут за замовчуванням:
[admin@R1] > ip route add gateway=172.16.0.1
[admin@R2] > ip route add gateway=172.17.0.1
Перевірте правильність настроювання маршрутизації, виконавши
команду ping від маршрутизатора R1 (172.16.0.2) до маршрутизатора R2:
[admin@R1] > ping 172.17.0.2
На кожному LSR-маршрутизаторі подивіться маршрути убік мережі
172.17.0.0/16 маршрутизатора R2.
[admin@LSR1] > ip route print detail where dst-address=172.17.0.0/16
270
Таблица 18.1 – Маршрути на мережу 172.17.0.0/24
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)
271
LSR1 має два сусіди LSR2 (9.9.9.2) та LSR4 (9.9.9.4). Також можна
побачити усі адреси цих сусідів. В якості класу FEC оберіть пакети, що
прямують в мережу 172.17.0.0./24. LDP на кожному LSR встановить для
цього класу вхідні мітки, які можна подивитися командою
mpls local-bindings print where dst-address=172.17.0.0/16
272
[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
273
Кожен 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
274
Фізично IP-маршрутизація в Ethernet-мережах здійснюється шляхом
належної заміни в IP-пакетах їх Ethernet-заголовків. Нові Ethernet-заголовки
визначаються за допомогою протоколу ARP. MPLS у цьому процесі участі не
бере.
Фільтрація міток
275
RSVP TE
276
3. Явно вказуються адреси інтерфейсів маршрутизаторів, через які буде
проходити тунель. Адреси вказуються в прямому й зворотному напрямках.
Вказується або весь шлях, або тільки його частина. В останньому випадку
інша частина шляху визначається протоколами маршрутизації або
протоколом CSPF. Тунель не створюється, якщо уздовж шляху знайдуться
інтерфейси з недостатньою пропускною здатністю.
Створення тунелю ініціюється вхідним маршрутизатором. Він відсилає
вихідному маршрутизатору повідомлення Path, що містить інформацію про
параметри й обмеження на смугу пропускання тунелю, що встановлюється.
Якщо маршрутизатор, що перебуває на шляху проходження повідомлення
Path, задовольняє обмеження на смугу пропускання, то він проштовхує
повідомлення Path наступному маршрутизатору по шляху до вихідного
маршрутизатора. У підсумку повідомлення Path досягне вихідного
маршрутизатора тунелю. Вихідний маршрутизатор відсилає відповідне
повідомлення Resv в зворотному напрямку. Якщо маршрутизатор, що
перебуває на шляху проходження повідомлення Resv, задовольняє
обмеження на смугу пропускання, то він проштовхує повідомлення Resv
наступному маршрутизатору по шляху до вхідного маршрутизатора.
У підсумку повідомлення Resv досягне вхідного маршрутизатора
тунелю. Тунель вважається встановленим. У противному разі тунель
встановитися не може. Вхідний і вихідний маршрутизатори тунелю
періодично обмінюються повідомленнями Path для підтримки тунелю в
робочому стані.
Знову розгляньте мережу на рис. 18.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 instance set mpls-te-area=backbone mpls-te-router-id=loopback
Для того щоб маршрутизатор міг брати участь у тунелі (або як вхідний,
або як проміжний, або як вихідний), у ньому треба настроїти підтримку
протоколу RSVP TE. Для цього треба вказати інтерфейси маршрутизатора,
277
які будуть задіяні у роботі RSVP TE, і їх пропускні здатності, що
заявляються:
[admin@LSR1] > mpls traffic-eng inter add interface=ether1 bandwidth=100000
[admin@LSR1] > mpls traffic-eng inter add interface=ether2 bandwidth=100000
[admin@LSR2] > mpls traffic-eng inter add interface=ether1 bandwidth=100000
[admin@LSR2] > mpls traffic-eng inter add interface=ether2 bandwidth=100000
[admin@LSR2] > mpls traffic-eng inter add interface=ether3 bandwidth=100000
[admin@LSR3] > mpls traffic-eng inter add interface=ether1 bandwidth=100000
[admin@LSR3] > mpls traffic-eng inter add interface=ether2 bandwidth=100000
[admin@LSR3] > mpls traffic-eng inter add interface=ether3 bandwidth=100000
[admin@LSR4] > mpls traffic-eng inter add interface=ether1 bandwidth=100000
[admin@LSR4] > mpls traffic-eng inter add interface=ether2 bandwidth=100000
[admin@LSR4] > mpls traffic-eng inter add interface=ether3 bandwidth=100000
[admin@LSR5] > mpls traffic-eng inter add interface=ether1 bandwidth=100000
[admin@LSR5] > mpls traffic-eng inter add interface=ether2 bandwidth=100000
[admin@LSR5] > mpls traffic-eng inter add interface=ether3 bandwidth=100000
[admin@LSR6] > mpls traffic-eng inter add interface=ether1 bandwidth=100000
[admin@LSR6] > mpls traffic-eng inter add interface=ether2 bandwidth=100000
Після цих налаштувань протокол OSPF-маршрутизаторів стане
розповсюджувати RSVP-інформацію мережею:
[admin@LSR1] > routing ospf lsa print
Створіть тунель від 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: 2ye
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
reserved-bandwidth: 1000bps
278
Побачьте, що шлях тунелю пройшов через маршрутизатори 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 REMAINING-BW
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@LSR6]>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 дозволить маршрутизатору LSR6 одержувати
інформацію про те, через які маршрутизатори пройде шлях тунелю.
Виконайте моніторинг стану тунелю:
[admin@LSR6] > interface traffic-еng monitor numbers=0
Подивіться 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-eng
[admin@LSR6] > ip address add address=10.11.1.2/24 interface=traffic-eng
Перевірте зв’язок:
[admin@LSR6] > ping 10.11.1.1
279
18.4. Контрольні питання
280
Лабораторна робота 19
281
VPN організуються на другому та третьму рівнях моделі OSI.
Розглянемо організацію VPN рівня 2 за допомогою протоколів VPLS.
282
Рисунок 19.2 – Топологія для виконання практичної частини (MPLS-мережа)
№
Организація VPLS-тунелю Организація LSP
п/п
1 LDP LDP
2 LDP RSVP
3 BGP LDP
4 BGP RSVP
283
1. Налаштування LDP VPLS
Розглянемо організацію VPLS-тунелю за допомогою протоколу LDP.
LSP організовуються або за допомогою протоколу LDP або за допомогою
протоколу RSVP.
284
двома пірами. Рекомендується призначити MAC-адресу. Необхідні
налаштування для замовника A (vpls-id=0:10):
285
VPLS-тунель надає віртуальний Ethernet-зв’язок між
маршрутизаторами. Для прозорого з’єднання фізичних Ethernet-сегментів
вони повинні бути об’єднані в міст із VPLS-тунелем.
У нашому прикладі Ethernet-сегменти мають повнозв’язну топологію.
Якщо використовувати мости без протоколу (R)STP, то можуть виникнути
петлі трафіку. Наприклад, якщо від PE1 виходить широкомовний кадр, то він
досягне через VPLS-тунелі й PE2 і PE3. PE3, одержавши такий кадр, відішле
його PE2. PE2 одержить дві копії одного кадру, що є петлею. Уникнути
петель можна так: дозволити (R)STP, використовувати файєрвол,
використовувати властивість horizon. Останнє рішення найпростіше й
ефективне.
Базова ідея розщепленого обрію (split horizon) – не пересилати трафік,
що виникає на порту, на деяку безліч портів. Для VPLS це значить не
пересилати кадри, що з’явилися на одному тунелі в інший тунель, тому що
для цього є прямий зв’язок.
Для організації віртуальної мережі замовника А мости на 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
Для організації віртуальної мережі замовника А мости на 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.
286
[admin@A2] > ip neighbor pr
287
Рисунок 19.3 – Структура ICMP-пакета на інтерфейсі e1 маршрутизатора PE1
288
Таблиця пробросів MPLS на P3 показує, що пакети з вхідною міткой 16
отримають таку ж вихідну мітку та будуть спрямовані на адресу 5.5.5.1
маршрутизатора P4. Цю мітку можна побачити на рис. 19.4.
289
Створіть RSVP TE-тунелі, утворюючи повнозв’язну топологію для
граничних маршрутизаторів:
290
Як бачимо, в цьому разі тунель організовано через маршрутизатор Р1
(transport-nexthop: 1.1.1.1). Тому аналізатор трафіку необхідно запускати на
інтерфейсах e0 маршрутизатора PE1, e1 маршрутизатора P1 і e1
маршрутизатора P2 . На рис 19.6 – 19.8 наведено відповідні кадри.
291
active-path: dyn
active-lspid: 1
active-label: 17
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[17],3.3.3.1[17],3.3.3.2[0]
reserved-bandwidth: 10.0kbps
Таблиця пробросів MPLS на P1 показує, що пакети з вхідною міткою
17 отримують таку ж вихідну мітку та будуть передані на адресу 2.2.2.2
маршрутизатора P2. Цю мітку можна побачити на рис. 19.7.
292
Правильне настроювання VPLS, заснованих на BGP, дозволяє
уникнути конфігурації маршрутизаторів, які не підключені до нового вузла.
Для організації VPLS BGP маршрутизатори обмінюються
повідомленнями NLRI (Network Layer Reachability Information), що містять
якусь інформацію про VPLS.
BGP VPLS – це лише метод обміну мітками для тунелів VPLS, а не
метод обміну трафиком між кінцевими точками тунелів VPLS. Тому варто
забезпечити поширення кадрів MPLS між кінцевими точками тунелів VPLS.
Кадри MPLS поширюються по шляхах LSP. LSP організовуються або за
допомогою протоколу LDP, або за допомогою протоколу RSVP.
293
VPLS NLRI, він не зобов’язаний брати участь в VPLS і навіть може не
підтримувати MPLS.
Є кілька зауважень про конфігурацію пірів BGP:
1. Для обміну повідомленнями VPLS NLRI немає потреби поширювати
IP- або IРv6-маршрути, досить визначити address-families=l2vpn ;
2. Для адресації пірів використовуються адреси мостів, тобто
інтерфейсу 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 \
route-reflect=yes address-families=l2vpn update-source=lobridge
[admin@P1]>routing bgp peer add remote-address=9.9.9.6 remote-as=65530 \
route-reflect=yes address-families=l2vpn update-source=lobridge
[admin@P1]>routing bgp peer add remote-address=9.9.9.7 remote-as=65530 \
route-reflect=yes address-families=l2vpn update-source=lobridge
У налаштуваннях BGP-пірів у PE1, PE2 та PE3 вбік відбивача P1
(9.9.9.2) залишаємо для route-reflect значення за замовчуванням no.
294
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 \
route-distinguisher=9.9.9.1:1 site-id=1 export-route-targets=1:1 \
import-route-targets=6:1,7:1
[admin@PE1]>interface vpls bgp-vpls add bridge=B bridge-horizon=1 \
route-distinguisher=9.9.9.1:2 site-id=1 export-route-targets=1:2 \
import-route-targets=6:2,7:2
295
• Bridge – визначає міст, до якого додадуться динамічно
створювані VPLS-тунелі.
• Bridge-horizon – служить для запобігання утворенню петель.
• route-distinguisher – визначає значення, що прикріплюється до
VPLS NLRI; маршрутизатори використовують це значення для утворення
тунелю. Щоб приймальні маршрутизатори розрізняли інформацію від різних
VPLS, це значення повинне бути різним для різних VPLS на одному
пристрої. Route-distinguisher не використовується одержаним
маршрутизатором, для визначення належності передавального
маршрутизатора конкретної VPLS. Для цього використовується route-targets.
• export-route-targets – це свого роду мітка (синонім) для route-
distinguisher.
• 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-пакетами (рис.
19.9).
У підсумку створюються динамічні VPLS-інтерфейси на PE1, PE2 і PE3.
Наприклад, на PE1:
[admin@PE1]>interface vpls print
296
Рисунок 19.9 – BGP-повідомлення Update від PE2 до PE1.
наприклад:
297
На рис. 19.10 – 19.12 наведено структури кадрів, захоплені на
інтерфейсі e0 маршрутизатора PE1, інтерфейсі e1 маршрутизатора P1 та
інтерфейсі e1 маршрутизатора P1 при виконанні пінгу з сайта A1 убік сайта
A2.
298
трьох рисунках. Для транспорту Ehernet-кадрів від A1 до A2
використовується RSVP TE-Інтерфейс 1to2 і мітка 17. Ця мітка є на рис.
19.10.
Можна побачити інформацію про стан RSVP TE-інтерфейсу:
299
Видаліть інтерфейси mpls traffic-eng в маршрутизаторах PE1, PE2 та
PE3, які беруть участь в роботі RSVP TE:
mpls traffic-eng interface rem [find]
300
За допомогою аналізатора пакетів Wireshark отримайте структуру
ICMP-пакетів на інтерфесах e0 маршрутизатора PE1, e1 маршрутизатора P1 і
e1 маршрутизатора P2, яка повністю аналогічна структурі для випадку п. 1.1
(рис. 19.13).
301
Таблиця пробросів MPLS на P1 показує, що пакети з вхідною міткою
33 отримують вихідну мітку 16 та будуть направлені на адресу 2.2.2.2
маршрутизатора P2:
[admin@P1] > mpls forwarding-table print
Flags: L - ldp, V - vpls, T - traffic-eng
# IN-LABEL OUT-LABELS DESTINATION INTERFACE NEXTHOP
0 expl-null
10 L 33 16 9.9.9.6/32 ether2 2.2.2.2
302
3 D vpls2 B 0x80 50 1
4 D vpls3 B 0x80 50 1
5 D vpls4 A 0x80 50 1
Прослідкуйте призначення міток при передачі пакетів у зворотному
напрямку (від А2 до А1).
! Збережіть топологію, вона буде використовуватися в ЛР № 20.
303
Лабораторна робота 20
304
VPNv4. Для кожного екземпляра BGP, що бере участь в VRF-маршрутизації,
варто задати список VRF. VRF визначається атрибутом routing-mark.
Додавання маршруту в таблицю VRF управляється атрибутами BGP.
Як тільки VRF для BGP настроєні, створюються активні маршрути сімейства
адрес VPNv4. Ці маршрути встановлюються в окрему таблицю маршрутів і їх
можна побачити з меню /routing bgp vpnv4-route. Через BGP можна
поширювати однакові префікси IРv4 для різних мереж. Як правило,
маршрути VPNv4 з однаковими префіксами будуть поширюватися тільки
після належного налаштування MPLS.
VRF-маршрутизація використовує так звані VPNv4-маршрути, що
працюють із префіксами, які складаються з route-distinguisher і префікса IPv4.
Тим самим на одному маршрутизаторі можна по-різному маршрутизувати
пакети з однаковими префіксами IPv4, що приходять від різних джерел. Як
правило VRF-маршрутизація функціонує тільки після належного
настроювання MPLS.
305
Рисунок 20.1 – Топологія для MPLS VPN 3-го рівня
Видаліть мости A і B:
interface bridge remove A,B
306
routing bgp peer set 0 address-families=vpn4
307
• import-route-targets – це список із зовнішніх export-route-targets,
який використовується для визначення сукупності маршрутизаторів, що
утворять конкретну VPN.
Вкажіть BGP, що VRF, обумовлені маркерами маршрутів A і B, будуть
брати участь у маршрутизації для сімейства адрес vpnv4:
[admin@PE1] > routing bgp instance vrf add routing-mark=A \
redistribute-connected=yes
[admin@PE1] > routing bgp instance vrf add routing-mark=B \
redistribute-connected=yes
[admin@PE2] > routing bgp instance vrf add routing-mark=A \
redistribute-connected=yes
[admin@PE2] > routing bgp instance vrf add routing-mark=B \
redistribute-connected=yes
[admin@PE3] > routing bgp instance vrf add routing-mark=A \
redistribute-connected=yes
[admin@PE3] > routing bgp instance vrf add routing-mark=B \
redistribute-connected=yes
308
Аналогічні повідомлення отримають інші PE-маршрутизатори.
Подивіться на граничному маршрутизаторі PE1 маршрути з маркером
A:
[admin@PE1] > ip route print detail where routing-mark=A
309
За допомогою аналізатора пакетів Wireshark вивчимо структуру ICMP-
пакетів на інтерфейсах e0 маршрутизатора PE1, e1 маршрутизатора P1 і e1
маршрутизатора P2 (рис. 20.3 – 20.5).
310
Таблиця пробросів MPLS на P1 показує, що пакети з вхідною міткою
16 отримують вихідну мітку 16 та будуть направлені на адресу 2.2.2.2
маршрутизатора P2. Цю мітку можно побачити на рис. 20.4.
311
пропускні здатності. Наприклад, інтерфейс ether1 граничного
маршрутизатора PE1 йде вбік MPLS-хмари:
312
Пояснемо отримане. Таблиця VPNv4-маршрутів на граничному
маршрутизаторі PE1
[admin@PE1] > routing bgp vpnv4-route print
# 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 ether2 16 16
2 L 9.9.9.6:2 172.16.2.0/24 9.9.9.6 ether2 17 17
показує, що для организації правильної маршрутизації пакетів замовника A
(route-distinguisher = 9.9.9.6:1) вбік мережі 172.16.2.0/24 їм призначена
мітка 16. Цю мітку можна побачити на всіх трьох рисунках. Для транспорту
пакетів від A1 до A2 використовується мітка 16. Цю мітку можна побачити
на рис. 20.6 і на рис. 20.7.
313
[admin@P2] > mpls forwarding-table print
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
314
Як видно з рис. 20.9 – 20.11, структура пакетів відрізняється тільки
внутрішньою міткою (=17) для правильної маршрутизації трафіку між
вузлами В1 та В2.
315
Лабораторна робота 21
316
• локальні (local) – досяжні лише у межах поточної області, яка
визначається місцевими ключовими словами.
Приклад:
317
Побачте, що створення змінних проходить так само, як і у прикладі
вище, проте з однією відмінністю – у лапках вказується потрібне значення.
Для змінної $digit було задано значення 321, а для $line – ‘simple line’.
Завдяки тому, що створені змінні глобальні, їх значення можна вивести
у термінал у будь-який момент після створення:
:put $digit;
:put $line;
318
Нескінченний цикл також можна отримати, вказавши як умову true:
while (true) do={:put "work"; delay 2};
319
:local pingTotalCount [ping count=5 192.168.0.1]
320
Таблиця 21.1 – Використання find, get, set
Команда Синтаксис Опис з прикладом
find find <expression> Повертає список елементів, які задовольняють певний
вираз (певну умову)
:put [/interface find name~"ether"]
321
Робота з рядками
find :find <arg> <arg> Повертає позицію певного рядка у більшому рядку або
<start> положення елемента масиву:
:put [:find "abc" "a" -1];
parse :parse <expression> Перетворює рядок та повертає консольні команди, які
потім можна буде виконати:
:global myFunc [:parse ":put hello!"];
$myFunc;
322
:global month [:pick $curDate 0 3]
:global year [:pick $curDate 7 11]
:log info "date format: $day $month $year"
:global fileName "/myfile_$year_$month_$day.txt"
:put $fileName;
323
Якщо після однієї хвилини переглянути інформацію про активні
завдання, то можна побачити, що перше завдання вже виконувалося 1 раз, а в
логах можна побачити відповідне повідомлення:
[admin@MikroTik]> system scheduler print
Flags: X - disabled
# NAME START-DATE START-TIME INTERVAL ON-EVENT RUN-COUNT
0 run-1m jan/14/2019 15:34:06 1m log-test 1
1 email-backup jan/14/2019 15:34:11 1w e-backup 0
[admin@MikroTik]> log print
...
15:34:06 system,info new script scheduled by admin
15:34:11 system,info new script scheduled by admin
15:35:06 script,info test
324
або пошкоджень обладнання вони можуть бути втрачені. Саме тому
найкращий спосіб вирішити ці питання – відправляти бекапи на сторонній
FTP-сервер, де б вони зберігалися увесь необхідний час. FTP-сервер на
маршрутизаторі Mikrotik за замовчуванням вімкнений. Це можна подивитися
командою ip services print. Підключення з іншого пристрою буде
виконуватися за допомогою IP-адреси доступного інтерфейсу, а авторизація
– за допомогою стандартного логіна та пароля користувача системи.
325
необхідності, цей файл може бути завантажений назад. Для прикладу
спочатку видалимо його з маршрутизатора Mikrotik, а потім завантажимо.
326
Далі створюємо задачу у планувальнику задач. Для цього переходимо у
розділ System -> Scheduler та натискаємо “+”, вводимо дані, наведені
на рис. 21.3 з коректним часом старту, який має бути пізнішим за поточний з
невеликим проміжком. Далі натискаємо Apply та OK. Треба пам’ятати, що
внутрішній час маршрутизатора може відрізнятися від часу системи, а отже
щоб задати коректний час старту завдання, необхідно дізнатися поточний час
маршрутизатора у розділі System -> Clock.
327
[admin@FTP_router] > file print
# NAME TYPE SIZE CREATION-TIME
0 skins directory jan/19/2019 09:35:27
1 um-before-migration.tar .tar file 15 360 jan/19/2019 09:38:49
2 settingsFile.backup backup 10 241 jan/19/2019 11:18:47
[admin@FTP_router] > file print
# NAME TYPE SIZE CREATION-TIME
0 skins directory jan/19/2019 09:35:27
1 um-before-migration.tar .tar file 15 360 jan/19/2019 09:38:49
2 settingsFile.backup backup 10 241 jan/19/2019 11:19:17
328
Якщо необхідно, пам’ять можна очищати, наприклад, 1 раз за 24
години, створивши нове завдання з наступною командою:
file remove [find name ~"bac]"
Виконавши цю команду, перевіряємо, що всі раніше створені резервні
копії були видалені.
329
Таким чином, 1 раз на день будуть змінюватися обмеження. Зменшимо
інтервал до 30 секунд та продемонструємо зміну правил смуги пропускання
та виконання тесту смуги пропускання.
Смугу пропускання також можна обмежувати і за інших умов,
наприклад, коли завантаження на одному з інтерфейсів перевищує певний
ліміт. Розглянемо приклад, у якому при досягненні швидкості завантаження
відмітки 512 kbps створюється обмеження:
:foreach i in=[/interface find] do={
/interface monitor-traffic $i once do={
:if ($"rx-bits-per-second" > 512000 ) do={
/queue simple add name=$i max-limit=256000/256000 \
interface=$i;
}
}
}
}
330
команду ping на маршрутизаторі Mikrotik до хоста 8.8.8.8. Він має пройти
успішно.
Вимкнемо маршрутизатор ISP1 (натиснемо на ньому правою кнопкою
миші та виберемо з контекстного меню Stop). Перевіремо досяжність хоста
8.8.8.8 за допомогою команди ping. Він має бути недосяжним, адже вимкнено
маршрутизатор, який мав інтерфейс з адресою 1.1.2.2 та який виступав
маршрутом за замовчуванням для Mikrotik. Змінимо маршрут за
замовчуванням на цьому маршрутизаторі за допомогою наступного скрипту:
ip route set [find comment="toInternet"] gateway=1.1.3.2
331
заборони. Щоб вирішити цю проблему можна скористатися двома
очевидними шляхами. Перший передбачає створення проксі-сервера на
маршрутизаторі, який відділяє хости та мережу з забороненим ресурсом.
Другий варіант потребує створення спеціального сценарію. У даному
прикладі розглянуто блокування доступу веб-сайтів youtube та vk. Скрипт
постійно проглядає актуальні адреси за доменними іменами та додає нові до
свого кешованого списку restricted (заборонені). Спочатку необхідно змусити
роутер кешувати (зберігати для подальшого аналізу) усі DNS-запити:
Тепер створіть скрипт, для якого треба буде створити завдання, яке
виконується кожні 30 секунд:
:foreach i in=[/ip dns cache find] do={
:local bNew "true";
:local cacheName [/ip dns cache all get $i name] ;
# :put $cacheName;
:if (([:find $cacheName "vk.com"] >= 0) || ([:find $cacheName
"youtube.com"] >= 0)) do={
:local tmpAddress [/ip dns cache get $i address] ;
# :put $tmpAddress;
# if address list is empty do not check
:if ( [/ip firewall address-list find list="restricted" ] = "") do={
:log info ("added entry: $[/ip dns cache get $i name] IP
$tmpAddress");
/ip firewall address-list add address=$tmpAddress list=restricted
comment=$cacheName;
} else={
:foreach j in=[/ip firewall address-list find list="restricted"]
do={
:if ( [/ip firewall address-list get $j address] =
$tmpAddress ) do={
:set bNew "false";
}
}
:if ( $bNew = "true" ) do={
:log info ("added entry: $[/ip dns cache get $i name] IP $tmpAddress");
/ip firewall address-list add address=$tmpAddress list=restricted
comment=$cacheName;
}
}
}
}
332
Розроблений сценарій переглядає кеш DNS-запитів та при знаходженні
записів про потрібні ресурси (vk.com та youtube.com) у разі їх відсутності
додає їх до забороненого списку раніше створеного фільтру. Для перевірки
роботи цього сценарію необхідно створити завдання для планувальника
задач та виконати спробу доступу до одного з зазначених ресурсів. Для цього
можна створити окремий роутер, що буде виступати DNS-сервером, та
прописати його у роутері Mikrotik. Призначивши роутерам ISP1 та ISP2 імена
youtube.com та vk.com, спробуйте до них відправити запити. Вони мають
бути недосяжними. Далі можна змінити адреси інтерфейсів убік
маршрутизатора Mikrotik перевірити їх досяжність, оновити інформацію у
DNS-сервері та перевірити, що маршрутизатори ISP1 та ISP2 стали
недосяжними. Продемонструйте список заборонених адрес у фільтрі
firewall’у.
333
11. Як створюються та використовуються коментарі при написанні
сценаріїв?
12. Що таке планувальник задач?
13. Як створити задачу в планувальнику та які параметри необхідно
при цьому вказати?
14. Як передати файл за допомогою FTP з маршрутизатора Mikrotik до
FTP-сервера або іншого роутера?
15. Як завантажити файл за допомогою FTP зі стороннього FTP-
сервера на маршрутизатор Mikrotik?
334
Лабораторна робота 22
335
MailSlot-клієнт – процес, що пише повідомлення в MailSlot. Будь-який
процес, що знає ім’я MailSlot може записати в нього інформацію.
Існує два способи передачі даних: симплексний і дуплексний.
Розглянемо симплексну передачу даних. Оскільки симплексна передача
даних – це передача даних тільки в одну сторону, то можна подати цю
архітектуру у вигляді, наведеному на рис. 22.1.
Клієнт Сервер
Файл поштової скриньки Поштова скринька
Закриття скриньки
Читання Запис
Закриття
Запис
Читання
Закриття
336
Дуплексна передача даних повністю дублює симплексну передачу в
іншу сторону, тобто передача відбувається у дві сторони.
Система імен
// задамо ім’я
LPSTR nameSlot = "\\\\.\\mailslot\\my_slot";
// створення
hSlot = CreateMailSlot(nameSlot, 0, MAILSLOT_WAIT_FOREVER, NULL );
// перевірка помилки створення:
if (hSlot == INVALID_HANDLE_VALUE) return FALSE;
Функція CreateMailSlot – створення поштової скриньки; повертає
параметр handle поштової скриньки, по якому виконується читання та
закриття поштової скриньки.
337
Параметри функції CreateMailSlot:
nameSlot – ім’я поштової скриньки (обов’язкове);
0 – максимальний розмір повідомлення;
MAILSLOT_WAIT_FOREVER – режим очікування;
NULL – атрибут безпеки.
Після створення поштова скринька готова приймати дані. Створення
поштової скриньки виробляється тільки на стороні приймача, тобто ім’я
поштової скриньки повинне бути локальним.
338
Для роботи з поштовими скриньками визначено дві інформаційні
функції:
1) GetMailslotInfo – функція, що дозволяє, одержати кількість
повідомлень усередині поштової скриньки, розмір поточного повідомлення,
режим роботи поштової скриньки т.інш.
2) SetMailslotInfo – функція, що може змінювати тайм-аут.
Імена каналів
339
\\Ім’ясервера\pipe\Ім’яканала
Якщо процес відкриває канал, створений на іншій робочій станції, він
повинен указати ім’я сервера. Якщо ж процес створює канал або відкриває
канал на своїй робочій станції, то замість ім’я вказується символ крапки:
\\.\pipe\Ім`яканала
У всякому разі процес може створити канал тільки на тій робочій
станції, де він запущений, тому при створенні каналу ім’я сервера ніколи не
вказується.
Реалізації каналів
Створення каналу
HANDLE CreateNamedPipe(
LPCTSTR lpName, // адреса рядка ім’я каналу
DWORD dwOpenMode, // режим відкриття каналу
DWORD dwPipeMode, // режим роботи каналу
DWORD nMaxInstances, // максимальна кількість
// реалізацій каналу
DWORD nOutBufferSize, // розмір вихідного буфера в байтах
DWORD nInBufferSize, // розмір вхідного буфера в байтах
DWORD nDefaultTimeOut, // час очікування в мілісекундах
LPSECURITY_ATTRIBUTES lpSecurityAttributes); // адреса
// змінної для атрибутів захисту
340
Установлення з’єднання з каналом з боку сервера
341
Читання даних з каналу
Функція CallNamedPipe
Звичайно сценарій взаємодії клієнтського процесу із серверним полягає
у виконанні наступних операцій:
1) підключення до каналу за допомогою функції CreateFile;
2) виконання операції читання або запису функціями ReadFile або
WriteFile;
3) відключення від канала функцією CloseHandle.
Функція CallNamedPipe дозволяє виконати ці операції за один прийом,
за умови, що канал відкритий у режимі передачі повідомлень і що клієнт
посилає одне повідомлення серверу й у відповідь також одержує від сервера
одне повідомлення.
BOOL CallNamedPipe(
LPCTSTR lpNamedPipeName, // адреса ім’я каналу
LPVOID lpOutBuffer, // адреса буфера для запису
DWORD nOutBufferSize, // розмір буфера для запису
LPVOID lpInBuffer, // адреса буфера для читання
DWORD nInBufferSize, // розмір буфера для читання
LPDWORD lpBytesRead, // адреса змінної для запису
// кількості прочитаних байт даних
DWORD nTimeOut); // час очікування в мілісекундах
Функція TransactNamedPipe
Функція TransactNamedPipe, так само як і функція CallNamedPipe,
призначена для виконання передачі й прийому даних від клієнтського
процесу серверному. Однак ця функція більше гнучка у використанні, ніж
функція CallNamedPipe. Насамперед, перед використанням функції
TransactNamedPipe клієнтський процес повинен відкрити канал із сервером
функцією CreateFile. Крім того, клієнтський процес може виконувати обмін
даними із сервером, викликаючи функцію TransactNamedPipe багато разів.
При цьому не буде відбуватися багаторазового відкриття й закриття каналу.
BOOL TransactNamedPipe(
HANDLE hNamedPipe, // ідентифікатор каналу Pipe
LPVOID lpvWriteBuf, // адреса буфера для запису
DWORD cbWriteBuf, // розмір буфера для запису
342
LPVOID lpvReadBuf, // адреса буфера для читання
DWORD cbReadBuf, // розмір буфера для читання
LPDWORD lpcbRead, // адреса змінної, у яку буде
// записана кількість дійсна прочитаних байт
LPOVERLAPPED lpov); // адреса структури типу OVERLAPPED
Функція PeekNamedPipe
Читання даних з каналу функцією ReadFile викликає видалення
прочитаних даних. На противагу цьому, функція PeekNamedPipe дозволяє
одержати дані з іменованого або анонімного каналу без видалення, а отже
при наступних викликах цієї функції або функції ReadFile будуть отримані
всі ті самі дані, що й при першому виклику функції PeekNamedPipe. Ще одна
відмінність полягає в тому, що функція PeekNamedPipe ніколи не переходить
у стан очікування, відразу повертаючи керування незалежно від того, чи є
дані в каналі чи ні.
BOOL PeekNamedPipe(
HANDLE hPipe, // ідентифікатор каналу Pipe
LPVOID lpvBuffer, // адреса буфера для прочитаних даних
DWORD cbBuffer, // розмір буфера прочитаних даних
LPDWORD lpcbRead, // адреса змінної, у яку буде
// записана дійсна кількість
// прочитаних байт даних
LPDWORD lpcbAvail, // адреса змінної, у яку буде
// записане загальна кількість байт даних,
// доступних у каналі для читання
LPDWORD lpcbMessage); // адреса змінної, у яку буде
// записана кількість непрочитаних
// байт у даному повідомленні
Функція WaitNamedPipe
За допомогою функції WaitNamedPipe процес може виконувати
очікування моменту, коли канал Pipe буде доступний для з’єднання:
BOOL WaitNamedPipe(
LPCTSTR lpszPipeName, // адреса ім'я каналу Pipe
DWORD dwTimeout); // час очікування в мілісекундах
Функція SetNamedPipeHandleState
При необхідності ви можете змінити режими роботи для вже
створеного каналу Pipe. Для цього призначена функція
SetNamedPipeHandleState:
BOOL SetNamedPipeHandleState(
343
HANDLE hNamedPipe, // ідентифікатор каналу Pipe
LPDWORD lpdwMode, // адреса змінної, у якій зазначений
// новий режим каналу
LPDWORD lpcbMaxCollect, // адреса змінної, у якій
// вказується максимальний розмір
// пакета, переданого в канал
LPDWORD lpdwCollectDataTimeout); // адреса максимальної
// затримки перед передачею даних
Функція GetNamedPipeHandleState
За допомогою функції GetNamedPipeHandleState процес може
визначити стан каналу Pipe, знаючи його ідентифікатор:
BOOL GetNamedPipeHandleState(
HANDLE hNamedPipe, // ідентифікатор іменованого каналу
LPDWORD lpState, // адреса прапорів стану каналу
LPDWORD lpCurInstances, // адреса кількості реалізацій
LPDWORD lpMaxCollectionCount, // адреса розміру пакета
// переданих даних
LPDWORD lpCollectDataTimeout, // адреса максимального
// часу очікування
LPTSTR lpUserName, // адреса – ім’я користувача
// клієнтського процесу
DWORD nMaxUserNameSize); // розмір буфера для
// ім'я користувача клієнтського процесу
Функція GetNamedPipeInfo
Функція дозволяє одержати інформацію про іменований канал за його
ідентифікатором:
BOOL GetNamedPipeInfo(
HANDLE hNamedPipe, // ідентифікатор каналу
LPDWORD lpFlags, // адреса прапорів типу каналу
LPDWORD lpOutBufferSize, // адреса розміру вихідного буфера
LPDWORD lpInBufferSize, // адреса розміру вхідного буфера
LPDWORD lpMaxInstances); // адреса максимальної кількості
// реалізацій каналу
344
може служити протокол UDP (User Datagram Protocol ), що використовується
в мережах TCP/IP, або протокол IPX, що є базовим у мережах Novell
NetWare. Основні переваги дейтаграмних протоколів полягають у високій
швидкодії й можливості широкомовної передачі даних, коли один вузол
відправляє повідомлення, а інші їх одержують, причому усі одночасно.
Другий спосіб передачі даних припускає створення каналу передачі
даних між двома різними вузлами мережі. При цьому канал створюється
засобами дейтаграмних протоколів, однак доставка пакетів у каналі є
гарантованою. Прикладами протоколів, що використовують канали зв’язку,
можуть служити протоколи TCP і SPX (протокол NETBIOS допускає
передачу даних з використанням як дейтаграм, так і каналів зв’язку).
Для передачі даних з використанням кожного з перерахованих вище
способів кожний додаток повинен створити об’єкт, що називається сокетом.
За своїм призначенням сокет найбільш схожий на ідентифікатор файлу
(file handle), що потрібний для виконання над файлом операцій читання або
запису. Перш ніж додаток, запущений на вузлі мережі зможе виконувати
передачу або прийом даних, він повинен створити сокет і ініціалізувати його,
указавши деякі параметри.
Для сокета необхідно вказати три параметри. Це IP-адреса, пов’язана із
сокетом, номер порту, для якого будуть виконуватися операції передачі
даних, а також тип сокета. Існують сокети двох типів. Перший тип
призначений для передачі даних у вигляді дейтаграм, другий – з
використанням каналів зв’язку.
У процесі ініціалізації додаток повинен зареєструвати себе в бібліотеці
WSOCK.
Для ініціалізації необхідно викликати функцію WSAStartup:
int WSAStartup (WORD wVersionRequested, LPWSADATA lpWSAData);
Перед тим як завершити свою роботу, додаток повинен звільнити
ресурси, отримані з операційної системи для роботи з Sockets. Для виконання
цього завдання додаток повинен викликати функцію WSACleanup:
int WSACleanup (void);
345
Створення й ініціалізація сокета
Після ініціалізації інтерфейсу Windows Sockets додаток повинен
створити один або декілька сокетів, які будуть використані для передачі
даних.
Сокет створюється за допомогою функції socket, що має наступний
прототип:
SOCKET socket (int af, int type, int protocol);
Видалення сокета
Для звільнення ресурсів додаток повинен закривати сокети, які йому
більше не потрібні, викликаючи функцію closesocket:
int closesocket (SOCKET sock);
Параметри сокета
Перед використанням необхідно задати параметри сокета. Для цього ви
повинні підготувати структуру типу sockaddr. Для роботи з адресами у
форматі Internet використовується інший варіант цієї структури, у якому
деталізується формат поля sa_data:
struct sockaddr_in
При ініціалізації сокета в цій структурі необхідно вказати адресу IP, з
якою буде працювати даний сокет. Якщо сокет буде працювати з будь-якою
адресою (наприклад, ви створюєте сервер, що буде доступний з вузлів з будь-
якою адресою), то адресу для сокета можна вказати в такий спосіб:
srv_address.sin_addr.s_addr = INADDR_ANY;
У тому випадку, якщо сокет буде працювати з певною адресою IP
(наприклад, ви створюєте додаток-клієнт, що буде звертатися до сервера з
конкретною адресою IP), у зазначену структуру необхідно записати реальну
адресу.
Дейтаграмний протокол UDP дозволяє посилати пакети даних
одночасно всім станціям у широкомовному режимі. Для цього ви повинні
вказати адресу як INADDR_BROADCAST.
Якщо відома адреса у вигляді чотирьох десяткових чисел, розділених
крапкою (саме так його вводить користувач), то ви можете заповнити поле
адреси за допомогою функції inet_addr:
dest_sin.sin_addr .s_addr = inet_addr ("200.200.200.201");
346
Однак найчастіше користувач працює з доменними іменами,
використовуючи сервер DNS або файл HOSTS. У цьому випадку спочатку
необхідно скористатися функцією gethostbyname, що повертає адресу IP, а
потім записати отриману адресу в структуру sin_addr.
Сторона сервера
Насамперед необхідно перемкнути сокет у режим прийому для
виконання очікування з’єднання із клієнтом за допомогою функції listen:
int listen(SOCKET sock, int backlog);
Далі необхідно виконати очікування з’єднання. Необхідно циклічно
викликати функцію accept доти, поки не буде встановлене з’єднання. Потім
можна буде приступати до обміну даними. Функція accept має наступний
прототип:
SOCKET accept (SOCKET sock, struct sockaddr * addr,
int FAR * addrlen);
Сторона клієнта
На стороні клієнта необхідно виконати з’єднання з сервером,
виконавши функцію connect:
int connect(SOCKET sock,struct sockaddr* addr, int namelen);
347
Передача й прийом даних
Після того як канал створений, можна починати передачу даних. Для
передачі даних за допомогою протоколу гарантованої доставки TCP
необхідно скористатися функціями send і recv, які входять у програмний
інтерфейс Windows Sockets.
int send (SOCKET sock, const char FAR* buf, int bufsize, int flags);
Параметри функції recv, призначеної для прийому даних, аналогічні
параметрам функції send :
int recv (SOCKET sock, char FAR * buf, int bufsize, int flags);
Якщо для зв’язку використовується UDP-протокол, то для передачі та
прийому необхідно скористатися функціями: sendto та recvfrom.
348
Текст програми сервера
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
LPSTR nameSlot = TEXT("\\\\.\\mailslot\\my_slot");
HANDLE hSlot;
char rzBuf[1024];
DWORD rzcbBuf;
hSlot = CreateMailslot(nameSlot, 0, MAILSLOT_WAIT_FOREVER, NULL );
if (hSlot == INVALID_HANDLE_VALUE)
return FALSE;
while (TRUE)
{ UINT bytes = ReadFile(hSlot, rzBuf, sizeof(rzBuf)-1, &rzcbBuf, NULL);
// обробока данных:
if (!bytes) return -1;
printf("%s",rzBuf);
}
CloseHandle(hSlot);
_getch();
return 0;
}
349
Спочатку необхідно запустити сервер, а потім клієнт. У результаті
виконання програм на стороні сервера буде виконано виведення
повідомлення «Hello!».
hPipe = CreateNamedPipe(lpszPipeName,
FILE_FLAG_OVERLAPPED | PIPE_ACCESS_DUPLEX,
PIPE_TYPE_MESSAGE | PIPE_READMODE_MESSAGE |PIPE_WAIT, 1,
0, 0, 1000, &sa);
if (hPipe == INVALID_HANDLE_VALUE) {
printf("Failed to create named pipe");
return -1;
}
while ( 1 )
{
ConnectNamedPipe(hPipe, &os);
bRet = ReadFile(hPipe, szIn, sizeof(szIn),&cbRead,&os);
if(cbRead)
{
sprintf(szOut, "Hello from Server");
printf("Recived from client -> %s", szIn);
break;
}
}
bRet = WriteFile(hPipe,szOut,sizeof(szOut),&cbWritten,&os);
350
DisconnectNamedPipe(hPipe);
_getch();
return 0;
}
if (!ret) {
printf("client: CallNamedPipe failed, GetLastError = %d\n",
GetLastError());
getch();
exit(1);
}
_getch();
return 0;
}
У результаті виконання програм сервер та клієнт обміняються
повідомленнями, які будуть виведені на екран.
#include <winsock2.h>
#include <stdio.h>
#include <conio.h>
#pragma comment(lib, "Ws2_32.lib")
char szReq[60];
int _tmain(int argc, _TCHAR* argv[])
{
351
WORD sockVer;
WSADATA wsaData;
int retVal;
sockVer = MAKEWORD(2,2);
WSAStartup(sockVer, &wsaData);
//Создаем сокет
SOCKET servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
if(servSock == INVALID_SOCKET)
{
printf("Unable to create socket\n");
WSACleanup();
return SOCKET_ERROR;
}
SOCKADDR_IN sin;
sin.sin_family = PF_INET;
sin.sin_port = htons(11111);
sin.sin_addr.s_addr = INADDR_ANY;
SOCKET clientSock;
if(clientSock == INVALID_SOCKET)
{
printf("Unable to accept\n");
WSACleanup();
return SOCKET_ERROR;
}
if(retVal == SOCKET_ERROR)
{
printf("Unable to recv\n");
return SOCKET_ERROR;
}
352
printf("Got the request from client\n%s\n",szReq);
if(retVal == SOCKET_ERROR)
{
printf("Unable to send\n");
return SOCKET_ERROR;
}
closesocket(clientSock);
closesocket(servSock);
WSACleanup();
_getch();
return 0;
}
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <winsock2.h>
#pragma comment(lib, "Ws2_32.lib")
char szResponse[20];
int _tmain(int argc, _TCHAR* argv[])
{
WORD ver = MAKEWORD(2,2);
WSADATA wsaData;
int retVal=0;
WSAStartup(ver,(LPWSADATA)&wsaData);
LPHOSTENT hostEnt;
hostEnt = gethostbyname("localhost");
if(!hostEnt)
{
printf("Unable to collect gethostbyname\n");
WSACleanup();
return 1;
}
if(clientSock == SOCKET_ERROR)
{
353
printf("Unable to create socket\n");
WSACleanup();
return 1;
}
SOCKADDR_IN serverInfo;
serverInfo.sin_family = PF_INET;
serverInfo.sin_addr = *((LPIN_ADDR)*hostEnt->h_addr_list);
serverInfo.sin_port = htons(11111);
retVal=connect(clientSock,(LPSOCKADDR)&serverInfo, sizeof(serverInfo));
if(retVal==SOCKET_ERROR)
{
printf("Unable to connect\n");
WSACleanup();
return 1;
}
if(retVal == SOCKET_ERROR)
{
printf("Unable to send\n");
WSACleanup();
return 1;
}
if(retVal == SOCKET_ERROR)
{
printf("Unable to recv\n");
WSACleanup();
return 1;
}
closesocket(clientSock);
WSACleanup();
_getch();
return 0;
}
354
22.4. Контрольні питання
355
Варіанти завдань:
Варіант Задача Механізм Варіант Задача Механізм
1 1 MailSlot 7 2 Socket (UDP)
2 1 Pipe 8 2 Socket (TCP)
3 1 Socket (UDP) 9 3 MailSlot
4 1 Socket (TCP) 10 3 Pipe
5 2 MailSlot 11 3 Socket (UDP)
6 2 Pipe 12 3 Socket (TCP)
356
СПИСОК ЛІТЕРАТУРИ
357
Навчальне видання
КОМП’ЮТЕРНІ МЕРЕЖІ
Лабораторний практикум
для студентів денної та заочної форм навчання за спеціальністю
«Комп’ютерна інженерія»