Инструкция по настройке VPN туннеля типа WireGuard между двумя роутерами MikroTik, Ubuntu и MikroTik, Windows и MikroTik. Для детального изучения параметров Wireguard добавлено описание по использованию. В manual также можно встретить примеры с картинками, конфигурацию Wireguard как сервера так и клиента и общие комментарии по настройке.

  1. Настройка WireGuard сервера на MikroTik
  2. Настройка WireGuard клиента на MikroTik
  3. Настройка Firewall для WireGuard подключения
  4. Задать вопрос по настройке MikroTik

  1. Настройка WireGuard клиента на MikroTik
  2. Создать интерфейс
  3. Настройка WireGuard Peer
  4. Настройка NAT
  5. Маркировка интернет трафика
  6. Статический маршрут интернет трафика
  7. Задать вопрос по настройке MikroTik

 

  1. Настройка Windows WireGuard клиента
  2. Создать WireGuard интерфейс
  3. Назначить IP адрес
  4. Скачать Windows клиент
  5. Создать WireGuard клиент
  6. Создать WireGuard Peer
  7. Обновить конфигурацию для WireGuard клиента
  8. Скопировать конфигурацию в WireGuard клиент
  9. Подключиться к WireGuard серверу
  10. Проверить работу интернета через WireGuard
  11. Задать вопрос по настройке MikroTik

WireGuard — это современный протокол для организации VPN, написанный с нуля, бесплатный и с открытыми исходниками. В отличие от OpenVPN или IPSec, он намного проще и легче. Это касается и скорости (пере)подключения, и производительности, и требований к ресурсам, и процесса настройки, и объёма кода. Недавно было объявлено, что WireGuard войдёт в состав будущих ядер Linux, а впоследствии попадёт и во все популярные дистрибутивы, что косвенно указывает на зрелость этого решения.

Что такое WireGuard

Для настройки Wireguard на роутере MikroTik потребуется RoutesOS v7 и выше.

Для WireGuard популярные две схемы настроек:

  • Соединение типа peer-to-peer. Когда инициатором(initial) может выступать любая из сторон участников WireGuard туннеля. Главное требование к такому типу подключения – наличие двух белых(статических) IP адресов со стороны роутеров MikroTik;
  • WireGuard-клиент подключается к WireGuard-серверу. Соответственно WireGuard-клиент считается инициатором подключения, WireGuard-сервер отвечающей(responder или passive) или слушающей стороной. Требование по наличию белого(статического) IP при этом снижается до WireGuard-сервера.

На момент написания инструкции используется RouterOS v 7.3.1

Настройка WireGuard MikroTik, серверная часть

В качестве WireGuard-клиента и WireGuard-сервер будет выступать роутеры MikroTik.

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

Настройка находится WireGuard→WireGuard

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

Создание интерфейса WireGuard сервера, генерацию ключей

  • Listen Port – порт, на котором будет работать WireGuard;
  • Private key – ключ который не будет задействован в настройках;
  • Public key – данный ключ будет нужно указать в настройках WireGuard-клиента.

Значение Private key заполнять не нужно, оно будет создано автоматически при создании WireGuard интерфейса.

Нужна настройка MikroTik WireGuard?

Настройка VPN WireGuard на оборудовании MikroTik:

  • Объединение распределенных локаций в общую сеть;
  • Подключение к VPS WireGuard серверу;
  • Настройка маршрутизации между WireGuard подключениями.

    Назначить IP адрес для WireGuard сервера

    IP адрес для WireGuard-сервера является технической настройкой и будет использоваться при настройке статической маршрутизации для обмена трафика между сетями WireGuard-сервера и WireGuard-клиента.

    Настройка находится IP→Address

    Назначить IP адрес для WireGuard сервера

    Настройка параметров клиента в WireGuard сервере

    WireGuard Peer содержит настройки для клиента VPN туннеля. Тут описываются ключи доступа, а также разрешающие правила доступов, для обмена трафика между подсетями.

    Настройка находится WireGuard→Peers

    Настройка параметров клиента в WireGuard сервере

    где

    • Public Key – клиентский Public Key, который сгенерировался при создании интерфейса;
    • Allowed Address – список разрешенных IP адресов(внутренних). Тут указан IP адрес интерфейса WireGuard-клиента и подсеть за ним;
    • Persistent Keepalive – при падении VPN туннеля, это время будет отводиться на его восстановление и будет считаться, что статус VPN все ещё UP;
    • Endpont и Endpont Port нужно оставить пустыми, это позволит не обращать внимание на аналогичные параметры со стороны клиента. WireGuard-сервер данными параметрами переводится в статус отвечающий(responder или passive) или слушающий стороны.

    Настройка маршрутизации для WireGuard сервера

    Настройка находится IP→Routes

    Настройка маршрутизации для WireGuard сервера

    • Dst. AddressIP адрес или целая подсеть, к которой необходимо получить доступ за WireGuard-клиентом;
    • Gateway – внутренний IP адрес WireGuard-клиента.
    /interface wireguard
    add listen-port=13231 mtu=1420 name=wireguard-MikroTik-Config.ukr-Server
    /interface wireguard peers
    add allowed-address=174.16.0.2/32,192.168.5.0/24 interface=\
    wireguard-MikroTik-Config.ukr-Server persistent-keepalive=10s public-key=\
    "SO4l7YTMMqssgHcWbcIjtuGHO+dz2wENnpoK6hXWEyE="
    /ip address
    add address=174.16.0.1/24 interface=wireguard-MikroTik-Config.ukr-Server \
    network=174.16.0.0
    /ip route
    add disabled=no distance=1 dst-address=192.168.5.0/24 gateway=174.16.0.2 \
    pref-src="" routing-table=main scope=30 suppress-hw-offload=no \
    target-scope=10

    Настройка WireGuard клиента на роутере MikroTik

    В качестве клиента WireGuard выступает роутер MikroTik с динамическим(серым) IP адресом. Первым делом нужно создать WireGuard интерфейс со стороны клиента.

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

    Настройка находится WireGuard→WireGuard

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

    Создание интерфейса WireGuard клиента, генерация ключей

    • Public Key – этот ключ указывается в параметре Public Key для WireGuard Peer со стороны WireGuard-сервера(его просто нужно скопировать).

    Назначить IP адрес для WireGuard клиента

    По аналогии с WireGuard-сервером, нужно создать технический IP адрес для WireGuard-клиента.

    Настройка находится IP→Address

    Назначить IP адрес для WireGuard клиента

    Настройка параметров сервера в WireGuard клиенте

    Настройка находится WireGuard→Peers

    Настройка параметров сервера в WireGuard клиенте

    где

    • Public Key – серверный Public Key, который сгенерировался при создании WireGuard интерфейса;
    • Endpoint – адрес WireGuard сервера;
    • Endpoint Port – внешний порт WireGuard сервера(13231).

    Настройка маршрутизации для WireGuard клиента

    Настройка находится IP→Routes

    Настройка маршрутизации для WireGuard клиента

    • Dst. AddressIP адрес или целая подсеть, к которой необходимо получить доступ за WireGuard-сервером;
    • Gateway – внутренний IP адрес WireGuard-сервера.
    /interface wireguard
    add listen-port=13231 mtu=1420 name=wireguard-MikroTik-Config.ukr-Client
    /interface wireguard peers
    add allowed-address=174.16.0.1/32,192.168.1.0/24 endpoint-address=\
    11.11.11.10 endpoint-port=13231 interface=\
    wireguard-MikroTik-Config.ukr-Client persistent-keepalive=10s public-key=\
    "UOOBJ9j5BjUPmP6qccSFT8hLBl+tYL3FoDdPXPa5Imw="
    /ip address
    add address=174.16.0.2/24 interface=wireguard-MikroTik-Config.ukr-Client \
    network=174.16.0.0
    /ip route
    add disabled=no distance=1 dst-address=192.168.1.0/24 gateway=174.16.0.1 \
    pref-src="" routing-table=main scope=30 suppress-hw-offload=no \
    target-scope=10

    При успешном установлении связи между WireGuard-клиентом и WireGuard-сервером, параметры WireGuard Peer такие как: Rx, Tx и Last Handshake начнут заполняться значениями.

    Успешная настройка WireGuard VPN в MikroTik

    Настройка Firewall для WireGuard

    Если по какой-то причине со стороны WireGuard-сервера не устанавливается соединение, нужно обратить внимание на наличие разрешающего правила со стороны Firewall.

    Настройка Firewall для WireGuard

    /ip firewall filter
    add action=accept chain=input dst-port=13231 in-interface-list=WAN protocol=\
    udp

    Настройка WireGuard клиента для Ubuntu или CentOS сервера

    Многие хостинг провайдеры при аренде VPS сервера на ОС типа Linux (Debian, Ubuntu, Centos) предлагают предустановку WireGuard-сервера. В одном из частных случаев было предоставлено сразу 5 готовых учётных записей для подключения WireGuard-клиентов. Конфигурация для WireGuard-клиента имеет вид:

    [Interface]
    Address = 10.180.5.5/32
    PrivateKey = xNSEL2aoULaYctgSUGQArQYAUgaMXVYhI9IbMrst6Es=
    DNS = 10.180.5.1
    
    [Peer]
    PublicKey = IhhMrJLeQOfnbaBFC34WEyP8qE1L2cbzjYgMFHuao3k=
    AllowedIPs = 0.0.0.0/0
    Endpoint = 5.61.49.243:51820

    И для настройки WireGuard-клиента это нужно применить со стороны роутера MikroTik.

    Если ваш хостинг провайдер VPS не предоставляет услугу предустановки WireGuard-сервера, можно воспользоваться проверенной инструкцией по его установке и настройке  

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

    Настройка находится WireGuard→WireGuard

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

    • Private Key – этот ключ нужно скопироваться с параметра PrivateKey, который указан со стороны хостинг провайдера WireGuard-сервера.

    Настройка параметров peer в WireGuard клиенте

    Настройка находится WireGuard→Peers

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

    • Public Key -этот ключ нужно скопироваться с параметра PublicKey, который указан со стороны хостинг провайдера WireGuard-сервера;
    • Endpont – внешний IP адресWireGuard-сервера, параметр Endpoint;
    • Endpont Port – порт для подключения, указан в параметре Endpoint после IP адреса(5.61.49.243:51820);
    • Allowed Address – тут следует указать 0.0.0.0/0, без дополнительных ограничений по видимости внутренних сетей для WireGuard-клиента;
    • Persistent Keepalive – при падении VPN туннеля, это время будет отводиться на его восстановление и будет считаться, что статус VPN все ещё UP.

    Добавить WireGuard интерфейс в список WAN

    Настройка находится Interfaces→Interface List

    Добавить WireGuard интерфейс в список WAN

    Настроить Masquerade для WireGuard

    В данном варианте следуем просто проконтролировать, что присутствует правило для Out interface list ранее обновленного списка WAN типа Masquerade. Если его нет, то нужно создать новое и в качестве Out interface указать ранее созданный WireGuard интерфейс.

    Настройка находится IP→Firewall→NAT

    Настроить masquerade для WireGuard клиента

    Создать таблицу маршрутизации для WireGuard

    Настройка находится Routing→Tables

    Создать таблицу маршрутизации для WireGuard

    Назначить IP адрес WireGuard клиенту

    Настройка находится IP→Addresses

    Настройка WireGuard, назначить IP адрес для клиента

    где Address=10.180.5.5/24 это значение Address с конфигурации, сформированной на Wireguard сервере.

    Промаркировать таблицу для выхода в интернет

    С помощью маркировки(Mangle) можно промаркировать таблицу маршрутизации, в которую попадёт весь трафик, кроме трафика предназначенного локальной сети. По сути это и будет интернет трафик.

    Настройка находится IP→Firewall→Mangle

    Настройка Mangle для WireGuard

    Настройка Mangle для WireGuard трафика

    Добавить статический маршрут для интернета через WireGuard

    Промаркированная ранее таблица маршрутизации будет направляться в WireGuard туннель, что позволит выходить в интернет через WireGuard-сервер, который установлен на VPS Ubuntu(Debian) или CentOS.

    Настройка находится IP→Routes

    Настройка WireGuard, добавить статический маршрут к Ubuntu

    где Gateway=10.180.5.1 это предполагаемый IP адрес WireGuard сервера, это значение отсутствует в клиентской конфигурации.

    /interface wireguard
    add listen-port=51820 mtu=1420 name=Wireguard-Client
    
    /interface wireguard peers
    add allowed-address=0.0.0.0/0 endpoint-address=5.61.49.243 endpoint-port=\
    51820 interface=Wireguard-Client persistent-keepalive=10s public-key=\
    "IhhMrJLeQOfnbaBFC34WEyP8qE1L2cbzjYgMFHuao3k="
    
    /ip address add interface=Wireguard-Client address=10.180.5.5 netmask=255.255.255.0
    /interface list member
    add comment=defconf interface=Wireguard-Client list=WAN
    
    /routing table
    add disabled=no fib name=To-WireGuard
    
    /ip firewall mangle
    add action=mark-routing chain=prerouting dst-address=!192.168.88.0/24 \
    new-routing-mark=To-WireGuard src-address=192.168.88.0/24
    
    /ip route
    add disabled=no dst-address=0.0.0.0/0 gateway=10.180.5.1 routing-table=\
    To-WireGuard suppress-hw-offload=no

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

    Роутер MikroTik может выступать WireGuard-сервером для Windows, Android или IOS WireGuard-клиентов. Настройка будет содержать несколько ручных задач и в этом основной недостаток WireGuard в MikroTik – работает он быстро, но требует знаний.

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

    Настройка находится WireGuard→WireGuard

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

    Назначить IP адрес для WireGuard интерфейса

    Настройка находится IP→Addresses

    Настройка IP адреса для WireGuard интерфейса

    Скачать Windows WireGuard клиент

    WireGuard-for-PC-Windows

    На официальном сайте WireGuard нужно выбрать соответствующий инсталлятор VPN клиента и в режиме “Далее” запустить и установить его.

    Создать новый WireGuard клиент

    Добавить новый VPN WireGuard в Windows

    Предварительная настройка WireGuard в Windows

    При создании такие параметры как PublicKey(Публичный ключ) и PrivateKey будут сгенерированы автоматически, при этом:

    • PublicKey – нужно скопировать и указать в параметре Public Key для WireGuard Peer со стороны MikroTik;
    • PrivateKey – оставить без изменений, это ключ будет указан только со стороны WireGuard-клиента.

    Создать WireGuard Peer

    Настройка находится WireGuard→WireGuard→Peers

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

    • Public Key – тут нужно вставить PublicKey(Публичный ключ), который был сгенерирован со стороны Windows клиента;
    • Allowed Address – тут следует указать 0.0.0.0/0, без ограничений для WireGuard-клиента, а также для выхода в интернет;
    • Persistent Keepalive – время обновление статуса VPN туннеля.
    /interface wireguard
    add listen-port=13231 mtu=1420 name=Wireguard-MikroTik-Config.ukr-Server
    
    /interface wireguard peers
    add allowed-address=0.0.0.0/0 interface=Wireguard-MikroTik-Config.ukr-Server \
    persistent-keepalive=10s public-key=\
    "yiUzZPlwnduiB4saKzy5aNDQr6/eACMK9fKblYyxmlM="
    
    /ip address
    add address=10.180.5.1/24 interface=Wireguard-MikroTik-Config.ukr-Server \
    network=10.180.5.0

    Обновить конфигурацию для WireGuard клиента

    Ниже будет представлен фрагмент конфигурации, которую нужно “собрать” со стороны WireGuard клиента.

    [Interface]
    Address = 10.180.5.2/32
    PrivateKey = OOVyS9ivVHy0fOtepXJeQBPdw6Glt1gYyR39Ll2sxFM=
    DNS = 10.180.5.1
    
    [Peer]
    PublicKey = G0HVPyUjgMtg5HAQ2YZ5wBY04ZXnEqBUywsnisfcZgc=
    AllowedIPs = 0.0.0.0/0
    Endpoint = 46.XX.YY.MMM:13231
    • AddressIP адрес для WireGuard клиента. Значение нужно выбрать из сети 10.180.5.0/24;
    • PrivateKey – ключ, который был сгенерирован при создании WireGuard клиента;
    • DNSIP адрес MikroTik WireGuard интерфейса, может использоваться как DNS сервер;
    • PublicKey – этот ключ нужно скопировать с Public Key MikroTik WireGuard интерфейса;
    • AllowedIPs – разрешение WireGuard клиенту выход в интернет через VPN;
    • EndpointIP адрес и порт WireGuard сервера.

    Скопировать конфигурацию в WireGuard клиент

    Скопировать настройки WireGuard в Windows клиент

    Подключиться к WireGuard серверу

    Подключить к WireGuard серверу в Windows

    Проверить работу интернета через WireGuard

    Проверка работы WireGuard сервера в Windows

    Проверка работы интернета через WireGuard сервер в Windows

    Есть вопросы или предложения по настройке WireGuard в MikroTik? Активно предлагай свой вариант настройки! Оставить комментарий