884 слов
4 минуты
Клиент Wireguard на роутере Mikrotik
Оригинал статьи

Данная статья была позаимствована с сайта Кибер Лис. Текст был отредактирован и отформатирован с помощью нейросети Grok v3 Ссылка на оригинал от 17.08.2023

Данная инструкция подробно описывает настройку WireGuard клиента на Mikrotik RouterOS для полного и частичного туннелирования трафика через WireGuard VPN. В примере используется RouterOS 7.5 с заводскими настройками и сторонним сервером WireGuard.

Подготовка к настройке WireGuard: Обновление RouterOS#

WireGuard поддерживается в Mikrotik начиная с RouterOS версии 7. Если у вас установлена RouterOS 6, необходимо обновить её до последней стабильной версии, а затем до RouterOS 7. Если RouterOS 7 уже установлена, переходите к следующему разделу.

  1. Подключитесь к роутеру Mikrotik через WinBox или веб-интерфейс (IP по умолчанию: 192.168.88.1). Для стабильности подключения используйте MAC-адрес.

  2. В меню выберите SystemPackages.

  3. Нажмите Check For Updates для проверки доступных обновлений.

  4. Выберите Channel: stable и нажмите Download&Install.

  5. Дождитесь завершения установки и перезагрузки роутера.

  6. Для перехода на RouterOS 7 выберите Channel: upgrade и нажмите Download&Install.

  7. Дождитесь завершения установки и перезагрузки.

  8. Перейдите в SystemRouterBOARD и нажмите Upgrade.

  9. Перезагрузите роутер.

Теперь ваша система обновлена до RouterOS 7, и вы можете приступить к настройке WireGuard.

Настройка WireGuard VPN клиента#

Инструкция охватывает настройку WireGuard клиента для полного туннелирования (раздел 2.4.А) и выборочного туннелирования (раздел 2.4.Б) с использованием маркировки пакетов через Firewall-Mangle, Firewall-Address Lists и маршрутов в IP-Routes. В примере используется VPS с DWG, но инструкция применима и для других серверов WireGuard.

2.1. Отключение Fasttrack#

Fasttrack снижает нагрузку на процессор, но мешает обработке VPN-трафика. Его необходимо отключить.

  1. Перейдите в IPFirewall → вкладка Filter Rules.

  2. Отключите правило Fasttrack.

2.2. Создание интерфейса WireGuard и конфигурации Peer#

  1. В меню выберите WireGuard и нажмите +.

  2. Укажите MTU (по умолчанию 1420), Listen Port и Private Key из конфигурации сервера WireGuard. Нажмите OK.

    Интерфейс WireGuard создан.

  3. Перейдите во вкладку Peers и нажмите +.

  4. Выберите созданный интерфейс, заполните Public Key, Endpoint, Endpoint Port, Preshared Key из конфигурации сервера. Укажите Allowed Address: 0.0.0.0/0 для доступа ко всем подсетям.

  5. Добавьте внутренний IP клиента:

    • Перейдите в IPAddresses+.
    • Укажите Address (IP клиента из конфигурации), Network (то же, но последняя цифра 0), Interface (WireGuard).

2.3. Создание таблицы маршрутизации#

Для маршрутов WireGuard создайте пользовательскую таблицу маршрутизации:

  1. Перейдите в RoutingTables+.

  2. Укажите Name: wg_mark, включите опцию FIB. Нажмите OK.

2.4. Настройка туннелирования#

2.4.А. Полное туннелирование#

Для полного туннелирования весь трафик устройств в локальной сети направляется через VPN.

  1. Перейдите в IPFirewallAddress Lists+.

  2. Укажите Name: full_wg, Address: 192.168.88.0/24 (локальная сеть роутера). Нажмите OK.

  3. Создайте правило маркировки:

    • Перейдите в IPFirewallMangle+.
    • Укажите:
      • Chain: prerouting
      • Src Address List: full_wg
      • Action: mark routing
      • New Routing Mark: wg_mark
    • Нажмите OK.

2.4.Б. Выборочное туннелирование#

Для выборочного туннелирования укажите сайты или IP, которые будут использовать VPN.

  1. Перейдите в IPFirewallAddress Lists+.

  2. Укажите Name: rkn_wg, Address: имя сайта (например, 2ip.ru) или его IP. Нажмите OK.

  3. Для дополнительных сайтов используйте тот же Name: rkn_wg, но указывайте другие адреса.

  4. Создайте правило маркировки:

    • Перейдите в IPFirewallMangle+.
    • Укажите:
      • Chain: prerouting
      • Dst Address List: rkn_wg
      • Action: mark routing
      • New Routing Mark: wg_mark
    • Нажмите OK.

Примечания:

  • Проверьте VPN на 2ip.ru — должен отобразиться IP сервера. На whoer.net отобразится ваш реальный IP.
  • Если сайт не открывается, добавьте два адреса: с www (www.домен.com) и без (домен.com).
  • Если Mikrotik некорректно определяет IP сайтов, измените DNS в IPDNS (например, на 8.8.8.8 или DNS сервера WireHole).

2.5. Создание маршрута для WireGuard#

  1. Перейдите в IPRoutes+.

  2. Укажите:

    • Gateway: wireguard1 (имя интерфейса WireGuard)
    • Distance: 1
    • Routing Table: wg_mark
  3. Нажмите OK.

  4. Понизьте приоритет DHCP-клиента:

    • Перейдите в IPDHCP Client.
    • Выберите запись, измените Add Default Route на Special Classless, установите Default Route Distance: 2 (вкладка Advanced).

2.6. Настройка NAT для WireGuard#

  1. Перейдите в IPFirewallNat+.

  2. Укажите:

    • Chain: srcnat
    • Out. Interface: wireguard1
    • Action: masquerade
  3. Нажмите OK.

Настройка завершена. Проверьте соединение на 2ip.ru или whoer.net.

Смена DNS провайдера#

  1. Перейдите в IPDHCP ServerNetworks.

  2. Выберите запись, измените DNS Servers:

    • Для голого WireGuard: 8.8.8.8, 8.8.4.4
    • Для WireHole: 10.2.0.100 (или 10.6.0.1)
    • Для DNS Proxy: IP вашего DNS-сервера

Исправление MTU для WireGuard#

Если сайты загружаются медленно или не открываются, настройте MTU:

  1. Откройте New Terminal.

  2. Выполните команду:

    /ip firewall mangle
    add action=change-mss chain=forward new-mss=clamp-to-pmtu out-interface=wireguard1 protocol=tcp tcp-flags=syn
  3. Перезагрузите роутер через SystemReboot или командой /system reboot.

Правило появится в IPFirewallMangle:

VPN-туннель в локальную сеть#

Настройте доступ к локальной сети Mikrotik через WireGuard из внешней сети.

Для голого WireGuard#

  1. В файле wg0.conf на VPS:

    • Удалите локальный интерфейс (например, -o eth0) из правил PostUp и PostDown.

    • В разделе Peer для Mikrotik добавьте локальную сеть (например, 192.168.88.0/24) в AllowedIPs.

  2. Сохраните изменения и перезапустите WireGuard.

Для WireHole#

  1. Отредактируйте server.conf в папке wirehole/wireguard/templates:

    • Измените PostUp и PostDown аналогично голому WireGuard.
    • Добавьте конфигурацию Peer для Mikrotik в конец файла (скопируйте из wirehole/wireguard/peer_mikrotik).
    • Удалите папку wirehole/wireguard/peer_mikrotik.

  2. Удалите Peer Mikrotik из docker-compose.yml.

  3. Перезапустите Docker: cd wirehole && docker-compose up.

Рекомендация: В docker-compose.yml указывайте имена Peer (например, PEERS=DELL,OP8T,XXXXXXX,mikrotik).

Общие настройки#

  1. В InterfacesInterface Lists добавьте интерфейс wireguard1 в список LAN для корректной работы правила Firewall defconf: drop all not coming from LAN.

Отмена внесённых изменений#

Если необходимо отменить настройки WireGuard, выполните следующие шаги:

  1. Удаление интерфейса WireGuard:

    • Перейдите в WireGuard, выберите интерфейс (например, wireguard1) и нажмите - для удаления.
    • Удалите связанные конфигурации в Peers.
  2. Удаление маршрутов и таблиц:

    • В IPRoutes удалите маршрут с Routing Table: wg_mark.
    • В RoutingTables удалите таблицу wg_mark.
  3. Удаление правил Mangle и Address Lists:

    • В IPFirewallMangle удалите правила с New Routing Mark: wg_mark.
    • В IPFirewallAddress Lists удалите списки full_wg и rkn_wg.
  4. Удаление NAT-правила:

    • В IPFirewallNat удалите правило с Out. Interface: wireguard1 и Action: masquerade.
  5. Восстановление Fasttrack:

    • В IPFirewallFilter Rules включите правило Fasttrack.
  6. Восстановление DHCP-клиента:

    • В IPDHCP Client измените Add Default Route на Yes и Default Route Distance на 1.
  7. Удаление MTU-правила (если применялось):

    • В IPFirewallMangle удалите правило с action=change-mss и out-interface=wireguard1.
  8. Перезагрузка роутера:

    • Выполните SystemReboot или команду /system reboot.

После выполнения этих шагов все изменения, связанные с WireGuard, будут отменены, и роутер вернётся к исходным настройкам.

Клиент Wireguard на роутере Mikrotik
https://guilliman.ru/posts/mikrotik_wg/
Автор
Herman Guilliman
Опубликовано
2025-05-05
Лицензия
CC BY-NC-SA 4.0