mikrotik-wiki.ru
Главная
Загрузка...

Routes на MikroTik — таблица маршрутизации и gateway

RouterOS 7.xIP7 мин330 мар. 2026 г.
TelegramVK

Маршрутизация IP на MikroTik — таблица маршрутов и gateway

Маршрутизация — основа работы любого роутера. Когда пакет приходит на MikroTik, система смотрит таблицу маршрутов и определяет, куда его отправить: в локальную сеть, на шлюз провайдера или на VPN-туннель. Понимание таблицы маршрутов, типов маршрутов, distance и check-gateway — обязательное знание для администратора MikroTik. В этой статье разберём теорию маршрутизации и практические команды. Детальная настройка статических маршрутов и failover описана в отдельных статьях.

Описание

Как работает маршрутизация

Когда RouterOS получает IP-пакет, происходит поиск в таблице маршрутов по принципу longest prefix match — выбирается маршрут с наиболее длинной маской, совпадающей с адресом назначения. Если пакет идёт к 10.0.1.50:

  1. Маршрут 10.0.1.0/24 через ether2 — совпадение, маска /24
  2. Маршрут 10.0.0.0/16 через VPN — совпадение, маска /16
  3. Маршрут 0.0.0.0/0 через провайдера — совпадение, маска /0

Выбирается первый вариант (longest prefix match — /24 длиннее /16 и /0).

Типы маршрутов

В таблице маршрутов каждый маршрут имеет флаг, указывающий на его происхождение:

ФлагТипОписание
CConnectedАвтоматически создаётся при назначении IP на интерфейс
SStaticДобавлен вручную администратором
DDynamicСоздан динамически (DHCP-client, PPPoE и т.д.)
oOSPFПолучен через протокол OSPF
bBGPПолучен через протокол BGP
rRIPПолучен через протокол RIP

Маршруты connected (C) появляются автоматически при назначении IP-адреса интерфейсу. Если на bridge-LAN назначен 192.168.88.1/24, то маршрут 192.168.88.0/24 через bridge-LAN появится автоматически.

Default Route (маршрут по умолчанию)

Маршрут по умолчанию (0.0.0.0/0) — "ловушка" для всех пакетов, которые не совпали с более конкретными маршрутами. Обычно это шлюз провайдера:

[admin@MikroTik] >
/ip/route/add dst-address=0.0.0.0/0 gateway=192.168.1.1 comment="ISP Gateway"

Если интернет приходит через DHCP от провайдера, default route создаётся автоматически DHCP-клиентом (флаг D).

Distance (административная дистанция)

Distance определяет приоритет маршрута, когда к одному dst-address ведут несколько маршрутов. Чем меньше значение — тем выше приоритет:

Тип маршрутаDistance по умолчанию
Connected0
Static1
OSPF intra-area110
RIP120
BGP (eBGP)20
BGP (iBGP)200

Пример: два маршрута к 0.0.0.0/0 — через основного провайдера (distance=1) и резервного (distance=2). При доступности обоих используется основной. Если основной недоступен — трафик переключается на резервный. Это основа failover.

Check-gateway

Параметр check-gateway определяет, как RouterOS проверяет доступность шлюза:

ЗначениеМеханизмКогда использовать
pingICMP ping к gateway каждые 10 секундУниверсальный вариант
arpARP-запрос к gatewayКогда gateway не отвечает на ping
noneПроверка не выполняетсяДля статических маршрутов, которые всегда должны быть активны

Если check-gateway=ping и шлюз не отвечает на 3 последовательных ping — маршрут деактивируется, и трафик переходит на следующий по distance.

Специальные типы маршрутов

RouterOS поддерживает несколько специальных типов маршрутов для управления трафиком:

ТипОписаниеПрименение
blackholeПакет молча отбрасываетсяЗащита от routing loops, BGP blackholing
unreachableОтправителю возвращается ICMP Destination UnreachableЯвный запрет доступа к сети
prohibitОтправителю возвращается ICMP Administratively ProhibitedАдминистративный запрет

Настройка

Просмотр таблицы маршрутов

[admin@MikroTik] >
# Полная таблица маршрутов
/ip/route/print

# Компактный вид
/ip/route/print brief

# Подробная информация
/ip/route/print detail

# Только активные маршруты
/ip/route/print where active=yes

# Только статические маршруты
/ip/route/print where static=yes

Добавление статических маршрутов

Базовый статический маршрут:

[admin@MikroTik] >
# Маршрут к удалённой подсети через шлюз
/ip/route/add dst-address=10.10.0.0/24 gateway=192.168.88.2 \
  comment="Филиал через VPN"

# Default route с check-gateway
/ip/route/add dst-address=0.0.0.0/0 gateway=203.0.113.1 \
  distance=1 check-gateway=ping comment="ISP1 Main"

Маршрут через интерфейс (point-to-point):

[admin@MikroTik] >
/ip/route/add dst-address=10.20.0.0/24 gateway=wireguard1 \
  comment="Удалённый офис через WireGuard"

Настройка Failover (базовый)

Два провайдера с автоматическим переключением:

[admin@MikroTik] >
# Основной провайдер — distance=1 (приоритет выше)
/ip/route/add dst-address=0.0.0.0/0 gateway=203.0.113.1 \
  distance=1 check-gateway=ping comment="ISP1 Main"

# Резервный провайдер — distance=2 (переключится при падении ISP1)
/ip/route/add dst-address=0.0.0.0/0 gateway=198.51.100.1 \
  distance=2 check-gateway=ping comment="ISP2 Backup"

Когда шлюз ISP1 перестаёт отвечать на ping, маршрут с distance=1 деактивируется, и трафик автоматически уходит через ISP2.

Preferred Source (pref-src)

Параметр pref-src указывает, какой source IP использовать для пакетов, исходящих от самого роутера (не транзитных):

[admin@MikroTik] >
# Пакеты от роутера к ISP1 идут с адреса 203.0.113.5
/ip/route/add dst-address=0.0.0.0/0 gateway=203.0.113.1 \
  pref-src=203.0.113.5 distance=1 comment="ISP1 с указанным source"

Это важно для корректной работы DNS, NTP и других сервисов роутера при наличии нескольких WAN-интерфейсов. Без pref-src роутер может использовать неправильный source IP, и ответные пакеты не дойдут.

Специальные маршруты

[admin@MikroTik] >
# Blackhole — пакеты к этой сети молча отбрасываются
/ip/route/add dst-address=192.168.99.0/24 type=blackhole \
  comment="Blackhole: сеть выведена из эксплуатации"

# Unreachable — отправителю возвращается ICMP Unreachable
/ip/route/add dst-address=10.99.0.0/16 type=unreachable \
  comment="Сеть не существует"

# Prohibit — ICMP Administratively Prohibited
/ip/route/add dst-address=172.16.0.0/12 type=prohibit \
  comment="Доступ к этим сетям запрещён"

Routing Mark и Policy-Based Routing

Routing mark позволяет направлять определённый трафик через альтернативный маршрут. Это основа policy-based routing (PBR):

[admin@MikroTik] >
# Создаём routing table
/routing/table/add name=ISP2 fib

# Маршрут по умолчанию для таблицы ISP2
/ip/route/add dst-address=0.0.0.0/0 gateway=198.51.100.1 \
  routing-table=ISP2 comment="Default route для ISP2"

# В Mangle маркируем трафик от подсети 192.168.20.0/24
/ip/firewall/mangle/add chain=prerouting \
  src-address=192.168.20.0/24 \
  action=mark-routing new-routing-mark=ISP2 \
  passthrough=no comment="Подсеть 20 через ISP2"

Теперь весь трафик от подсети 192.168.20.0/24 будет уходить через ISP2, а остальной — через ISP1 по основной таблице маршрутов.

VRF (Virtual Routing and Forwarding)

VRF позволяет создать несколько изолированных таблиц маршрутизации на одном роутере. Каждый VRF имеет собственный набор маршрутов и интерфейсов:

[admin@MikroTik] >
# Создание VRF
/ip/vrf/add name=VRF-CLIENTS interfaces=bridge-CLIENTS

# Маршруты в VRF добавляются через routing-table
/ip/route/add dst-address=0.0.0.0/0 gateway=10.0.0.1 \
  routing-table=VRF-CLIENTS comment="Default для клиентов"

VRF — продвинутая тема, применяемая в провайдерских сетях и сложных enterprise-инсталляциях. Для большинства задач достаточно routing mark.

Проверка

Проверка активных маршрутов

[admin@MikroTik] >
# Какие маршруты сейчас активны
/ip/route/print where active=yes

# Проверка конкретного маршрута — через какой gateway пойдёт пакет
/ip/route/check 8.8.8.8

# Показать все маршруты к определённой сети
/ip/route/print where dst-address=0.0.0.0/0

Диагностика проблем маршрутизации

[admin@MikroTik] >
# Трассировка маршрута до хоста
/tool/traceroute address=8.8.8.8

# Ping с указанием source — проверка pref-src
/ping 8.8.8.8 src-address=203.0.113.5 count=5

# Проверка routing table для policy-based routing
/ip/route/print where routing-table=ISP2

# Мониторинг маршрутов в реальном времени
/ip/route/print interval=5s

Проверка работы check-gateway

[admin@MikroTik] >
# Если маршрут неактивен — check-gateway обнаружил недоступность шлюза
/ip/route/print where active=no

# Проверка доступности шлюза вручную
/ping 203.0.113.1 count=5

Проверка connected маршрутов

[admin@MikroTik] >
# Connected маршруты должны совпадать с назначенными IP
/ip/address/print
/ip/route/print where connect=yes

Типичные ошибки

  1. Нет default route — после настройки "с нуля" администратор забывает добавить маршрут 0.0.0.0/0. Локальная сеть работает, но интернета нет. Проверяйте: /ip/route/print where dst-address=0.0.0.0/0

  2. Два default route с одинаковым distance — если оба маршрута активны с distance=1, RouterOS будет использовать ECMP (Equal Cost Multi-Path), распределяя трафик между двумя шлюзами. Это вызывает проблемы с NAT и stateful firewall — сессия может уйти через один провайдер, а вернуться через другой. Для failover используйте разные distance (1 и 2)

  3. check-gateway=none при failover — без check-gateway маршрут останется активным, даже если шлюз недоступен. Трафик будет уходить "в никуда". Всегда используйте check-gateway=ping для маршрутов failover

  4. Неправильный pref-src — если pref-src указывает на адрес, не существующий на роутере, маршрут может некорректно работать. Убедитесь, что IP-адрес в pref-src действительно назначен на один из интерфейсов

  5. Конфликт connected и static маршрутов — если добавить статический маршрут к подсети, которая уже есть как connected, получится два маршрута. Connected имеет distance=0 и всегда побеждает, а статический будет проигнорирован

  6. Забыли routing table для PBR — добавили mangle-правило с mark-routing, но не создали routing table и маршрут в ней. Маркированный трафик не найдёт маршрут и будет отброшен. Всегда создавайте routing table: /routing/table/add name=ISP2 fib

  7. Routing loop — два роутера указывают друг на друга как gateway для одной и той же сети. Пакет будет прыгать между ними, пока не истечёт TTL. Используйте traceroute для диагностики и blackhole-маршруты для защиты

  8. DHCP-клиент перезаписывает default route — DHCP-клиент от провайдера автоматически добавляет default route с distance=1. Если вы добавили свой static default route тоже с distance=1, они начнут конфликтовать. Установите add-default-route=no в DHCP-клиенте и управляйте маршрутом вручную, либо поставьте distance на DHCP-клиенте: /ip/dhcp-client/set [find] default-route-distance=2

[admin@MikroTik] >
/ip/route/add dst-address=0.0.0.0/0 gateway=192.168.1.1 comment="ISP Gateway"
# Полная таблица маршрутов
/ip/route/print

# Компактный вид
/ip/route/print brief

# Подробная информация
/ip/route/print detail

# Только активные маршруты
/ip/route/print where active=yes

# Только статические маршруты
/ip/route/print where static=yes
# Маршрут к удалённой подсети через шлюз
/ip/route/add dst-address=10.10.0.0/24 gateway=192.168.88.2 \
  comment="Филиал через VPN"

# Default route с check-gateway
/ip/route/add dst-address=0.0.0.0/0 gateway=203.0.113.1 \
  distance=1 check-gateway=ping comment="ISP1 Main"
/ip/route/add dst-address=10.20.0.0/24 gateway=wireguard1 \
  comment="Удалённый офис через WireGuard"
# Основной провайдер — distance=1 (приоритет выше)
/ip/route/add dst-address=0.0.0.0/0 gateway=203.0.113.1 \
  distance=1 check-gateway=ping comment="ISP1 Main"

# Резервный провайдер — distance=2 (переключится при падении ISP1)
/ip/route/add dst-address=0.0.0.0/0 gateway=198.51.100.1 \
  distance=2 check-gateway=ping comment="ISP2 Backup"
# Пакеты от роутера к ISP1 идут с адреса 203.0.113.5
/ip/route/add dst-address=0.0.0.0/0 gateway=203.0.113.1 \
  pref-src=203.0.113.5 distance=1 comment="ISP1 с указанным source"
# Blackhole — пакеты к этой сети молча отбрасываются
/ip/route/add dst-address=192.168.99.0/24 type=blackhole \
  comment="Blackhole: сеть выведена из эксплуатации"

# Unreachable — отправителю возвращается ICMP Unreachable
/ip/route/add dst-address=10.99.0.0/16 type=unreachable \
  comment="Сеть не существует"

# Prohibit — ICMP Administratively Prohibited
/ip/route/add dst-address=172.16.0.0/12 type=prohibit \
  comment="Доступ к этим сетям запрещён"
# Создаём routing table
/routing/table/add name=ISP2 fib

# Маршрут по умолчанию для таблицы ISP2
/ip/route/add dst-address=0.0.0.0/0 gateway=198.51.100.1 \
  routing-table=ISP2 comment="Default route для ISP2"

# В Mangle маркируем трафик от подсети 192.168.20.0/24
/ip/firewall/mangle/add chain=prerouting \
  src-address=192.168.20.0/24 \
  action=mark-routing new-routing-mark=ISP2 \
  passthrough=no comment="Подсеть 20 через ISP2"
# Создание VRF
/ip/vrf/add name=VRF-CLIENTS interfaces=bridge-CLIENTS

# Маршруты в VRF добавляются через routing-table
/ip/route/add dst-address=0.0.0.0/0 gateway=10.0.0.1 \
  routing-table=VRF-CLIENTS comment="Default для клиентов"
# Какие маршруты сейчас активны
/ip/route/print where active=yes

# Проверка конкретного маршрута — через какой gateway пойдёт пакет
/ip/route/check 8.8.8.8

# Показать все маршруты к определённой сети
/ip/route/print where dst-address=0.0.0.0/0
# Трассировка маршрута до хоста
/tool/traceroute address=8.8.8.8

# Ping с указанием source — проверка pref-src
/ping 8.8.8.8 src-address=203.0.113.5 count=5

# Проверка routing table для policy-based routing
/ip/route/print where routing-table=ISP2

# Мониторинг маршрутов в реальном времени
/ip/route/print interval=5s
# Если маршрут неактивен — check-gateway обнаружил недоступность шлюза
/ip/route/print where active=no

# Проверка доступности шлюза вручную
/ping 203.0.113.1 count=5
# Connected маршруты должны совпадать с назначенными IP
/ip/address/print
/ip/route/print where connect=yes
IP / Routes на MikroTik — таблица маршрутизации и gateway