Настройка WireGuard в MikroTik, VPN туннель между двумя роутерами

Mikrotik

Обсуждение тут

скопировано отсюда

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

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

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

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

После успешного использоваться протокола WireGuard на системах с ОС Linux, его поддержку начало содержать оборудование MikroTik. Современный протокол WireGuard, обладающий высокими производительными характеристиками стал идеальным решением для настройки VPN туннеля между роутерами MikroTik.

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

Настройка WireGuard интерфейса на сервере

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

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

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

Установить IP адрес для WireGuard сервера

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

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

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

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

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

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

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

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

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

  • Dst. Address – IP адрес или целая подсеть, к которой необходимо получить доступ за 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

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

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

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

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

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

Установить IP адрес для WireGuard клиента

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

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

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

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

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

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

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

  • Dst. Address – IP адрес или целая подсеть, к которой необходимо получить доступ за 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 такие как: RxTx и Last Handshake начнут заполняться значениями.

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

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

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

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

Многие хостинг провайдеры при аренде VPS сервера на ОС типа Linux (DebianUbuntuCentos) предлагают предустановку 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.

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

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

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

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

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

  • 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Gateway=Wireguard-Client это 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.255
/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=Wireguard-Client routing-table=\
To-WireGuard suppress-hw-offload=no

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

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

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

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

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

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

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

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

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

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

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

Создать WireGuard Peer

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

  • 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
  • Address – IP адрес для WireGuard клиента. Значение нужно выбрать из сети 10.180.5.0/24;
  • PrivateKey – ключ, который был сгенерирован при создании WireGuard клиента;
  • DNS – IP адрес MikroTik WireGuard интерфейса, может использоваться как DNS сервер;
  • PublicKey – этот ключ нужно скопировать с Public Key MikroTik WireGuard интерфейса;
  • AllowedIPs – разрешение WireGuard клиенту выход в интернет через VPN;
  • Endpoint – IP адрес и порт WireGuard сервера.

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

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