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

  1. Завантажити з gns3.com
  2. Запустити інсталятор
  3. Встановити з усіма компонентами (WinPcap, Wireshark)
  4. Рекомендовано: встановити 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                                          │
│                                                                │
└────────────────────────────────────────────────────────────────┘

Див. також

Шлях: networking/simulation/gns3-basics.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications