Инструкция по настройке VPN туннеля типа WireGuard между двумя роутерами MikroTik, Ubuntu и MikroTik, Windows и MikroTik. Для детального изучения параметров Wireguard добавлено описание по использованию. В manual также можно встретить примеры с картинками, конфигурацию Wireguard как сервера так и клиента и общие комментарии по настройке.
- Настройка WireGuard сервера на MikroTik
- Настройка WireGuard клиента на MikroTik
- Настройка Firewall для WireGuard подключения
- Задать вопрос по настройке MikroTik
- Настройка WireGuard клиента на MikroTik
- Создать интерфейс
- Настройка WireGuard Peer
- Настройка NAT
- Маркировка интернет трафика
- Статический маршрут интернет трафика
- Задать вопрос по настройке MikroTik
- Настройка Windows WireGuard клиента
- Создать WireGuard интерфейс
- Назначить IP адрес
- Скачать Windows клиент
- Создать WireGuard клиент
- Создать WireGuard Peer
- Обновить конфигурацию для WireGuard клиента
- Скопировать конфигурацию в WireGuard клиент
- Подключиться к WireGuard серверу
- Проверить работу интернета через WireGuard
- Задать вопрос по настройке MikroTik
WireGuard — это современный протокол для организации VPN, написанный с нуля, бесплатный и с открытыми исходниками. В отличие от OpenVPN или IPSec, он намного проще и легче. Это касается и скорости (пере)подключения, и производительности, и требований к ресурсам, и процесса настройки, и объёма кода. Недавно было объявлено, что WireGuard войдёт в состав будущих ядер Linux, а впоследствии попадёт и во все популярные дистрибутивы, что косвенно указывает на зрелость этого решения.
Для 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.
Создание интерфейса 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→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
Статья шикарная. Раписано всё досканально с примерами команд. Единственное замечание: в статье не указаны ваши изначальные настроки. Например: адрес локальной сети MikroTik. Так же довольно желательно указать в подзаглавии “Настройка маршрутизации для WireGuard клиента” названия каждых из полей. Они, конечно, интуективно понятны. Но всё равно заставляет самому разбираться где какое поле и какую подсеть в своих случаях вводить.
Спасибо за статью. Подскажите, а OSPF с WireGuard не работает?
Да. У меня, например, работает связка роутеров Микротик и VyOS. Между ними wireguard и по нему работает OSPF.
Настраивать Firewall нужно?
только в том случае, если из-за firewall-а что-то не работает
как быть если надо объединить 3-4-5-6 сетей ?
Нужно создать аналогичные соединения между:
паблик кей не создается при создании интерфейса на стороне микротик сервер.
откуда вы взяли этот параметр?
А дальше что? как тунель то включить? не работает.
в настройках микротик сервера в пир вставил значение паблик кей интерфейса, созданного на клиенте
на клиенте созданный на сервере.
это стало ясно, адреса и роуты есть, а трафик не идет же
как запустить?
192.168.5.1 это на микротике клиента локальная сеть?
не работает ваша статья, не получается соединить chr впс и микротик дома.
воспринимайте инструкцию как личный опыт как личный опыт автора. По вопросам:
Если на севере прописать ключи от Couldflare с dns1.1.1.1
Будет работать на сервере + клиенты?
Конечно, для настройки всей цепочки(сервер и клиент) можно посмотреть тут Настройка DNS в MikroTik
Не-то…
Нужно на сервере MikroTik, чтоб WireGuard был клиентом Cloudflare но при этом нужен туннель к другим клиентам MikroTik через WireGuard
переадресуйте DNS трафік з порту 53(udp) на WireGuard server
Отличный мануал по настройке WireGuard клиента для Mikrotik с полной маршрутизацией трафика
микротик как клиент вайргарда не работает.
микротик умеет только сервер
если ваш нужно практическое решение, обратитесь в нашу тех. поддержку →
Как видеть на MikroTik WireGuard сервере, активные подключения и логи подключений клиентов?
активные WireGuard подключение отображаются в закладке Peer, а логи в Log
Доброго дня.Підкажіть де шукати затик.Microtik hap ac2 виступає в якості клієнта WireGuard сервера що працює на базі openwrt роутера. Підключення відбувається, 2ip підтверджує що на потрібному пристрої в локальній мережї mikritikа зовншня ip адреса належить серверу,і навіть iptv працює,але….відсутній пінг сервера і відповідно пінг клієнта з сервера !???
Всі інші клієнти сервера подібної проблеми не мають.
1. У вас есть настройки wireguard peer, где добавляются Allowed Address
2. Firewall
3. Настройка IP адреса wireguard интерфейса.
…
Здраствуйте! Подскажите пожалуйста как пробросить поты через WireGuard к примеру цепочка такая (UserPC из любой точки мира подключается/обращается по внешнему адресу > К главному MikroTik со внешним IP > Wireguard server Переслать> Wireguard Client где будет встречать и Натить конечному клиенту к примеру Web server, RDP client, winbox и.т.д )
Если у вас настроена статическая маршрутизация между роутерами то нужно:
1. Пробросить порт со стороны Wireguard server на узел локальной сети Wireguard Client
2. Добавить правило masquerade на Wireguard интерфейс со стороны server
192.168.10.1 server, 10.10.10.1 vpn server, 192.168.20.1 client, 10.10.10.2 vpn client
проброс на сервере:
NAT
/ip firewall nat add chain=dstnat dst-port=3389 in-interface=ether1 action=dst-nat protocol=tcp to-address=10.10.10.2 to-port=3389 comment=”RDP ”
/ip firewall nat add chain=srcnat src-address=10.10.10.0 out-interface=ether1 action=masquerade
я правильно вас понял ? Если да тогда это не работает. Могу всю конфигурацию отправить
/ip firewall nat add chain=srcnat out-interface=WireGuard-Interface action=masquerade
и to-address должен принимать значения конечного узла локальной сети wireguard клиента
/ip firewall nat add chain=dstnat dst-port=3389 in-interface=ether1 action=dst-nat protocol=tcp to-address=10.10.10.2 to-port=3389 comment=”RDP ”
Большой Рахмет! You Good Man )
Здравствуйте. Подскажите, при создании пиров на mikrotik работает только последний созданный клиент, остальные подключаются, просто кидают пакеты но ничего не получают.
Разобрался, в Allowed Address при настройке пиров нужно указывать адреса подключаемых клиентов вместо 0.0.0.0/0, у меня только так заработали все пиры.
Добрый вечер.
Странный клиент, настроил на стороне винды клиент. Нажал подключить, он подключился. Пишет что поднялся.
На самом деле со стороны сервера, вообще не чего не настроено….)))
Шо то очень сырое….
Аналогично, клиент iOS сервер микротик, клиент всеми способами мне доказывает что ВПН подключен, но на микротике тишина, в логах 0, пакетов 0, пиров 0 ).
Статья прекрасная. С первого раза получилось объединить 2 микротика. Спасибо автору.
Здравствуйте! Есть вопрос, как можно сделать входящий и исходящий трафик для wireguard через определенного провайдера? WG Client(1-ый провайдер Beeline, 2-провайдер LTE) нужно что бы WG трафик ходил по LTE а все остальное через Beeline
а если у меня 0 маршрут это интернет через pppoe(ростелеком) то как маршрут прописывать? Если делаю по инструкции то комп больше не получает айпи
уточните что вы настраиваете, wireguard между чем и чем?
10.180.5.5/32 нужно назначить на интерфейс wireguard-client в ip adress? Я про инструкцию, когда вы микротик подключаете к впс с впн. У вас не сказано об этом, складывается ощущение, что у вас интерфейс без айпи адреса.
Всё верно, нужно указать IP адрес для WireGuard интерфейса и в маршрутизации, использовать IP адрес сервера, вместо интерфейса. Инструкцию поправил, спасибо за наблюдательность
Добрый день! По настройке WireGuard для работы с клиентами Windows всё работает. Но есть один момент, когда к интерфейсу подключается ещё клиент у других клиентов рубит соединение. Подскажи те с чем это может быть связано.
возможно вы используете один конфиг для всех пользователей
Клиентские конфиги все разные для каждого пользователя. Интерфейс WireGuard один. Не могу понять с чем это связано. Может есть ещё какие не будь варианты, интересно с чем это связано.
Привет! Хочу организовать доступ к локалке (192.168.88.0/24) с роутером Микротик, через мой собственный арендованный сервер с установленным Wireguard. Я создал нового wireguard клиента на сервере, с адресом 100.231.35.2 (адрес такой присовоился автоматически, я управляю wg через веб-интерфейс Firezone, так как не являюсь особо опытным администратором и особенно сетевиком).
В роутере создал wg интерфейс, прописал private key, создал peer, добавил интерфейсу адрес 100.231.35.2. Подключение устанавливается, keepalive трафик идет… Но дальше, к сожалению, не очень понимаю что нужно сделать, чтобы другой wg-клиент, допустим с адресом 100.215.24.4 смог при подключении по VPN проходить на 192.168.88.254?
Вам нужно настроить маршрутизацию между ваши клиентами и сервером. Также добавить допустимые адреса в Allowed Address, со стороны Wireguard клиента и сервера
спасибо шикарную за статью.
у меня тоже все получилось,но хотел бы узнать,можно ли использовать микротик,который клиент в качестве ДНС сервера?чтоб днс запросы уходилB от клиента wIREgUARD ? ЕСЛИ ДА,ТО ПОДСКАЖИТЕ КАК