Основи маршрутизації в MikroTik¶
Ця стаття пояснює що таке маршрутизація, як працює таблиця маршрутів, і як налаштувати статичні маршрути в RouterOS.
Що таке маршрутизація?¶
Маршрутизація — це процес вибору шляху для пакета даних від джерела до призначення.
Простий приклад¶
Уявіть, що ви надсилаєте лист:
flowchart TB
PC[💻 Ваш ПК<br/>192.168.1.10]
Router[🔀 Роутер<br/>192.168.1.1]
ISP[🌐 Провайдер<br/>10.0.0.1]
Google[☁️ Google DNS<br/>8.8.8.8]
PC -->|Куди 8.8.8.8?| Router
Router -->|Не моя мережа →<br/>gateway 10.0.0.1| ISP
ISP -->|...hop by hop...| Google
Note1[/"Роутер дивиться<br/>в таблицю маршрутів"/]
Router -.-> Note1
style PC fill:#3b82f6,color:#fff
style Router fill:#f59e0b,color:#000
style ISP fill:#22c55e,color:#fff
style Google fill:#ef4444,color:#fffРоутер — це "пошта"¶
Роутер отримує пакет і вирішує:
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
Типова конфігурація¶
flowchart TB
subgraph LAN ["LAN: 192.168.1.0/24"]
PC1[💻 PC1]
PC2[💻 PC2]
PC3[💻 PC3]
end
MikroTik[🔀 MikroTik<br/>LAN: 192.168.1.1<br/>WAN: 10.0.0.2]
ISP[🌐 Провайдер<br/>10.0.0.1<br/>← default gateway]
PC1 & PC2 & PC3 -->|ether2-4<br/>bridge| MikroTik
MikroTik -->|ether1| ISP
style MikroTik fill:#f59e0b,color:#000
style ISP fill:#22c55e,color:#fffТаблиця маршрутів:
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"
flowchart LR
subgraph Normal ["Нормальний режим"]
MK1[🔀 MikroTik]
Main1[✅ Main ISP<br/>distance=1]
Backup1[⏸️ Backup ISP<br/>distance=10<br/>standby]
MK1 -->|active| Main1
MK1 -.->|standby| Backup1
end
subgraph Failover ["Якщо Main ISP падає"]
MK2[🔀 MikroTik]
Main2[❌ Main ISP<br/>недоступний]
Backup2[✅ Backup ISP<br/>активний]
MK2 -.-x Main2
MK2 -->|active| Backup2
end
style Main1 fill:#22c55e,color:#fff
style Backup1 fill:#6b7280,color:#fff
style Main2 fill:#ef4444,color:#fff
style Backup2 fill:#22c55e,color:#fffCheck-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