Основи маршрутизації в MikroTik¶
Ця стаття пояснює що таке маршрутизація, як працює таблиця маршрутів, і як налаштувати статичні маршрути в RouterOS.
Що таке маршрутизація?¶
Маршрутизація — це процес вибору шляху для пакета даних від джерела до призначення.
Простий приклад¶
Уявіть, що ви надсилаєте лист:
┌──────────────────────────────────────────────────────┐
│ │
│ Ваш дім (192.168.1.10) │
│ │ │
│ │ "Куди відправити пакет для 8.8.8.8?" │
│ ▼ │
│ Роутер (192.168.1.1) ─────────────────────────────▶│
│ │ │
│ │ Дивиться в таблицю маршрутів: │
│ │ "8.8.8.8 не в моїй мережі, │
│ │ відправлю через gateway 10.0.0.1" │
│ ▼ │
│ Провайдер (10.0.0.1) ─────────────────────────────▶│
│ │ │
│ │ ... і так далі до Google │
│ ▼ │
│ Google DNS (8.8.8.8) │
│ │
└──────────────────────────────────────────────────────┘
Роутер — це "пошта"¶
Роутер отримує пакет і вирішує:
1. Це для мене? → Обробляю
2. Це для моєї локальної мережі? → Відправляю напряму
3. Це кудись далі? → Відправляю через gateway
Таблиця маршрутизації¶
Що це?¶
Routing table — це "книга адрес" роутера. Для кожної мережі вказано куди відправляти пакети.
Як подивитися в MikroTik¶
/ip route print
Приклад виводу:
Flags: D - DYNAMIC; A - ACTIVE; c - CONNECT, s - STATIC
Columns: DST-ADDRESS, GATEWAY, DISTANCE
# DST-ADDRESS GATEWAY DISTANCE
0 A c 192.168.1.0/24 ether1 0
1 A c 10.10.10.0/24 wg0 0
2 A s 0.0.0.0/0 192.168.1.254 1
3 A s 10.0.0.0/8 10.10.10.1 10
Пояснення колонок¶
| Колонка | Значення |
|---|---|
| Flags | D=динамічний, A=активний, c=connected, s=статичний |
| DST-ADDRESS | Мережа призначення (куди?) |
| GATEWAY | Через кого відправляти |
| DISTANCE | Пріоритет (менше = краще) |
Типи маршрутів¶
Connected (c) — мережі, до яких роутер підключений напряму:
192.168.1.0/24 через ether1 ← роутер має IP в цій мережі
Static (s) — маршрути, додані вручну:
10.0.0.0/8 через 10.10.10.1 ← адмін сказав "йди туди"
Dynamic (D) — маршрути від протоколів (OSPF, BGP):
172.16.0.0/12 через 10.10.10.5 ← OSPF сказав "є шлях"
Default Gateway¶
Що це?¶
Default gateway — це "якщо не знаю куди, йди сюди".
Записується як 0.0.0.0/0 — означає "всі адреси".
Як налаштувати¶
/ip route add dst-address=0.0.0.0/0 gateway=192.168.1.254
Або коротше:
/ip route add gateway=192.168.1.254
Типова конфігурація¶
┌─────────────────────────────────────────────────────────┐
│ │
│ LAN: 192.168.1.0/24 │
│ │ │
│ │ ether2-4 (bridge) │
│ │ │
│ ┌────▼────┐ │
│ │ MikroTik│ 192.168.1.1 │
│ │ │ │
│ └────┬────┘ │
│ │ ether1 │
│ │ 10.0.0.2 │
│ │ │
│ ┌────▼────┐ │
│ │Провайдер│ 10.0.0.1 ← default gateway │
│ └─────────┘ │
│ │
└─────────────────────────────────────────────────────────┘
Таблиця маршрутів:
0 A c 192.168.1.0/24 bridge1 0 ← локальна мережа
1 A c 10.0.0.0/24 ether1 0 ← мережа до провайдера
2 A s 0.0.0.0/0 10.0.0.1 1 ← default gateway
Статичні маршрути¶
Коли потрібні?¶
- Доступ до віддаленої мережі через певний gateway
- VPN тунелі — маршрути до мереж за тунелем
- Резервні шляхи — failover на інший канал
Синтаксис¶
/ip route add dst-address=МЕРЕЖА gateway=КУДИ distance=ПРІОРИТЕТ
Приклад 1: Маршрут до офісної мережі¶
# Офіс (10.20.0.0/24) доступний через VPN gateway 10.10.10.5
/ip route add dst-address=10.20.0.0/24 gateway=10.10.10.5
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Ви │ │ Ваш роутер │ │ Офіс │
│ 192.168.1.10│────────▶│ 10.10.10.1 │─ VPN ──▶│ 10.20.0.0/24│
└─────────────┘ └─────────────┘ └─────────────┘
│
│ Таблиця:
│ 10.20.0.0/24 → 10.10.10.5 (VPN)
Приклад 2: Маршрут через WireGuard¶
# WireGuard peer має мережу 172.16.0.0/16
/ip route add dst-address=172.16.0.0/16 gateway=wg0
Приклад 3: Blackhole (заборона)¶
# Заблокувати доступ до мережі
/ip route add dst-address=10.99.0.0/24 type=blackhole
Distance та Metric¶
Distance (Administrative Distance)¶
Distance — це "довіра" до джерела маршруту.
| Distance | Джерело |
|---|---|
| 0 | Connected (напряму підключені) |
| 1 | Static routes (за замовчуванням) |
| 20 | eBGP |
| 110 | OSPF |
| 200 | iBGP |
| 255 | Unreachable |
Менше = краще. Якщо є два маршрути до однієї мережі, перемагає з меншим distance.
Практичний приклад: Failover¶
# Основний канал (distance=1)
/ip route add dst-address=0.0.0.0/0 gateway=10.0.0.1 distance=1 comment="main"
# Резервний канал (distance=10)
/ip route add dst-address=0.0.0.0/0 gateway=192.168.100.1 distance=10 comment="backup"
┌─────────────────────────────────────────────────────────┐
│ │
│ Нормальний режим: │
│ │
│ MikroTik ──(distance=1)──▶ Main ISP ✓ │
│ ──(distance=10)──▶ Backup ISP (standby) │
│ │
│ Якщо Main ISP падає: │
│ │
│ MikroTik ──(distance=1)──▶ Main ISP ✗ (недоступний) │
│ ──(distance=10)──▶ Backup ISP ✓ (активний) │
│ │
└─────────────────────────────────────────────────────────┘
Check-gateway¶
Щоб failover працював автоматично:
/ip route add dst-address=0.0.0.0/0 gateway=10.0.0.1 distance=1 check-gateway=ping
/ip route add dst-address=0.0.0.0/0 gateway=192.168.100.1 distance=10 check-gateway=ping
check-gateway=ping — роутер пінгує gateway і вимикає маршрут якщо він не відповідає.
Routing Mark (Policy Routing)¶
Що це?¶
Routing mark дозволяє різний трафік відправляти різними шляхами.
Приклад: VoIP через окремий канал¶
# 1. Маркуємо VoIP трафік
/ip firewall mangle add chain=prerouting protocol=udp dst-port=5060-5061 \
action=mark-routing new-routing-mark=voip
# 2. Маршрут для маркованого трафіку
/ip route add dst-address=0.0.0.0/0 gateway=10.0.0.1 routing-mark=voip
# 3. Звичайний маршрут для всього іншого
/ip route add dst-address=0.0.0.0/0 gateway=192.168.100.1
┌─────────────────────────────────────────────────────────┐
│ │
│ VoIP трафік ──(mark=voip)──▶ ISP 1 (низька латентність)│
│ │
│ Весь інший ──(без mark)────▶ ISP 2 (дешевший) │
│ │
└─────────────────────────────────────────────────────────┘
Troubleshooting¶
Перевірити маршрут для IP¶
/ip route check 8.8.8.8
Подивитися активні маршрути¶
/ip route print where active
Traceroute¶
/tool traceroute 8.8.8.8
Типові проблеми¶
Проблема: Немає доступу до Інтернету
# Перевірити default gateway
/ip route print where dst-address=0.0.0.0/0
# Перевірити DNS
/ip dns print
/ping 8.8.8.8
/ping google.com
Проблема: Немає доступу до VPN мережі
# Перевірити маршрут
/ip route print where dst-address~"10.20"
# Перевірити тунель
/interface wireguard peers print
Практичне завдання¶
Завдання¶
Налаштуйте маршрутизацію для такої схеми:
┌─────────────┐ ┌─────────────┐
│ LAN │ │ Сервер │
│ 192.168.1.0 │ │ 10.10.10.10 │
└──────┬──────┘ └──────┬──────┘
│ │
│ ether2 │ wg0
│ │
┌────▼───────────────────────▼────┐
│ MikroTik │
│ │
│ ether1: 10.0.0.2 │
│ ether2: 192.168.1.1 │
│ wg0: 10.10.10.1 │
└────────────────┬────────────────┘
│ ether1
│
┌────▼────┐
│ ISP │
│ 10.0.0.1│
└─────────┘
Рішення¶
# Default gateway до ISP
/ip route add dst-address=0.0.0.0/0 gateway=10.0.0.1
# Якщо WireGuard peer має мережу 10.10.10.0/24, вона вже connected через wg0
# Додаткових маршрутів не потрібно
# Перевірка
/ip route print
Див. також¶
Шлях: networking/basics/routing.md