Итак, интерфейс WireGuard создан, peer добавлен, публичные ключи обменяны. Теперь самое важное — объяснить роутеру, какой трафик направлять в туннель. Без этого WireGuard останется красивой, но бесполезной виртуальной трубой.
Простая маршрутизация: когда весь роутер идёт через VPN
Самый прямолинейный сценарий: вы хотите, чтобы весь интернет-трафик самого MikroTik (или всех клиентов за ним) уходил в WireGuard. Для этого достаточно одного маршрута:
/ip route add dst-address=0.0.0.0/0 gateway=wireguard1
После этой команды роутер попытается отправить все пакеты с неизвестным адресатом через интерфейс wireguard1.
Важное условие: у интерфейса должен быть назначен IP-адрес (например, 10.0.0.1/24). Если вы его ещё не добавили, сделайте:
/ip address add address=10.0.0.1/24 interface=wireguard1
Если вы не хотите гнать весь трафик, а нужен доступ только к одной удалённой сети (скажем, офисная LAN 192.168.2.0/24), маршрут будет точным:
/ip route add dst-address=192.168.2.0/24 gateway=wireguard1
В этом случае весь трафик к устройствам из офиса пойдёт через туннель, а в интернет — напрямую через провайдера.
Policy Based Routing (PBR): точечное управление трафиком
А что, если вы хотите, чтобы только определённые устройства или даже отдельные приложения использовали WireGuard, а остальные ходили напрямую? Для этого нужна политика маршрутизации — PBR.
Задача: пусть только смартфон жены (IP 192.168.1.105) всегда ходит в интернет через туннель, а все остальные домашние устройства — нет.
Шаг 1. Создаём отдельную таблицу маршрутизации (назовём её vpn_table):
/routing table add name=vpn_table fib
Шаг 2. Маркируем трафик нужного клиента.
/ip firewall mangle add chain=prerouting src-address=192.168.1.105 action=mark-routing new-routing-mark=vpn_table
Шаг 3. Создаём маршрут для этой таблицы.
/ip route add dst-address=0.0.0.0/0 gateway=wireguard1 routing-table=vpn_table
Готово. Теперь смартфон жены всегда будет выходить в интернет через VPN, а остальные устройства — нет. При необходимости можно маркировать не только по IP, но и по портам, протоколам или интерфейсам.
PBR с несколькими клиентами
Если нужно направить в туннель несколько IP-адресов (например, 192.168.1.105 и 192.168.1.106), проще создать один список адресов:
/ip firewall address-list add list=vpn_users address=192.168.1.105
/ip firewall address-list add list=vpn_users address=192.168.1.106
/ip firewall mangle add chain=prerouting src-address-list=vpn_users action=mark-routing new-routing-mark=vpn_table
Когда нужен обычный маршрут, а когда PBR? Сравнительная таблица
| Сценарий | Решение | Сложность |
| Весь роутер (все его клиенты) — через WG |
Простой маршрут 0.0.0.0/0 |
Низкая |
| Только подсеть 192.168.2.0/24 через WG, остальное напрямую |
Точный маршрут /24 |
Низкая |
| Только один IP (или несколько) через WG |
PBR + маркировка в mangle |
Средняя |
| Разные конечные сети для разных клиентов |
PBR + несколько таблиц и маршрутов |
Высокая |
Частая ошибка: забыли про ответный трафик
Если вы настроили маршрут на клиенте (например, телефоне) в AllowedIPs = 0.0.0.0/0, то весь трафик телефона пойдёт через MikroTik. Но для того, чтобы ответы от серверов в интернете вернулись обратно через туннель, на роутере обязательно должен быть маршрут по умолчанию через wireguard1 или соответствующая политика PBR. Без этого телефоны будут отправлять запросы, но не получать ответы.
Диагностика маршрутизации
После добавления маршрутов проверьте их командой:
/ip route print gateway=wireguard1
Вы должны увидеть свои записи. Если маршрут есть, но трафик всё равно не идёт, проверьте фаервол — раздел 7 рассказывает, как правильно открыть forward между интерфейсами.
В следующей части разберём скрипты для автоматической настройки — чтобы не вводить все команды вручную при каждом новом клиенте.