Инструкция по настройке VPN туннеля типа WireGuard между двумя роутерами MikroTik, Ubuntu и MikroTik, Windows и MikroTik. Для детального изучения параметров Wireguard добавлено описание по использованию. В manual также можно встретить примеры с картинками, конфигурацию Wireguard как сервера так и клиента и общие комментарии по настройке.
WireGuard — это современный протокол для организации VPN, написанный с нуля, бесплатный и с открытыми исходниками. В отличие от OpenVPN или IPSec, он намного проще и легче. Это касается и скорости (пере)подключения, и производительности, и требований к ресурсам, и процесса настройки, и объёма кода. Недавно было объявлено, что WireGuard войдёт в состав будущих ядер Linux, а впоследствии попадёт и во все популярные дистрибутивы, что косвенно указывает на зрелость этого решения. Для WireGuard популярные две схемы настроек: На момент написания инструкции используется RouterOS v 7.16.2 После успешного использоваться протокола WireGuard на системах с ОС Linux, его поддержку начало содержать оборудование MikroTik. Современный протокол WireGuard, обладающий высокими производительными характеристиками стал идеальным решением для настройки VPN туннеля между роутерами MikroTik. В качестве WireGuard клиента и WireGuard сервера будут выступать роутеры MikroTik. Настройка находится WireGuard→WireGuard Значение Private key заполнять не нужно, оно будет создано автоматически при создании WireGuard интерфейса. IP адрес для WireGuard сервера является технической настройкой и будет использоваться при настройке статической маршрутизации для обмена трафика между сетями WireGuard сервера и WireGuard клиента. Настройка находится IP→Address WireGuard Peer содержит настройки для клиента VPN туннеля. Тут описываются ключи доступа, а также разрешающие правила доступов, для обмена трафика между подсетями. Настройка находится WireGuard→Peers Для обмена трафика между двумя подсетями роутеров MikroTik будет использоваться статическая маршрутизация, с помощью которой соответствующий трафик будет направляться через WireGuard VPN туннель. Настройка находится IP→Routes В качестве клиента WireGuard выступает роутер MikroTik с динамическим(серым) IP адресом. Первым делом нужно создать WireGuard интерфейс со стороны клиента. Настройка находится WireGuard→WireGuard По аналогии с WireGuard сервером, нужно создать технический IP адрес для WireGuard клиента. Настройка находится IP→Address Настройка находится WireGuard→Peers Настройка находится IP→Routes При успешном установлении связи между WireGuard клиентом и WireGuard сервером, параметры WireGuard Peer такие как: Rx, Tx и Last Handshake начнут заполняться значениями. Если по какой-то причине со стороны WireGuard сервера не устанавливается соединение, нужно обратить внимание на наличие разрешающего правила со стороны Firewall. Многие хостинг провайдеры при аренде VPS сервера на ОС типа Linux (Debian, Ubuntu, Centos) предлагают предустановку WireGuard сервера. В одном из частных случаев было предоставлено сразу 5 готовых учётных записей для подключения WireGuard клиентов. Конфигурация для WireGuard клиента имеет вид: И для настройки WireGuard клиента это нужно применить со стороны роутера MikroTik. Настройка находится WireGuard→WireGuard Настройка находится WireGuard→Peers Настройка находится Interfaces→Interface List В данном варианте следуем просто проконтролировать, что присутствует правило для Out interface list ранее обновленного списка WAN типа Masquerade. Если его нет, то нужно создать новое и в качестве Out interface указать ранее созданный WireGuard интерфейс. Настройка находится IP→Firewall→NAT Настройка находится Routing→Tables Настройка находится IP→Addresses С помощью маркировки(Mangle) можно промаркировать таблицу маршрутизации, в которую попадёт весь трафик, кроме трафика предназначенного локальной сети. По сути это и будет интернет трафик. Настройка находится IP→Firewall→Mangle Промаркированная ранее таблица маршрутизации будет направляться в WireGuard туннель, что позволит выходить в интернет через WireGuard сервер, который установлен на VPS Ubuntu(Debian) или CentOS. Настройка находится IP→Routes Роутер MikroTik может выступать WireGuard сервером для Windows, Android или IOS WireGuard клиентов. Настройка будет содержать несколько ручных задач и в этом основной недостаток WireGuard в MikroTik — работает он быстро, но требует знаний. Настройка находится WireGuard→WireGuard
Настройка WireGuard сервера на роутере MikroTik
Настройка WireGuard интерфейса на сервере
Установить IP адрес для WireGuard сервера
Настройка параметров клиента в WireGuard сервере
Настройка маршрутизации 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 интерфейса на клиенте
Установить IP адрес для WireGuard клиента
Настройка параметров сервера в WireGuard клиенте
Настройка маршрутизации для 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
Настройка Firewall для WireGuard
/ip firewall filter
add action=accept chain=input dst-port=13231 in-interface-list=WAN protocol=\
udp
Настройка MikroTik WireGuard клиента для Ubuntu или CentOS сервера
[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 клиента
Настройка параметров WireGuard peer на клиенте
Добавить WireGuard интерфейс в список WAN
Настроить Masquerade для WireGuard
Создать таблицу маршрутизации для WireGuard
Назначить IP адрес WireGuard клиенту
Промаркировать таблицу для выхода в интернет
Добавить статический маршрут для интернета через 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 клиента
Создать 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 серверу
Проверить работу интернета через WireGuard