Лабораторні
Як це влаштовано
Section titled “Як це влаштовано”Доріжок дві, і йдуть вони паралельно теорії. На доріжці A ви пишете мережеві програми: від echo-сервера до власного DNS-резолвера й балансувальника. На доріжці B будуєте мережі з хостів і маршрутизаторів, налаштовуєте файрвол, VPN, DNS, TLS і MQTT, а наприкінці шукаєте несправності в чужій зламаній мережі.
Одна від одної доріжки не залежать. Можна пройти одну, можна обидві, можна брати роботи вибірково: кожна містить перелік модулів, які треба прочитати перед нею.
Три рівні складності означають глибину роботи, а не порядок. Базовий перевіряє, чи ви зрозуміли механізм. Середній вимагає його застосувати. Просунутий вимагає виміряти результат і пояснити його.
Уся мережа на одній машині
Section titled “Уся мережа на одній машині”Для жодної роботи не потрібні кілька комп’ютерів чи справжній комутатор.
Кожен «хост» і кожен «маршрутизатор» у роботах доріжки B — це
простір імен мережі (network namespace) Linux: окремий набір інтерфейсів,
адрес, таблиць маршрутів і правил файрвола всередині однієї системи.
З’єднуються вони парами віртуальних інтерфейсів veth і мостами.
sudo ip netns add h1sudo ip netns exec h1 ip addr # у h1 лише lo, і той вимкненийЯкщо ви проходили лабораторну
B4 курсу «Операційні системи»,
це той самий механізм, що дав контейнеру власну мережу. Тут він стає
робочим інструментом: десяток просторів імен коштує мегабайти пам’яті,
а трафік між ними видно в tcpdump, як на справжньому дроті.
Що потрібно
Section titled “Що потрібно”Linux, який не шкода зламати: роботи вмикають маршрутизацію, міняють правила файрвола й запускають мережеві служби.
Файли для роботи
Section titled “Файли для роботи”Перевірки, заготовки й скрипти встановлення лежать в одному архіві:
curl -fsSL https://network.easy-tech.blog/network-course-labs.tar.gz | tar xzcd network-course-labsДалі всі команди зі сторінок робіт виконуються з цього каталогу. Еталонних розв’язків в архіві немає.
Готове середовище
Section titled “Готове середовище”У каталозі setup/ є Vagrant-машина на Debian 12, у якій уже стоїть
усе потрібне:
cd setup && vagrant up && vagrant sshЯкщо Vagrant вам не підходить, setup/provision.sh поставить те саме
на будь-який свіжий Debian чи Ubuntu:
sudo bash setup/provision.shЯк перевіряти себе
Section titled “Як перевіряти себе”Доріжка A: чекер запускає вашу програму й перевіряє її поведінку, зокрема в незручних умовах: з утратами пакетів, з повільним клієнтом, з бекендом, що впав.
cd labs/a1-echo./check.sh ./echo-serverДоріжка B: чекер нічого не будує. Він заходить у простори імен, які ви створили за сторінкою роботи, і перевіряє, що дозволене проходить, а заборонене ні. Назви інтерфейсів обираєте ви, тож чекер на них не спирається; стабільні лише назви просторів імен і адреси.
cd labs/b2-linux-routersudo ./check.shСкрипт друкує список перевірок і показує, які не пройшли. Оцінок він не виставляє й нікуди нічого не надсилає.
Майже кожна робота просить щось «записати у звіт». Це текстовий файл поруч із розв’язком, на сторінку-дві: числа, які ви отримали, відповіді на запитання з етапів і що не запрацювало з першого разу та чому. У роботах із замірами (B6) і налагодженням (B7) звіт і є головним результатом.
Роботи
Section titled “Роботи”Доріжка A — мережеве програмування
Section titled “Доріжка A — мережеве програмування”| Робота | Рівень | Спирається на | |
|---|---|---|---|
| A1 | Echo-сервер і клієнт | базовий | 3, 11 |
| A2 | Власні ping і traceroute | базовий | 6 |
| A3 | Розбір пакетів із pcap | середній | 4, 6, 11 |
| A4 | Надійна доставка поверх UDP | просунутий | 11, 12 |
| A5 | Ітеративний DNS-резолвер | середній | 13 |
| A6 | Зворотний проксі й балансувальник | просунутий | 11, 14 |
Доріжка B — побудова й налагодження мереж
Section titled “Доріжка B — побудова й налагодження мереж”| Робота | Рівень | Спирається на | |
|---|---|---|---|
| B1 | Міст і VLAN руками | базовий | 4, 5 |
| B2 | Linux як маршрутизатор | базовий | 6, 7, 9 |
| B3 | OSPF і BGP | середній | 8 |
| B4 | Файрвол і WireGuard | середній | 9, 16 |
| B5 | Власні DNS і TLS | середній | 13, 15 |
| B6 | Продуктивність і черги | просунутий | 2, 12 |
| B7 | Налагодження зламаної мережі | просунутий | 5, 6, 7, 13, 16 |
| B8 | MQTT і IoT-шлюз | середній | 15, 17 |