скопировано отсюда
Краткое описание: инструкция по настройке VPN туннеля типа WireGuard между двумя роутерами MikroTik. Описание параметров WireGuard.
WireGuard — это современный протокол для организации VPN, написанный с нуля, бесплатный и с открытыми исходниками. В отличие от OpenVPN или IPSec, он намного проще и легче. Это касается и скорости (пере)подключения, и производительности, и требований к ресурсам, и процесса настройки, и объёма кода. Недавно было объявлено, что WireGuard войдёт в состав будущих ядер Linux, а впоследствии попадёт и во все популярные дистрибутивы, что косвенно указывает на зрелость этого решения.
Для настройки 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
- 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 сервера
Настройка находится 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
Настройка WireGuard клиента на роутере MikroTik
В качестве клиента 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 такие как: Rx, Tx и Last Handshake начнут заполняться значениями.
Настройка Firewall для WireGuard
Если по какой-то причине со стороны WireGuard-сервера не устанавливается соединение, нужно обратить внимание на наличие разрешающего правила со стороны Firewall.
/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
- Private Key – этот ключ нужно скопироваться с параметра PrivateKey, который указан со стороны хостинг провайдера WireGuard-сервера.
Настройка параметров peer в WireGuard клиенте
Настройка находится 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
Создать таблицу маршрутизации для WireGuard
Настройка находится Routing→Tables
Промаркировать таблицу для выхода в интернет
С помощью маркировки(Mangle) можно промаркировать таблицу маршрутизации, в которую попадёт весь трафик, кроме трафика предназначенного локальной сети. По сути это и будет интернет трафик.
Настройка находится IP→Firewall→Mangle
Добавить статический маршрут для интернета через WireGuard
Промаркированная ранее таблица маршрутизации будет направляться в WireGuard туннель, что позволит выходить в интернет через WireGuard-сервер, который установлен на VPS Ubuntu(Debian) или CentOS.
Настройка находится IP→Firewall→Routes
/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=" /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-сервером для Windows, Android или 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 сервера.