Установку RouteOS (CHR) на виртуальный сервер мы рассматривали ранее, поэтому в данной статье мы разберем настройку Wireguard на RouteOS.
Параллельно с графической инструкцией будут представлены команды с помощью которых можно будет произвести настройки не заходя в winbox либо web интерфейс, а использовать терминальное подключение.
Видео инструкция
Создание Wireguard интерфейса

Подключаемся к RouteOS с помощью winbox, в боковом меню нажимаем на пункт меню Wireguard и в окне которое откроется нажимаем на знак +

В открывшемся окне указываем имя интерфейса и если нужно меняем порт. После нажатия на OK у нас будет создан интерфейс с именем wireguard и портом подключения 13231, а также будет сгенерирован Privat и Public Key.

Для просмотра Privat и Public Key необходимо еще раз открыть созданный интерфейс два раза кликнув на название.
Для создания wireguard интерфейса в терминале, необходимо выполнить команду
/interface/wireguard
add listen-port=13231 name=wireguard
Чтобы узнать Privat и Public Key выполняем следующую команду
/interface/wireguard print
Для настройки соединения на стороне клиента мы будем использовать Privat Key
Создание Peer (пользователя)
Для того чтобы подключиться к серверу нам необходимо создать Peer, для каждого нового подключения необходимо создавать новый Peer.

Открываем окно Wireguard и переходим во вкладку Peer.

В Allowed Address вводим подсеть с которой разрешено подключение либо отдельный IP адрес с которого будет разрешено подключение, а в Publik Key вводим публичный ключ который мы сгенерируем с вами на стороне подключаемого устройства (компьютера, телефона, либо сервера)

После создания вы сможете просмотреть, изменить либо скопировать созданный Peer в одноименной вкладке.
Для добавления нового Peer через терминал выполняем следующую команду
/interface wireguard peers
add allowed-address=10.0.10.100/32 interface=wireguard public-key="ваш публичный ключ клиента"

Последним этапом настройки, добавим диапазон IP адресов для WireGuard интерфейса. В боковом меню выбираем IP и переходим в Addresses.

Нажимаем на + добавляем диапазон адресов который мы указывали в Allowed Address при создании нового Peer. Не забываем в Interface указать название вашего WireGuard интерфейса.
Для добавление диапазона адресов через терминал выполняем следующую команду
/ip address
add address=10.0.10.1/24 interface=wireguard network=10.0.10.0
На этом настройка на стороне RouteOS завершена и мы можем приступить к настройке клиента.
Настройка клиента
Все доступные клиенты вы найдете на официальном сайте WireGuard в разделе Installation
Клиент WireGuard для Windows
Скачиваем клиент и устанавливаем его.

Открываем окно и нажимаем на «Добавить туннель» и выбираем «Добавить пустой туннель»

Нам необходимо внести следующие данные:
[Interface] — блок отвечающий за настройки клиента
PrivateKey — генерируется автоматически при создании туннеля
Address — IP адрес нашего клиента , присваиваем IP адрес который мы указали в Allowed Address при создании Peer на стороне routeOS
DNS — DNS сервера
[Peer] — блок указывающий на то к какому серверу необходимо подключаться.
PublicKey — публичный ключ сервера к которому мы будем подключаться
AllowedIPs — диапазон IP адресов к которым будет доступ с данного подключения
Endpoint— IP адрес и порт подключения к серверу WireGuard
PersistentKeepalive — время в секундах в течении которого будут посылаться пакеты к серверу для проверки актуальности подключения
Ниже оставляю шаблон для добавления туннеля
[Interface]
PrivateKey = CLYP*****************HXM=
Address = 10.0.10.100/32
DNS = 1.1.1.1
[Peer]
PublicKey = 5cRPq/***************C6xzEjn9hRyk3Y=
AllowedIPs = 0.0.0.0/0, 128.0.0.0/0
Endpoint = server_ip:server_port
PersistentKeepalive = 10
Настройка клиент WireGuard для Linux Ubuntu/Debian
На данный момент в Linux нет графического интерфейса для управления туннелями, все настройки необходимо вносить в файлы конфигурации.
Первым делом установим Wireguard
sudo apt update
sudo apt install wireguard
Перейдем в директорию WireGuard и cгенерируем Privat и Public Key
cd /etc/wireguard
umask 077
sudo wg genkey > private-key
sudo wg pubkey > public-key < private-key
Создадим файл туннеля и назовем его wg0.cfg именно в него мы будем вносить данный для подключения.
sudo nano /etc/wireguard/wg0.conf
В данный файл вносим точно такую же информацию которую мы вносили при создании туннеля в Windows
[Interface]
PrivateKey = CLYP*****************HXM=
Address = 10.0.10.100/24
DNS = 1.1.1.1
[Peer]
PublicKey = 5cRPq/***************C6xzEjn9hRyk3Y=
AllowedIPs = 0.0.0.0/0, 128.0.0.0/0
Endpoint = server_ip:server_port
PersistentKeepalive = 10
[Interface] — блок отвечающий за настройки клиента
PrivateKey — сгенерированный нами ключ который находится в файле public-key в папке /etc/wireguard
Address — IP адрес нашего клиента , присваиваем IP адрес который мы указали в Allowed Address при создании Peer на стороне routeOS
DNS — DNS сервера
[Peer] — блок указывающий на то к какому серверу необходимо подключаться.
PublicKey — публичный ключ сервера к которому мы будем подключаться
AllowedIPs — диапазон IP адресов к которым будет доступ с данного подключения
Endpoint— IP адрес и порт подключения к серверу WireGuard
PersistentKeepalive — время в секундах в течении которого будут посылаться пакеты к серверу для проверки актуальности подключения
Настройка клиент WireGuard для macOS
Устанавливаем клиент WireGuard из AppStore .

Запускаем клиент и нажимаем на знак + который находится в левом нижнем углу, выбираем добавить пустой туннель Add Empty Tunnel

В окне вводим конфигурацию для подключения.
[Interface] — блок отвечающий за настройки клиента
PrivateKey — генерируется автоматически при создании туннеля
Address — IP адрес нашего клиента , присваиваем IP адрес который мы указали в Allowed Address при создании Peer на стороне routeOS
DNS — DNS сервера
[Peer] — блок указывающий на то к какому серверу необходимо подключаться.
PublicKey — публичный ключ сервера к которому мы будем подключаться
AllowedIPs — диапазон IP адресов к которым будет доступ с данного подключения
Endpoint— IP адрес и порт подключения к серверу WireGuard
PersistentKeepalive — время в секундах в течении которого будут посылаться пакеты к серверу для проверки актуальности подключения
Ниже оставляю шаблон для добавления туннеля
[Interface]
PrivateKey = CLYP*****************HXM=
Address = 10.0.10.100/32
DNS = 1.1.1.1
[Peer]
PublicKey = 5cRPq/***************C6xzEjn9hRyk3Y=
AllowedIPs = 0.0.0.0/0, 128.0.0.0/0
Endpoint = server_ip:server_port
PersistentKeepalive = 10

Нажимаем сохранить и для подключения к серверу нажимаем на Activate.
Настройка клиент WireGuard для Android
Переходив в Google Play Market и устанавливаем приложение WireGuard.

Нажимаем на + в левом нижнем углу , и выбираем создания пустого туннеля

В блоке Интерфейс генерируем новый приватный ключ либо используем публичный ключ который у вас уже имеется, в поле Адреса указываем IP адрес который будет присвоен данному подключению, в нашем случаи это 10.0.10.100/32, задаем DNS сервер, в примере это 1.1.1.1.
В блоке Пир вставляем публичный ключ сервера wireguard , его мы получили во время настройки WireGuard в routerOS, указываем IP сервера, порт и разрешенные IP адреса для данного подключения.
Сохраняем туннель и производим подключение.
Настройка клиент WireGuard для iOS
Устанавливаем клиент WireGuard из AppStore.

Запускаем приложение и добавляем новый туннель, нажимаем на Добавить туннель — Создать с нуля.

В блоке Интерфейс генерируем новый приватный ключ либо используем публичный ключ который у вас уже имеется, в поле Адреса указываем IP адрес который будет присвоен данному подключению, в нашем случаи это 10.0.10.100/32, задаем DNS сервер, в примере это 1.1.1.1.
В блоке Пир вставляем публичный ключ сервера wireguard , его мы получили во время настройки WireGuard в routerOS, указываем IP сервера, порт и разрешенные IP адреса для данного подключения.

Сохраняем туннель и производим подключение.