GNS3 — мережева симуляція¶
GNS3 (Graphical Network Simulator-3) — потужний симулятор мереж, який дозволяє запускати реальні мережеві образи (Cisco, MikroTik, Juniper) у віртуальному середовищі. Ідеальний для навчання, тестування та прототипування.
Навіщо GNS3?¶
┌─────────────────────────────────────────────────────────────────┐
│ НАВІЩО GNS3? │
├─────────────────────────────────────────────────────────────────┤
│ │
│ Без GNS3: │
│ ├── Купити 5 роутерів = $$$ │
│ ├── Кабелі, комутатори, місце │
│ └── Зламав конфіг = їздиш в серверну │
│ │
│ З GNS3: │
│ ├── Все на ноутбуці │
│ ├── Необмежена кількість пристроїв │
│ ├── Snapshots — відкат за секунду │
│ └── Ті самі образи що й на production │
│ │
│ Використання: │
│ ✓ Навчання (CCNA, MTCNA) │
│ ✓ Тестування конфігурацій │
│ ✓ Прототипування мереж │
│ ✓ Відтворення production проблем │
│ ✓ Демонстрації клієнтам │
│ │
└─────────────────────────────────────────────────────────────────┘
Архітектура¶
┌─────────────────────────────────────────────────────────────────┐
│ GNS3 АРХІТЕКТУРА │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ GNS3 GUI (клієнт) │ │
│ │ Графічний інтерфейс, топології │ │
│ └─────────────────────┬───────────────────────────────────┘ │
│ │ API │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ GNS3 Server │ │
│ │ Керує емуляторами, compute nodes │ │
│ └─────────────────────┬───────────────────────────────────┘ │
│ │ │
│ ┌───────────────┼───────────────┐ │
│ ▼ ▼ ▼ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ QEMU/KVM │ │ Docker │ │ Dynamips │ │
│ │ (MikroTik │ │(Linux, │ │ (Cisco │ │
│ │ VyOS) │ │ services) │ │ IOS) │ │
│ └───────────┘ └───────────┘ └───────────┘ │
│ │
│ Варіанти деплою: │
│ • Local — все на одній машині │
│ • GNS3 VM — сервер в VMware/VirtualBox │
│ • Remote — сервер на потужній машині │
│ │
└─────────────────────────────────────────────────────────────────┘
Встановлення¶
Linux (Ubuntu/Debian)¶
# Додати репозиторій
sudo add-apt-repository ppa:gns3/ppa
sudo apt update
# Встановити GNS3
sudo apt install gns3-gui gns3-server
# Додати користувача до груп
sudo usermod -aG ubridge,libvirt,kvm,wireshark $(whoami)
# Перелогінитись або
newgrp ubridge
# Запустити
gns3
Windows¶
- Завантажити з gns3.com
- Запустити інсталятор
- Встановити з усіма компонентами (WinPcap, Wireshark)
- Рекомендовано: встановити GNS3 VM
macOS¶
# Через Homebrew
brew install --cask gns3
# Або завантажити з сайту
GNS3 VM vs Local Server¶
| Аспект | Local | GNS3 VM |
|---|---|---|
| Налаштування | Простіше | Складніше |
| Продуктивність | Нижча | Вища (KVM) |
| Підтримка образів | Обмежена | Повна |
| QEMU/KVM | Windows: повільно | Нативно |
| Docker | Через Docker Desktop | Вбудований |
Рекомендація:
- Linux → Local server з KVM
- Windows/macOS → GNS3 VM
Налаштування GNS3 VM¶
1. Завантажити GNS3 VM з gns3.com
2. Імпортувати в VMware/VirtualBox
3. Налаштування VM:
- RAM: мінімум 4 GB, рекомендовано 8+ GB
- CPU: 2+ cores
- Network: Host-only + NAT
4. В GNS3 GUI: Edit → Preferences → GNS3 VM
- Enable the GNS3 VM
- Virtualization engine: VMware/VirtualBox
Додавання образів¶
MikroTik CHR (Cloud Hosted Router)¶
1. Завантажити CHR з mikrotik.com (безкоштовно)
- Формат: Raw disk image (.img)
2. В GNS3: Edit → Preferences → QEMU → Qemu VMs → New
- Name: MikroTik-CHR-7.x
- RAM: 256 MB
- Console type: telnet
- Disk image: chr-7.x.img
- На вкладці Network:
- Adapters: 4-8
- Type: virtio-net-pci
Cisco IOS (через Dynamips)¶
⚠️ Потрібен легальний образ IOS
1. Edit → Preferences → Dynamips → IOS routers → New
2. Вказати шлях до .bin файлу
3. Автоматично визначиться платформа
4. Рекомендовано: обчислити Idle-PC значення
(Right-click → Idle-PC finder)
VyOS (відкритий роутер)¶
# Завантажити rolling release з vyos.io
# Формат: ISO
# В GNS3: QEMU VM
# - RAM: 512 MB
# - Disk: 2 GB
# - Boot from ISO, встановити на диск
Linux (Docker)¶
1. Edit → Preferences → Docker → Docker containers → New
2. Existing image: ubuntu:22.04
3. Або Alpine для легкості: alpine:latest
4. Adapters: скільки потрібно
Створення топології¶
Приклад: Проста мережа¶
┌─────────────────────────────────────────────────────────────────┐
│ БАЗОВА ТОПОЛОГІЯ │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ │
│ │ Internet │ │
│ │ (Cloud node) │ │
│ └────────┬─────────┘ │
│ │ ether1 │
│ ┌────────┴─────────┐ │
│ │ Router │ │
│ │ (MikroTik CHR) │ │
│ │ 192.168.1.1 │ │
│ └────────┬─────────┘ │
│ │ ether2 │
│ ┌────────┴─────────┐ │
│ │ Switch │ │
│ │ (Ethernet sw) │ │
│ └─┬──────┬──────┬──┘ │
│ │ │ │ │
│ ┌────┴──┐ ┌─┴────┐ ┌┴─────┐ │
│ │ PC1 │ │ PC2 │ │Server│ │
│ │ VPCS │ │ VPCS │ │Docker│ │
│ │.100 │ │.101 │ │.10 │ │
│ └───────┘ └──────┘ └──────┘ │
│ │
│ 192.168.1.0/24 │
│ │
└─────────────────────────────────────────────────────────────────┘
Кроки створення¶
1. Перетягнути пристрої з панелі ліворуч
2. З'єднати кабелями (клік на порт → клік на інший порт)
3. Запустити всі пристрої (зелена кнопка Play)
4. Відкрити консоль (подвійний клік)
5. Налаштувати
Конфігурація MikroTik¶
# В консолі MikroTik:
# Задати ім'я
/system identity set name=Router1
# Налаштувати WAN (DHCP)
/ip dhcp-client add interface=ether1 disabled=no
# Налаштувати LAN
/ip address add address=192.168.1.1/24 interface=ether2
# NAT для виходу в інтернет
/ip firewall nat add chain=srcnat out-interface=ether1 action=masquerade
# DHCP сервер для LAN
/ip pool add name=dhcp-pool ranges=192.168.1.100-192.168.1.200
/ip dhcp-server add name=dhcp1 interface=ether2 address-pool=dhcp-pool
/ip dhcp-server network add address=192.168.1.0/24 gateway=192.168.1.1 dns-server=8.8.8.8
Конфігурація VPCS¶
# В консолі VPCS:
ip 192.168.1.100/24 192.168.1.1
# Перевірка
ping 192.168.1.1
ping 8.8.8.8
З'єднання з реальною мережею¶
Cloud node (NAT)¶
Використання:
- Вихід симульованої мережі в інтернет
- Доступ до реальних сервісів
Налаштування:
1. Перетягнути Cloud node на топологію
2. Configure → вибрати мережевий інтерфейс хоста
- virbr0 (Linux KVM)
- vmnet8 (VMware NAT)
- eth0/en0 (пряме підключення)
3. З'єднати з роутером
NAT node (спрощений)¶
- Автоматичний NAT без конфігурації
- Виділяє IP через DHCP
- Найпростіший варіант для виходу в інтернет
Host-only мережа¶
Для доступу з хоста до VM:
1. Створити host-only мережу в гіпервізорі
2. Додати Cloud node з цією мережею
3. Хост може пінгувати пристрої GNS3
Інтеграція з Docker¶
Docker в GNS3¶
# GNS3 може запускати Docker контейнери як ноди
Переваги:
- Легкі (порівняно з VM)
- Швидкий старт
- Готові образи
Приклади використання:
- Web сервери (nginx, apache)
- DNS (bind9, dnsmasq)
- Моніторинг (prometheus, grafana)
- Тестові клієнти
Додавання Docker образу¶
1. Edit → Preferences → Docker → Docker containers → New
2. New Image: введіть ім'я образу
- nginx:alpine
- python:3.11-alpine
- alpine:latest
3. Adapters: кількість мережевих інтерфейсів
4. Start command: /bin/sh (або залишити дефолт)
Приклад: Web сервер¶
# В Docker контейнері (alpine + nginx):
apk add nginx
nginx
# Або просто використати nginx:alpine образ
# Він запуститься автоматично
Корисні функції¶
Snapshots¶
Зберегти стан всіх пристроїв:
- Edit → Manage snapshots → Create
- Або правий клік на топології
Відновити:
- Manage snapshots → Restore
Використання:
- Перед ризикованими змінами
- Для демонстрацій (повернення до початку)
Захоплення трафіку¶
1. Правий клік на з'єднанні
2. Start capture
3. Відкриється Wireshark
4. Аналізуйте трафік в реальному часі
Експорт/Імпорт проектів¶
Portable project:
- File → Export portable project
- Включає всі образи та конфіги
- Можна відкрити на іншому комп'ютері
Linking (посилання на зовнішні ресурси)¶
- Text notes на топології
- Прямокутники для групування
- Малюнки (імпорт зображень)
Типові проблеми¶
Пристрій не запускається¶
# Перевірити логи
# В GNS3: View → Show/Hide console
# Linux: перевірити KVM
kvm-ok
# Перевірити права
ls -la /dev/kvm
# Має бути доступ для групи kvm
Мережа не працює¶
1. Перевірити чи запущені всі пристрої
2. Перевірити з'єднання кабелів (зелений = up)
3. Перевірити IP адресацію
4. Запустити Wireshark на лінку
GNS3 VM не з'єднується¶
1. Перевірити чи VM запущена
2. Перевірити мережеві налаштування VM
- Має бути host-only мережа
3. В GNS3: Edit → Preferences → GNS3 VM
- Перевірити IP адресу
Повільна робота¶
Рішення:
1. Використовувати GNS3 VM з KVM
2. Збільшити RAM для VM
3. Обчислити Idle-PC для Cisco IOS
4. Використовувати легші образи (Alpine замість Ubuntu)
5. Обмежити кількість одночасних пристроїв
Приклад: WireGuard між двома сайтами¶
┌────────────────────────────────────────────────────────────────┐
│ │
│ Site A (192.168.1.0/24) Site B (192.168.2.0/24) │
│ │
│ ┌──────┐ ┌──────────┐ WG ┌──────────┐ ┌──────┐ │
│ │ PC-A │─────│ Router-A │═══════│ Router-B │─────│ PC-B │ │
│ │ .100 │ │ .1 │ │ .1 │ │ .100 │ │
│ └──────┘ └────┬─────┘ └────┬─────┘ └──────┘ │
│ │ │ │
│ └────── NAT ───────┘ │
│ (Internet) │
│ │
│ WireGuard tunnel: 10.0.0.0/30 │
│ Router-A: 10.0.0.1 │
│ Router-B: 10.0.0.2 │
│ │
└────────────────────────────────────────────────────────────────┘
Див. також¶
- MikroTik основи — RouterOS команди
- WireGuard — VPN налаштування
- Віртуалізація — VM та контейнери
- Docker — контейнеризація
Шлях: networking/simulation/gns3-basics.md