WireGuard Split Tunnel: Разделяем трафик на роутерах MikroTik

В условиях современного информационного общества требования к безопасности и управляемости сетевого трафика постоянно растут. Это актуально как для корпоративных офисов, где необходимо защищать критически важные данные, так и для домашних сетей, где важны скорость и стабильность интернет-соединения. Роутеры MikroTik с последней версией RouterOS 7.18 становятся всё более популярным выбором для реализации этих задач благодаря своей надежности, гибкости настройки и широким возможностям управления трафиком.

Одним из современных и эффективных решений является использование протокола WireGuard – легковесного VPN-решения, которое обеспечивает высокую скорость работы, простоту настройки и надежное шифрование. В статье мы рассмотрим, как на роутерах MikroTik с RouterOS 7.18 настроить режим split tunnel для WireGuard, чтобы обеспечить безопасный доступ к определенным ресурсам (например, YouTube) через защищенный туннель, при этом оставляя остальной трафик направленным напрямую через обычное соединение.

Split tunnel (разделённый туннель) – это технология, при которой только часть сетевого трафика, например, трафик, направленный на корпоративные сервисы или определенные интернет-ресурсы, маршрутизируется через VPN-туннель, в то время как остальной трафик идет напрямую через обычное интернет-соединение. Такой подход позволяет:

  • Повысить производительность, так как нагрузка на шифрование и VPN-сервер ограничивается только критическим трафиком;
  • Сэкономить ресурсы, особенно в офисной среде, где большое количество сотрудников работает с корпоративными данными;
  • Снизить задержки (latency), что особенно важно для интерактивных приложений, таких как видеоконференции, онлайн-игры и удаленный доступ по SSH;
  • Обеспечить гибкость и безопасность, позволяя избирательно направлять через туннель только конфиденциальные или чувствительные данные.

В этой статье мы подробно рассмотрим настройку WireGuard в режиме split tunnel на роутерах MikroTik с RouterOS 7.18, приведем пример маршрутизации трафика для YouTube и обсудим три способа решения проблем с низкой скоростью: корректировка MTU, изменение MSS и отключение FastTrack.

Настройка WireGuard Split Tunnel на MikroTik (RouterOS 7.18)

Для реализации режима split tunnel на роутере MikroTik с RouterOS 7.18 необходимо обеспечить возможность разделения трафика на два потока: один — для защищённого VPN-соединения, другой — для прямого доступа к интернету. Такой подход позволяет направлять через VPN только критически важный или конфиденциальный трафик (например, доступ к корпоративным ресурсам или определённым сервисам, таким как YouTube), в то время как весь остальной трафик проходит напрямую через основной канал. Это значительно снижает нагрузку на VPN-сервер, улучшает производительность и минимизирует задержки для интерактивных приложений.

Чтобы настроить split tunnel, необходимо выполнить следующие ключевые шаги:

  • Создать адрес-листы для определения сервисов, трафик которых должен идти через VPN.
  • Создать отдельные таблицы маршрутизации для этих групп трафика.
  • Настроить правила mangle, которые помечают пакеты, адресованные в заданные подсети, и направляют их по нужным таблицам маршрутизации.
  • При необходимости, добавить правила NAT для корректного преобразования исходящего трафика.

Настройка WireGuard подключения на MikroTik

Первый этап split tunnel — создание базового VPN-соединения через WireGuard. Это включает в себя настройку WireGuard-интерфейса на MikroTik, назначение IP-адресов, добавление пира (VPN-сервера) с параметрами (публичный ключ, предобменный ключ, AllowedIPs, Endpoint, PersistentKeepalive) и проверку работы туннеля (пинг с низкой задержкой, обновление статистики rx/tx). Кроме того, на этом этапе настраивается NAT (masquerade) для корректного преобразования исходящего трафика и возврата ответов от удалённых серверов.

Создание интерфейса WireGuard

Создайте новый интерфейс WireGuard с примерными значениями. Замените EXAMPLE_PRIVATE_KEY на ваш приватный ключ, а EXAMPLE_MTU на выбранное значение MTU (например, 1500 или оптимальное значение для вашей сети).

/interface wireguard add name=wgclient_example mtu=EXAMPLE_MTU private-key="EXAMPLE_PRIVATE_KEY"

Назначение IP-адресов

Назначьте IP-адреса для интерфейса (замените на примеры):

/ip address add address=10.200.100.2/24 interface=wgclient_example

Где 10.200.100.2/24 — IP адрес Вашего пира

Настройка DNS

Убедитесь, что глобальные настройки DNS корректны:

/ip dns set servers=1.1.1.1,2606:4700:4700::1111 allow-remote-requests=yes

Добавление пира (VPN-сервера)

Добавьте пира, используя примерные данные. Замените EXAMPLE_PUBLIC_KEY, EXAMPLE_PRESHARED_KEY, и EXAMPLE_ENDPOINT на соответствующие значения вашего сервера WireGuard:

/interface wireguard peers add interface=wgclient_example public-key="EXAMPLE_PUBLIC_KEY" preshared-key="EXAMPLE_PRESHARED_KEY" allowed-address=0.0.0.0/0,::/0 endpoint-address=EXAMPLE_ENDPOINT endpoint-port=WG_PORT persistent-keepalive=25

Примечание: Использование AllowedIPs = 0.0.0.0/0, ::/0 означает, что по умолчанию весь трафик будет проходить через туннель.

Настройка split tunnel (пример для YouTube)

Чтобы направлять через VPN только трафик для YouTube, выполните следующие шаги:

Создание адрес‑листа YouTube

/ip firewall address-list 
add list=YouTube address=74.125.0.0/16 
add list=YouTube address=173.194.0.0/16 
add list=YouTube address=209.85.128.0/17 
add list=YouTube address=216.239.32.0/19

Создание пользовательской таблицы маршрутизации для YouTube

/routing table add name=to_YT fib=yes

Иногда возникает проблема с синтаксисом команды «fib = yes», поэтому Вы можете добавить таблицу вручную в WinBox в разделе Roating -> Tables 

Добавление дефолтного маршрута для таблицы to_YT

/ip route add dst-address=0.0.0.0/0 gateway=wgclient_example routing-table=to_YT

Правило mangle для пометки трафика YouTube

/ip firewall mangle add chain=prerouting dst-address-list=YouTube action=mark-routing new-routing-mark=to_YT

Настройка NAT для помеченного трафика YouTube

Чтобы обеспечить корректное преобразование исходящего трафика, направляемого через VPN (для пакетов с меткой to_YT), добавьте правило masquerade, которое действует только на трафик с этой меткой:

/ip firewall nat add chain=srcnat out-interface=wgclient_example routing-mark=to_YT action=masquerade

Это правило гарантирует, что только пакеты, помеченные для маршрутизации по таблице to_YT, будут проходить NAT через интерфейс WireGuard, что обеспечивает корректное возвращение ответов от удалённых серверов.

После этого трафик, направленный к адресам YouTube, будет использовать таблицу маршрутизации to_YT и, соответственно, проходить через интерфейс wgclient_example (VPN), а весь остальной трафик будет идти напрямую через основной канал.

Аналогичным способ можно направить трафик на любой сервис и IP адрес. Вы можете воспользоваться сервисами https://bgpview.io/ и https://bgp.he.net/, чтобы определить подсети, принадлежащие тому или иному сервису.

Решения проблем с низкой скоростью Wireguard на Mikrotik

При использовании VPN через WireGuard часто наблюдаются проблемы с задержками при установлении соединений и сниженной интерактивной скоростью (например, при подключении по SSH или установлении SSL/TLS-сессий), даже если пропускная способность для больших файлов высока. Такие проблемы могут быть вызваны рядом факторов, среди которых особенно важную роль играют параметры MTU и MSS, а также особенности обработки трафика FastTrack. Ниже подробно описаны эти аспекты и приведены рекомендации по их настройке.

Хочу заметить, что столкнувшись с проблемой низкой скорости WireGuard на MikroTik, решением проблемы оказалось отключение FastTrack для VPN-трафика (описано в пункте 3), а корректировка и поиск оптимального значения MTU, как зачастую рекомендуется, ни к чему не привёл.

Корректировка MTU и расчёт оптимального значения

MTU (Maximum Transmission Unit) – это максимальный размер пакета (в байтах), который может быть передан по сети без фрагментации. При использовании VPN добавляются дополнительные заголовки туннеля, поэтому оптимальное значение MTU для VPN-интерфейса должно быть ниже стандартного значения для Ethernet (обычно 1500 байт). Если MTU завышен, пакеты могут фрагментироваться или вовсе отбрасываться, что приводит к задержкам и снижению производительности.

Как рассчитать оптимальный MTU

  1. Проверьте стандартное значение MTU для вашего канала.
    Стандартный MTU для Ethernet обычно равен 1500 байт.

  2. Учтите дополнительные заголовки.
    При туннелировании через VPN добавляются дополнительные заголовки (обычно это несколько десятков байт). Таким образом, если вы используете туннель, оптимальное значение MTU может снизиться до 1400 или даже 1300 байт.

  3. Используйте команду ping с DF-флагом для определения максимального размера пакета без фрагментации.
    Например, на Windows команда выглядит так:

    ping -f -l <размер> example.com

    где параметр -l задаёт размер данных, а DF (Don’t Fragment) запрещает фрагментацию. Обратите внимание, что к указанному размеру добавляются 28 байт заголовков (20 байт IP и 8 байт ICMP).

    Пример:
    Если команда

    ping -f -l 1180 example.com

    возвращает сообщение «Требуется фрагментация пакета, но установлен запрещающий флаг», это означает, что 1180+28=1208 байт превышает допустимый размер. Попробуйте уменьшить размер, например:

    ping -f -l 1160 example.com

    Если пинг проходит, значит максимальный размер данных (без фрагментации) равен 1160 байтам, а общий размер пакета – 1160+28=1188 байт.

    Таким образом, оптимальное значение MTU для VPN-интерфейса можно установить на уровень, немного ниже полученного общего размера. Например, если вы получили, что 1188 байт проходит без фрагментации, попробуйте установить MTU на 1180 байт или даже чуть ниже, чтобы оставить запас.

  4. Настройка MTU на MikroTik:

    Если оптимальное значение для вашего канала, полученное тестами, равно 1320 байт, настройте интерфейс WireGuard следующим образом:

    /interface wireguard set wgclient_example mtu=1320

    При этом убедитесь, что новое значение MTU согласовано как на стороне клиента, так и на стороне сервера.

Важно: Некорректно подобранный MTU может приводить к фрагментации, что особенно негативно сказывается на интерактивных приложениях (SSH, HTTPS), где задержки в установлении соединения могут быть ощутимыми.

Корректировка MSS

MSS (Maximum Segment Size) – это максимальный размер полезной нагрузки TCP-пакета, который передается без фрагментации. Если MSS настроен слишком высоко, пакеты могут фрагментироваться, что приводит к задержкам на этапе установления соединения.

Решение:
Добавьте правило mangle, которое изменяет MSS для TCP-пакетов с SYN-флагом, используя значение, основанное на MTU. Например, для интерфейса wgclient_example:

/ip firewall mangle add chain=forward protocol=tcp tcp-flags=syn action=change-mss new-mss=clamp-to-pmtu out-interface=wgclient_example

Это правило автоматически устанавливает MSS, равный MTU минус размер заголовков, что помогает избежать фрагментации TCP-сегментов.

Отключение FastTrack

FastTrack – это механизм, предназначенный для ускорения обработки соединений в MikroTik, позволяющий обходить часть логики обработки пакетов. Однако FastTrack может оказывать негативное влияние на установление интерактивных соединений (например, SSH или SSL), поскольку он может не учитывать особенности обработки мелких пакетов, необходимых для установления соединения.

Решение:
Для проверки влияния FastTrack временно отключите его. Найдите правило FastTrack (обычно оно имеет действие fasttrack-connection) и отключите его командой:

/ip firewall filter disable [find action=fasttrack-connection]

После отключения FastTrack проверьте время установления соединения (например, время подключения по SSH). Если скорость подключения после этого нормализуется, то проблема действительно была связана с FastTrack.

Теперь нам необходимо включить FastTrack, но для трафика, который не проходит через VPN-тунель:

Создать правило mangle для маркировки VPN-соединений

Добавьте правило в цепочке prerouting, чтобы помечать все входящие соединения через VPN-интерфейс (например, wgclient_example):

/ip firewall mangle add chain=prerouting in-interface=wgclient_example action=mark-connection new-connection-mark=VPN_No_FastTrack passthrough=yes comment="Mark VPN connections to exclude from FastTrack"

Это правило присвоит соединениям, входящим через интерфейс VPN, метку VPN_No_FastTrack.

Настроить FastTrack для исключения VPN-соединений

Теперь нам нужно убедиться, что правило FastTrack применяется только к соединениям, у которых нет метки VPN_No_FastTrack. Для этого необходимо добавить новое правило FastTrack, которое применяет его только к соединениям, не имеющим метку VPN_No_FastTrack:

/ip firewall filter add chain=forward connection-state=established,related action=fasttrack-connection connection-mark=!VPN_No_FastTrack comment="FastTrack for non-VPN connections"

Это правило FastTrack будет обрабатывать только те соединения, у которых connection mark не равен VPN_No_FastTrack.

ВАЖНО! В WinBox в разделе Filter Rules для Firewall необходимо перенести новое правило FastTrack на место стандартного для корректной работы:

Настройка FastTrack в Mikrotick для решения проблемы низкой скорости Wireguard

Итог:

  1. Маркировка VPN-соединений:
    Помечаем все соединения, входящие через VPN-интерфейс, чтобы исключить их из FastTrack.
  2. Новая FastTrack-правило:
    Создаем FastTrack-правило, которое действует только на соединения без метки VPN_No_FastTrack.

После применения этих правил VPN-трафик не будет проходить через FastTrack, а остальной трафик – продолжит использовать ускоренную обработку FastTrack. Это должно помочь устранить задержки при установлении интерактивных соединений через VPN.

Заключение

Настройка WireGuard в режиме split tunnel на роутерах MikroTik с RouterOS 7.18 предоставляет гибкие возможности управления трафиком. Такой подход позволяет направлять через VPN только критичный для безопасности трафик (например, доступ к YouTube или корпоративным ресурсам), в то время как остальной трафик проходит напрямую, обеспечивая высокую производительность и минимальные задержки.

Преимущества решения:

  • Гибкость: можно избирательно направлять трафик через защищенный туннель.
  • Повышенная производительность: снижается нагрузка на VPN, поскольку только часть трафика шифруется.
  • Оптимизация безопасности: критические данные передаются через VPN, а обычный интернет-трафик не подвергается излишнему шифрованию.

В статье приведены практические примеры настройки интерфейсов, создания адрес-листов, таблиц маршрутизации и правил mangle, а также способы устранения проблем с низкой скоростью через корректировку MTU, MSS и отключение FastTrack. Такой подход подходит как для офисных, так и для домашних сетей, обеспечивая баланс между безопасностью и производительностью.

Если возникнут дополнительные вопросы или потребуется помощь с дальнейшей оптимизацией – обращайтесь!

Оцените статью