К началу данной инструкции предполагается, что у вас уже настроен VPN на Mikrotik. В данной статье разобрано, только как завернуть трафик с определенных ip адресов в vpn тоннель, на примере Wireguard.
Настройка
-
В настройках Wireguard, убедитесь, что у пира
allowed-address
содержит0.0.0.0/0
:1 2
/interface/wireguard/peers/ edit number=0 allowed-address
Проверьте и при необходимости укажите правильный номер пира (number=0)
-
Создаем отдельную таблицу маршрутизации
wg-mark
: Она будет использоваться для маршрутизации трафика через WireGuard.1 2
/routing/table/ add disabled=no fib name=wg-mark
-
Добавляем IP-адрес устройства в адрес-лист
full-wg
: Устройства из этого списка будут перенаправляться в VPN тоннель.1 2
/ip/firewall/address-list/ add list=full-wg address=192.168.10.124/32
Укажите IP-адрес нужного устройства (192.168.10.124 в примере)
-
Добавляем правило в Mangle для назначения метки маршрутизации wg-mark трафику с адресов из full-wg:
1 2
/ip/firewall/mangle/ add chain=prerouting src-address-list=full-wg action=mark-routing new-routing-mark=wg-mark passthrough=no
-
Создаем маршрут по умолчанию через интерфейс wg0 в таблице
wg-mark
:1 2
/ip/route/ add dst-address=0.0.0.0/0 gateway=wg0 distance=1 routing-table=wg-mark
-
Устанавливаем расстояние до маршрута через основной интернет больше, чем у WireGuard: Так для трафика в
wg-mark
приоритет будет выше именно через интерфейсwg0
, но для остального трафика ничего не изменится.1 2
/ip/dhcp-client/ set ether1 default-route-distance=2
Если у вас уже были какие-то дополнительные маршруты, то дистанции у вас могут оличаться. Проследите за правильным приоритетом.
-
Добавляем masquerade для трафика, выходящего через VPN:
1 2
/ip/firewall/nat/ add chain=srcnat out-interface=wg0 action=masquerade
-
Добавляем правило изменения MSS (Maximum Segment Size), чтобы избежать проблем с фрагментацией TCP-пакетов:
1 2
/ip/firewall/mangle/ add action=change-mss chain=forward new-mss=clamp-to-pmtu out-interface=wg0 protocol=tcp tcp-flags=syn