Перейти до вмісту

Лабораторні

Доріжок дві, і йдуть вони паралельно теорії. На доріжці A ви пишете мережеві програми: від echo-сервера до власного DNS-резолвера й балансувальника. На доріжці B будуєте мережі з хостів і маршрутизаторів, налаштовуєте файрвол, VPN, DNS, TLS і MQTT, а наприкінці шукаєте несправності в чужій зламаній мережі.

Одна від одної доріжки не залежать. Можна пройти одну, можна обидві, можна брати роботи вибірково: кожна містить перелік модулів, які треба прочитати перед нею.

Три рівні складності означають глибину роботи, а не порядок. Базовий перевіряє, чи ви зрозуміли механізм. Середній вимагає його застосувати. Просунутий вимагає виміряти результат і пояснити його.

Уся мережа на одній машині

Section titled “Уся мережа на одній машині”

Для жодної роботи не потрібні кілька комп’ютерів чи справжній комутатор. Кожен «хост» і кожен «маршрутизатор» у роботах доріжки B — це простір імен мережі (network namespace) Linux: окремий набір інтерфейсів, адрес, таблиць маршрутів і правил файрвола всередині однієї системи. З’єднуються вони парами віртуальних інтерфейсів veth і мостами.

Terminal window
sudo ip netns add h1
sudo ip netns exec h1 ip addr # у h1 лише lo, і той вимкнений

Якщо ви проходили лабораторну B4 курсу «Операційні системи», це той самий механізм, що дав контейнеру власну мережу. Тут він стає робочим інструментом: десяток просторів імен коштує мегабайти пам’яті, а трафік між ними видно в tcpdump, як на справжньому дроті.

Linux, який не шкода зламати: роботи вмикають маршрутизацію, міняють правила файрвола й запускають мережеві служби.

Перевірки, заготовки й скрипти встановлення лежать в одному архіві:

Terminal window
curl -fsSL https://network.easy-tech.blog/network-course-labs.tar.gz | tar xz
cd network-course-labs

Далі всі команди зі сторінок робіт виконуються з цього каталогу. Еталонних розв’язків в архіві немає.

У каталозі setup/ є Vagrant-машина на Debian 12, у якій уже стоїть усе потрібне:

Terminal window
cd setup && vagrant up && vagrant ssh

Якщо Vagrant вам не підходить, setup/provision.sh поставить те саме на будь-який свіжий Debian чи Ubuntu:

Terminal window
sudo bash setup/provision.sh

Доріжка A: чекер запускає вашу програму й перевіряє її поведінку, зокрема в незручних умовах: з утратами пакетів, з повільним клієнтом, з бекендом, що впав.

Terminal window
cd labs/a1-echo
./check.sh ./echo-server

Доріжка B: чекер нічого не будує. Він заходить у простори імен, які ви створили за сторінкою роботи, і перевіряє, що дозволене проходить, а заборонене ні. Назви інтерфейсів обираєте ви, тож чекер на них не спирається; стабільні лише назви просторів імен і адреси.

Terminal window
cd labs/b2-linux-router
sudo ./check.sh

Скрипт друкує список перевірок і показує, які не пройшли. Оцінок він не виставляє й нікуди нічого не надсилає.

Майже кожна робота просить щось «записати у звіт». Це текстовий файл поруч із розв’язком, на сторінку-дві: числа, які ви отримали, відповіді на запитання з етапів і що не запрацювало з першого разу та чому. У роботах із замірами (B6) і налагодженням (B7) звіт і є головним результатом.

Доріжка 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