Уже много информации в Интернете написано про WireGuard, но большинство инструкций для его настройки перегружены лишней информацией. Поэтому решил написать несколько статей в стиле «1, 2, 3».
В этой статье настроим WireGuard соединение между компьютером с Windows и роутером Mikrotik.
На микротике требуется версия ROS 7.x. Для Windows скачиваем клиент WireGuard с официального сайта.
WireGuard не имеет в своей терминологии выделенного сервера. Вместо этого есть пиры — это каждый участник сети. Хотя бы один пир должен иметь белый IP-адрес. При этом все пиры равноправны и настраиваются совершенно одинаково.
Предположим, что микротик имеет белый IP-адрес 203.0.113.10
и соединён с локальной сетью 192.168.1.0/24
. Задача организовать доступ к микротику (и локальной сети) с удалённого компьютера.
Создаём WG-интерфейс на микротике. Для этого выбираем одноимённый пункт меню и нажимаем на плюсик. В появившемся окне вводим номер порта (по-умолчанию 13231) и сразу нажимаем кнопку «Apply«. Автоматически будут сгенерированы приватный и публичный ключи:
Публичный ключ запишем, он нам понадобится. После этого нажимаем OK.
Теперь назначим IP-адрес интерфейсу. Можно выбрать любой из диапазона для локальных сетей. Например, 10.100.100.1/24
. Делается это как обычно в IP — Addresses:
Теперь аналогичную операцию делаем в клиенте под Windows. Нажимаем кнопку «Добавить тоннель» — «Добавить пустой тоннель«. Появится окно с текстовым файлом конфигурации. Здесь вводим название тоннеля. И тоже копируем публичный ключ:
Добавляем сюда IP-адрес из выбранной подсети:
Address = 10.100.100.2/24
Теперь необходимо, чтобы наши пиры узнали друг о друге. Для этого на микротике в окне WireGuard переключаемся на вкладку Peers и добавляем новый пир:
Здесь нас интересуют следующие поля:
Public Key
— сюда вставляем ранее скопированный открытый ключ с компьютера.Endpoint
иEndpoint Port
— IP-адрес и порт подключения к пиру. Если пир не имеет белого IP, то просто не заполняем.Allowed Address
— дословно «разрешённые адреса», но я не согласен с таким названием. Правильнее было бы назвать «маршрутизируемые адреса». Здесь необходимо указать IP или их список, который нужно завернуть в тоннель. В самом минимальном случае здесь указывается IP адрес пира (туннельный) или его подсеть. Со стороны микротика нам не нужно заворачивать никакой трафик в туннель, поэтому так и поступим.
В результате у нас должно получиться примерно так:
Переходим к настройке в Windows. Там нам нужно добавить в текстовую конфигурацию ещё один раздел — [Peer]
и дописать необходимые параметры:
PublicKey
— соответственно открытый ключ из микротика.Endpoint
— точка подключения к пиру-микротику. Так как он у нас имеет белый IP-адрес, то указываем его и порт.AllowedIPs
— здесь возможны несколько вариантов:10.100.100.1
— так мы разрешим удалённый доступ только к самому микротику.10.100.100.0/24
— доступ ко всем пирам в сети WireGuard (если их у нас больше двух).10.100.100.0/24
,192.168.1.0/24
— доступ к микротику, а также к устройствам в локальной сети (наш вариант).0.0.0.0/0
— а так мы завернём в WG-туннель весь трафик с компьютера.
PersistentKeepalive
— данный параметр позволяет поддерживать соединение открытым путём периодической отправки пустого пакета. Указывается время в секундах.
В итоге файл конфигурации будет выглядеть примерно следующим образом:
[Interface]
PrivateKey = qIFxFE916Bl7g3wQf3qvcd+jfoGd3V528ybq/1vqk0s=
Address = 10.100.100.2/24
[Peer]
PublicKey = fYzxjqDWyZOHkZnjQy+fP7fK0YoDxSDkbGOqIGl8aUU=
AllowedIPs = 10.100.100.0/24, 192.168.1.0/24
Endpoint = 203.0.113.10:13231
PersistentKeepalive = 25
Сохраняем изменения. Окно клиента теперь содержит информацию об интерфейсе и о пире:
Пробуем подключиться. Не радуйтесь, если увидите статус «Подключен». Это ещё ничего не значит. Пробуем пропинговать удалённый пир (конечно не забываем, что в фаерволе должно быть разрешение ICMP пинга). Если всё нормально, то пакеты должны успешно вернуться. При этом в окне клиента можно наблюдать передачу/получение трафика:
Ну и для того, чтобы можно было получать доступ к локальной сети — необходимо добавить SRC-NAT правило. Например, такое:
Всё, мы получили безопасный и удобный удалённый доступ к своей локальной сети из любой точки мира.
Обратите внимание, что необходим обмен только публичными ключами. При этом утечка этих ключей не страшна. Главное хранить в секрете только приватные ключи. В этом плане технология очень похожа на PGP.
Краткое описание: инструкция по настройке VPN туннеля типа WireGuard между двумя роутерами MikroTik. Описание параметров WireGuard.
WireGuard между роутерами MikroTik
- Настройка WireGuard сервера на MikroTik
- Создать интерфейс
- Назначить IP адрес
- Настройка WireGuard Peer
- Настройка статической маршрутизации к клиенту
- Настройка WireGuard клиента на MikroTik
- Создать интерфейс
- Назначить IP адрес
- Настройка WireGuard Peer
- Настройка статической маршрутизации к серверу
- Настройка Firewall для WireGuard подключения
- Задать вопрос по настройке MikroTik
WireGuard между MikroTik и Windows
- Настройка Windows WireGuard клиента
- Создать WireGuard интерфейс
- Назначить IP адрес
- Скачать Windows клиент
- Создать WireGuard клиент
- Создать WireGuard Peer
- Обновить конфигурацию для WireGuard клиента
- Скопировать конфигурацию в WireGuard клиент
- Подключиться к WireGuard серверу
- Проверить работу интернета через WireGuard
- Задать вопрос по настройке MikroTik
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 интерфейса.
Нужна настройка MikroTik WireGuard?
Настройка VPN WireGuard на оборудовании MikroTik:
- Объединение распределенных локаций в общую сеть;
- Подключение к VPS WireGuard серверу;
- Настройка маршрутизации между 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.
Создание интерфейса 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
Назначить IP адрес WireGuard клиенту
Настройка находится IP→Addresses
где Address=10.180.5.5/24 это значение Address с конфигурации, сформированной на Wireguard сервере.
Промаркировать таблицу для выхода в интернет
С помощью маркировки(Mangle) можно промаркировать таблицу маршрутизации, в которую попадёт весь трафик, кроме трафика предназначенного локальной сети. По сути это и будет интернет трафик.
Настройка находится IP→Firewall→Mangle
Добавить статический маршрут для интернета через WireGuard
Промаркированная ранее таблица маршрутизации будет направляться в WireGuard туннель, что позволит выходить в интернет через WireGuard-сервер, который установлен на VPS Ubuntu(Debian) или CentOS.
Настройка находится IP→Firewall→Routes
где 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
Назначить 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
Есть вопросы или предложения по настройке WireGuard в MikroTik? Активно предлагай свой вариант настройки! Оставить комментарий →
VPN (Virtual Private Network) is one of the most popular services in MikroTik RouterOS. A lot of VPN services (IPsec, EoIP, OpenVPN, PPTP, L2TP, IPIP etc.) are available in MikroTik RouterOS but in RouterOS7, a new VPN service named WireGuard has been introduced which is extremely simple yet first, secure and modern VPN. WireGuard uses cryptography to make it secure.
In RouterOS7, WireGuard can be used either Client-Server (Road Warrior) VPN tunnel or site to site VPN tunnel. Using Client-Server WireGuard VPN tunnel, a Windows, Mac, Linux, iOS or Android user can be connected to his remote network and can access servers and other network devices as if he/she has be seated in that network. On the other hand, using site to site WireGuard VPN tunnel, two remote offices can always be connected across public network and can comminate with each other over this VPN tunnel.
In my previous article, I discussed how to configure MikroTik RouterOS 7 first time with step-by-step guideline. In this article, I will discuss how to configure Road Warrior WireGuard VPN tunnel in MikroTik RouterOS7 and then I will also discuss how to configure WireGuard Client in Window 10/11.
WireGuard Configuration in MikroTik RouterOS 7 (Road Warrior)
To configure Client-Server WireGuard VPN tunnel with Windows client, we will follow the following network diagram.
In the above diagram, WireGuard VPN Server is configured in the office network. So, WireGuard client configured in Windows or Linux or Android device can be connected to the office network creating a secure WireGuard VPN tunnel and can access remote servers and other network devices securely.
We will now configure such an office network where WireGuard VPN Server will be configured in a MikroTik RouterOS 7 and a Windows client will connect to this WireGuard VPN Server to access remote servers and other network devices.
WireGuard VPN Configuration in MikroTik RouterOS 7
WireGuard package is enabled by default in MikroTik RouterOS7. So, we don’t need to install it manually. We just need to setup WireGuard service. To configure WireGuard VPN for a Client-Server (Road Warrior) tunnel, follow the following steps.
- Login to MikroTik RouterOS using Winbox with full access user permission.
- From menu item, click on WireGuard. WireGuard window will appear.
- Click on PLUS SIGN(+) to create a new WireGuard interface. New Interface window will appear.
- Put an interface name in Name input field or you can keep the default name wireguard1.
- In Listen Port input field, put 443 because we want to use 443 port which is usually not blocked. In MikroTik RouterOS7, the default WireGuard Listen Port is 13231. WireGuard works on UDP protocol because UDP is faster. On the other hand, TCP packets follow over TCP VPN tunnel makes performance issue. So, TCP is not used in WireGuard VPN tunnel.
- Click Apply button. Public Key and Private Key will be generated as soon as you click the Apply button. The Public Key will be required when WireGuard client will be configured.
- Click OK button.
WireGuard VPN service is now enabled in MikroTik RouterOS7. Now we will assign IP address on newly created WireGuard interface. To assign IP address on WireGuard Interface, issue the following steps.
- From Winbox, go to IP > Addresses menu item. Address List window will appear.
- Click PLUS SIGN (+). New Address window will appear.
- In Address input field, put an IP address which you want. According to the network diagram, I am assigning 10.10.105.1/24. WireGuard clients will get IP address from this IP block.
- From Interface dropdown menu, choose the created WireGuard interface (wireguard1).
- Click Apply and OK button.
WireGuard VPN Server configuration in RouterOS7 has been completed. We will now download and install WireGuard Client in Windows 10/11.
Downloading and Installing WireGuard in Windows Operating System
As we are going to connect Windows OS to WireGuard VPN Server, we need to download and install WireGuard’s Windows application from WireGuard’s website. So, go to WireGuard installation page and download the installer for Windows Operating System. At the time of writing this article, the installation page of WireGuard looks like the following image.
Installing WireGuard Windows installer is as simple as installing other Windows applications. So, download the Windows installer and make a double click on it. The WireGuard installer will do the rest of the work for you. After installing WireGuard in your Windows Operating System, it will start WireGuard service and open a new WireGuard window like the following image where it will ask to provide configuration either manually or importing any configuration file.
We will configure WireGuard tunnel here manually because MikroTik RouterOS does not provide any configuration file. So, from this window, click on Add Tunnel dropdown menu and then choose Add empty tunnel… option. Create new tunnel window will appear where we will provide all the options required to create WireGuard Tunnel.
In Create new tunnel window, put a name (example: wg1) for the tunnel in Name input field and then click Save button. You will also find generated Public Key and Private Key in this window. Among these two keys, the Public Key will be required to configure peer between WireGuard Server and Client.
Creating Peer Between WireGurad Server and Client
To create a VPN tunnel between Windows client and the RouterOS WireGuard Server, we need to configure WireGuard Peer. So, at first, we will configure peer in MikroTik RouterOS and then we will configure peer in WireGuard Windows client.
To configure WireGuard peer in MikroTik RouterOS, follow the following steps.
- From WireGuard window, click on Peers tab and then click on PLUS SIGN (+). New WireGuard Peer window will appear.
- In New WireGuard Peer window, choose WireGuard interface (wiregurad1) from Interface dropdown menu.
- In Public Key input field, put the public key generated by the Windows client (with whom it will make peer).
- In Allowed Address field, put the IP address (10.10.105.3/32) that will be assigned to the WireGuard Client.
- Click Apply and OK button.
Peer configuration in MikroTik RouterOS has been completed. Now we will configure WireGuard Peer in Windows Client.
- Open WireGuard client in Windows OS and select the WireGuard interface that was created before and then click on Edit button.
- In Interface configuration, add two more properties (Address = 10.10.105.3/32 and DNS = 8.8.8.8). These two values will be assigned the WireGuard virtual interface. Change the IP values according to your network configuration.
- Now add a new option named [Peer] and add these properties (PublicKey = y9uah2vvBg9nkBhovSA72Ji3C3LmMxoUab0dwhUwAy0= AllowedIPs = 0.0.0.0/0 Endpoint = 103.177.246.6:443 PersistentKeepalive = 10). Here, the Public Key is the Public Key of the RouterOS WireGuard, AllowedIPs will be the IPs those can access this client and by default it is 0.0.0.0/0 that means it can access any IP, the Endpoint property is very important and it will be the IP of the MikroTik RouterOS where WireGuard Server is enabled and the Port number, the PersistentKeepalive property keeps the tunnel active by checking the status of the tunnel every assigned time (seconds).
- Click the Save button to save the configuration.
Peer configuration between the WireGuard Server and Client has been completed. Now click the Activate button from the WireGuard client. If everything is OK, the tunnel will be created and you can access your remote servers and other network devices without any issue and the client window looks like the following image.
If you face any confusion to follow the above steps, watch the following video for step by step guideline.
How to configure Road Warrior WireGuard VPN in MikroTik RouterOS7 has been discussed in this article. I hope you will now be able to configure Client Server WireGuard VPN tunnel in RouterOS 7. However, if you face any confusion to setup WireGuard VPN in RouterOS7, feel free to discuss in comment or contact me form Contact page. I will try my best to stay with you.
Время на прочтение
5 мин
Количество просмотров 75K
Что такое WireGuard
Если не касаться wiki и официального сайта, и объяснять как можно проще, то это VPN туннелирование через UDP.
Это возможность быстро, максимально просто и надёжно, с хорошим уровнем безопасности соединить две точки между собой.
Соединение одноранговое, открытый исходный код, и полу-автоматизированное создание маршрутов(для некоторых клиентов) — что еще нужно, для счастья
Возможность использовать WireGuard появилась в mikrotik начиная с седьмой версии RouterOS.
Как работает подключение (простым языком)
У нас есть две точки:
-
Точка А с внешним адресом 111.111.111.111
-
Точка Б с внешним адресом 222.222.222.222
С точки зрения WireGuard эти адреса называются Endpoint
.
Также у точек есть внутренние сети или LAN:
-
Точка А. 192.168.100.0/24
-
Точка Б. 192.168.200.0/24
Эти сети мы и хотим связать между собой. Для WireGuard это называется AllowedAddress
, или разрешенные адреса для точки. Для Точки А нам нужно будет указать разрешенные адреса — 192.168.200.0/24. Для Точки Б, соответственно — 192.168.100.0/24
Помимо этого мы должны определить для точек А и Б их адреса. Они используются для интерфейса, который создает WireGuard и передачи внутри протокола. В настройках большинства клиентов это будет называться Address
. В mikrotik мы создадим отдельный адрес.
-
Точка А. 10.10.10.1
-
Точка Б. 10.10.11.1
Всё! Этого достаточно для создания подключения и его работы.
В итоге всё это будет выглядеть так:
Отличия WireGuard и OpenVPN
Я не являются специалистом по сетевым протоколов и криптографических систем, поэтому не могу дать детальное сравнение этих решений. Но могу выделить несколько основных отличий для меня, как пользователя и администратора:
-
В WireGuard не нужно создавать сертификаты, в отличии от OpenVpn, и следить за ними. Это и плюс и минус в зависимости от цели использования.
-
В WireGuard создаются одноранговые соединения, где каждая точка может быть как сервером так и клиентом. Это позволяет создавать, помимо классических «звёзд», ещё и mesh сети.
-
OpenVPN позволяет более тонко управлять клиентами и их подключениями. Например, можно индивидуально раздавать маршруты и DNS-серверы для клиентов. WireGuard так не умеет.
-
Отдельно для mikrotik есть недостаток в том, что для каждой подсети нужно настраивать маршруты. Для win-клиентов они определяются и задаются исходя из
AllowedAddress
.
В целом я для себя сделал вывод, что для внешних пользователей удобнее и, возможно, безопаснее использовать OpenVPN. А для железных(ака аппаратных) или программных роутеров и их связи между собой удобнее WireGuard. По принципу — настроил и забыл.
Подготовка к настройке
Для начала нужно убедится в том, что наш роутер Mikrotik умеет работать с WireGuard. Далее я буду показывать на примере интерфейса winbox. Если Вы пользуете командную строку, то Вы, скорее всего, сами сможете определить наличие WireGuard.
Проверить, это можно просто взглянув на пункты меню (актуально для версии 7.5):
Обновить можно попробовать так:
Если так не получилось, то смотрите свою версию в заголовке winbox устройства
и идите на официальный сайт mikrotik для скачивания последней версии ОС.
Коротко, как обновить через загрузку файла на Mikrotik:
Если у Вас много точек и так же для удобства настройки и дальнейшего обслуживания я рекомендую создать Вам подобную таблицу:
Name |
Address |
Endpoint |
EndpointIp |
AllowedIPs |
ListenPort |
PrivateKey |
PublicKey |
PointA |
10.10.10.1 |
www.pointA.com |
222.222.222.222 |
10.10.11.1/32,192.168.200.0/24 |
13231 |
ucwL8IWLNYrPHOu9qk70ZOagPgjJXhzvvkg7ZLooaj4= |
|
PointB |
10.10.11.1 |
www.pointB.com |
111.111.111.111 |
10.10.10.1/32,192.168.100.0/24 |
13231 |
FxNwKIFINspWh5pkoFpS5LzNKMDjkqcAV/Ypo2Ed8ys= |
Вам так будет проще ориентироваться в дальнейшем
Настройка WireGuard на Mikrotik
Итак, у Вас есть WireGuard на Mikrotik, и теперь мы можем начать настройку.
Прежде всего нам нужно создать интерфейс, чтобы получить публичный ключ или Public Key
. Я ранее про него не писал умышленно, чтобы было проще понять принцип работы WireGuard.
Но без публичного ключа установить соединение не получится. Он служит ключом шифрования и, можно сказать, паролем точки и для каждой точки он должен быть уникальным. При создании интерфейса он генерируется автоматически, так что Вам не нужно об этом переживать:
Создаем интерфейсы и копируем себе публичные ключи.
Скрипт для быстрой настройки
Далее я дам два варианта настройки простой и быстрый, и немного подольше. Для начала простой, которым пользуюсь сам. Вот скрипт который, я сделал для Вашего удобства:
# EXAMPLE start
# Peer A params
# Name peerAname "PointA"
# Interaface Address peerAifAddress "10.10.10.1/24"
# AllowedIPs peerAallowed 10.10.11.1/32,192.168.200.0/24
# EndPoint peerAendAddress "111.111.111.111"
# EndPort peerAendPort 13231
# PublicKey peerAkey "ucwL8IWLNYrPHOu9qk70ZOagPgjJXhzvvkg7ZLooaj4="
# Peer B params
# Name peerBname "PointB"
# Interaface peerBif "PointB"
# AllowedIPs peerBallowed 10.10.10.1/32,192.168.100.0/24
# EndPoint peerBendAddress "222.222.222.222"
# EndPort 13231
# PublicKey "FxNwKIFINspWh5pkoFpS5LzNKMDjkqcAV/Ypo2Ed8ys="
# EXAMPLE end
{
# Peer A params
# SET PARAMS HERE
:local peerAname "PointA"
:local peerAifAddress "10.10.10.1/24"
:local peerAallowed 10.10.11.1/32,192.168.200.0/24
:local peerAendAddress "111.111.111.111"
:local peerAendPort 13231
:local peerAkey "ucwL8IWLNYrPHOu9qk70ZOagPgjJXhzvvkg7ZLooaj4="
# Peer B params
:local peerBname "PointB"
:local peerBifAddress "10.10.11.1/24"
:local peerBallowed 10.10.10.1/32,192.168.100.0/24
:local peerBendAddress "222.222.222.222"
:local peerBendPort 13231
:local peerBkey "FxNwKIFINspWh5pkoFpS5LzNKMDjkqcAV/Ypo2Ed8ys="
# start select
:local input do={:put $input;:return}
:local selectedPeer [$input "Enter current Peer A or B"]
:put "You select is $selectedPeer. Finished!"
# end select
{
# start for A
:if ($selectedPeer = "A") do={
# add address
/ip address
add address=$peerAifAddress interface=$peerAname comment=$peerAname
# add firewall rule
/ip firewall filter
add action=accept chain=input dst-port=$peerAendPort in-interface-list=WAN protocol=udp comment="WireGuard $peerAname"
# add peer
/interface/wireguard/peers
add allowed-address=$peerBallowed endpoint-address=$peerBendAddress endpoint-port=$peerBendPort interface=$peerAname public-key=$peerBkey persistent-keepalive=10 comment=$peerBname
# add route
/ip/route
:foreach peer in=$peerBallowed do={
add dst-address=$peer gateway=$peerAname comment=$peerBname
}
}
# end for A
# start for B
:if ($selectedPeer = "B") do={
# add address
/ip address
add address=$peerBifAddress interface=$peerBname comment=$peerBname
# add firewall rule
/ip firewall filter
add action=accept chain=input dst-port=$peerBendPort in-interface-list=WAN protocol=udp comment="WireGuard $peerBname"
# add peer
/interface/wireguard/peers
add allowed-address=$peerAallowed endpoint-address=$peerAendAddress endpoint-port=$peerAendPort interface=$peerBname public-key=$peerAkey persistent-keepalive=10 comment=$peerAname
# add route
/ip/route
:foreach peer in=$peerAallowed do={
add dst-address=$peer gateway=$peerBname comment=$peerAname
}
}
# end for B
}
}
Его можно запускать прямо из терминала, либо из winbox открыв терминал. Так же вы можете добавить его в System -> Scripts
и запустить из терминала, но так как это разовая процедура, не вижу в этом особого смысла.
Для начала внесите все необходимые параметры в строки переменных :local
, затем скопируйте и вставьте скрипт в терминал. Вам нужно будет только выбрать точку в которой вы находитесь А
или B
. Введите её и нажмите Enter
.
Так нужно будет повторить в каждой точке!
Скрипт создаёт address
, правило firewall для доступа из вне по списку interface list
WAN
. Список интерфейсов WAN
создаётся по умолчанию. Если его нет, то добавьте.
Далее, скрипт создаёт настройки точки Peers
для подключения и добавляет все необходимые маршруты Routes
, которые берёт из Allowed Address
Ну или вы можете прописать всё руками по следующим скриншотам:
Надеюсь эта статья помогла кому-то быстро всё понять и настроить. Так как я на понимание, тесты и настройку потратил минимум один день, а то и больше.
И в конце добавлю общую схему со всеми параметрами:
В прошивке Mikrotik 7* появилась возможность использования новой VPN WireGuard. VPN достаточно проста в настройке и не требует обширных знаний в маршрутизации.
А теперь по этапам: (этапы обновления пропущу. Погуглите, там не сложно)
- Обновим наш Mikrotik до версии 7*
- После обновления у нас появится новый раздел WireGuard
Переходим в него. В окне есть вкладка WireGuard и peers.
- Создадим наш сервер:
- Жмем плюсик
- Обзываем наш интерфейс как хотите
- Прописываем порт VPN, можете указать любой.
- Жмем применить
- Public key сгенерируется автоматически. Запишем его.
2. Немного настроек роутера:
- Создадим интерфейсу адрес
- Разрешим в Firewall наш порт 13231
- Можно в консоли
- /ip firewall filter add action=accept chain=input dst-port=13231 in-interface-list=WAN protocol=\ udp
- Можно ручками:
Теперь установим клиента WireGuard на Windows. Заранее уточню, поддерживается WINDOWS 7/8/10/11.
Качаем дистрибутив тут: https://www.wireguard.com/install/
Устанавливаем и запускаем. Тут нам нужно будет создать пустой туннель
Теперь идем создаем клиента на роутере.
Теперь настроим клиента Windows. Общий вид конфигурации будет выглядеть вот так:
[Interface]
PrivateKey = Генерируется у клиента автоматически
Address = 10.110.5.2/24 — адрес peers на роутере.
DNS = 10.110.5.1, 8.8.8.8, 1.1.1.1 — Тут я прописал днс гугла. Без него у клиента не будет работать интернет.
[Peer]
PublicKey = Ключ сервера
AllowedIPs = 10.110.5.1/24, 192.168.0.0/24 Тут пишем ip адрес сервера Wireguard и сеть за ним
Endpoint = 127.0.0.1:13231 Тут прописываем внешний ip адрес и порт сервера.
Воть вроде бы и все…