Как пустить трафик через wireguard на микротик

от admin

Записки IT специалиста

Рассматривая настройку WireGuard в наших предыдущих материалах, мы намеренно не касались Mikrotik, запланировав для этого отдельную статью. И для этого есть свои причины. RouterOS, под управлением которой работают данные устройства, имеет свои особенности и подходы к настройке, малоинтересные другим читателям. А для пользователей Mikrotik будет лучше, если все нужное будет в одной статье. При этом мы подразумеваем, что администратор, работающий с ROS, имеет более высокий уровень подготовки и владеет основами сетей, поэтому не будем пояснять простые настройки, а сосредоточимся именно на WireGuard.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Если вас интересует тема WireGuard в более широком ключе, безотносительно оборудования Mikrotik, то рекомендуем прочесть наши материалы:

Следующий очень важный момент: Wireguard доступен только в версии RouterOS 7, которая не смотря на статус stable все еще имеет достаточно «детских болезней» и прочих проблем, поэтому не стоит переходить на новую версию без вдумчивого анализа всех плюсов и минусов, а также предварительного тестирования.

В нашем случае будет использоваться CHR с RouterOS 7.2.1 запущенная в виртуальной машине нашей тестовой лаборатории.

Как мы уже говорили, WireGuard — это простой туннель без сохранения состояния, к нему не применимы понятия клиент и сервер, каждый узел WireGuard способен подключаться к другим узлам и сам принимать соединения. Более правильно называть узлы сети — пиры (peer) — инициатором и респондером. Первый инициирует соединение, второй его принимает. Хотя даже в среде профессионалов к узлам WireGuard продолжают применяться термины клиент и сервер, первый подключается, второй принимает подключения. Большой беды в этом нет, но вы должны понимать, что любой узел WireGuard способен выполнять обе роли одновременно.

Mikrotik как респондер (сервер)

В RouterOS 7 появился новый пункт меню — WireGuard, переходим в него на одноименную закладку и создаем новый интерфейс. Заполняем поля Name и Listen Port, их назначения понятны, советуем использовать осмысленные названия интерфейсов, чтобы вы могли понимать, для чего тот или иной предназначен. Ключи будут созданы автоматически.

mikrotik-wireguard-001.png

Если вы предпочитаете работать в терминале, то выполните команду:

Затем присвоим созданному интерфейсу IP-адрес, для чего перейдем в IP — Addresses и просто добавим нужный адрес.

mikrotik-wireguard-002.png

Или:

Также не забудьте разрешить входящие соединения на указанный при создании интерфейса порт, в нашем случае 34567. Это можно сделать в IP — Firewall — Filter Rules добавив правило: Chain — input, Protocol — udp, Dst. Port — 34567, In. Interface — ether1 — в его качестве следует указать внешний интерфейс роутера. Действие можно не выбирать, так как по умолчанию — accept.

mikrotik-wireguard-005.png

Это же можно сделать командой:

Данное правило следует расположить перед запрещающим принимать входящие подключения на внешний интерфейс.

Чтобы к нашему роутеру могла подключаться другие узлы нужно создать для каждого из них пир, для этого возвращаемся в WireGuard — Peers и создаем новую запись. Здесь нам потребуется открытый ключ пира, который следует внести в поле Public Key и указать разрешенные сети в Allowed Address. В нашем случае мы реализуем сценарий удаленного доступа или объединения сетей, поэтому укажем там внутренний адрес в WireGuard сети, который мы выделили пиру и сеть за ним.

mikrotik-wireguard-003.png

В терминале:

Затем назначаем интерфейсу адрес, если все узлы ваши — то назначаете сами, если подключаетесь к чужому респондеру, то вводите адрес, выданный его администратором. Это действие производится в IP — Addresses.

mikrotik-wireguard-008.png

Это же действие в терминале:

Чтобы наш роутер смог куда-то подключиться мы снова должны создать пир. В WireGuard пир — это просто вторая сторона туннеля и не важно мы подключаемся к ней, или она к нам. В любом случае у нас должен быть интерфейс — наша сторона, и пир — противоположная сторона.

Переходим в WireGuard — Peers и создаем новый пир, настроек тут будет побольше, указываем: Interface — созданный нами интерфейс, Public Key — публичный ключ респондера, получаем с той стороны, Endpoint и Endpoint Port — адрес респондера и его порт, Allowed Address — 0.0.0.0/0 — т.е. разрешаем любой трафик в туннеле. Если вы находитесь за NAT, то обязательно добавьте опцию Persistent Keepalive, рекомендуемое значение — 25 секунд.

mikrotik-wireguard-009.png

В терминале тоже достаточно длинная команда:

Если же мы хотим направить весь интернет трафик в туннель, то нам нужно изменить нулевой маршрут, казалось бы, все просто, но не будем спешить. Обратим внимание на флаги текущего маршрута: DAd — динамический, активный, получен по DHCP, можно, конечно отключить получение маршрутов в DHCP-клиенте, но мы пойдем другим путем.

Вспомним, что если к одной цели ведут несколько маршрутов, то будет выбран тот, у которого самая узкая маска. Поэтому вместо одного нулевого маршрута добавим два, к сетям 0.0.0.0/1 и 128.0.0.0/1.

mikrotik-wireguard-014.png

В терминале выполните две команды:

Вроде бы все сделано правильно, но интернет вообще перестал работать. Что случилось? Мы только что завернули в туннель весь исходящий трафик, в том числе и к нашему VPN-серверу, естественно, что соединение будет невозможно.

Поэтому добавим еще один маршрут к респондеру через основного провайдера.

mikrotik-wireguard-015.png

Где 192.168.3.1 — шлюз основного провайдера.

После чего все снова заработает. При этом уже только по одному внешнему виду сайтов несложно понять, что мы работаем через VPN с точкой выхода в Германии.

mikrotik-wireguard-016.png

Более подробные настройки для того или иного конкретного сценария выходят за рамки данной статьи и, как таковые, уже не относятся к настройкам WireGuard. Сам же WireGuard в RouterOS 7 есть и работает, при этом достаточно несложен в настройке, в чем мы только что убедились.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Дополнительные материалы:

Mikrotik
The Dude

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал

Настройка WireGuard на Mikrotik

Если не касаться 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

Краткая схема работы WireGuard

Отличия WireGuard и OpenVPN

Я не являются специалистом по сетевым протоколов и криптографических систем, поэтому не могу дать детальное сравнение этих решений. Но могу выделить несколько основных отличий для меня, как пользователя и администратора:

В WireGuard не нужно создавать сертификаты, в отличии от OpenVpn, и следить за ними. Это и плюс и минус в зависимости от цели использования.

В WireGuard создаются одноранговые соединения, где каждая точка может быть как сервером так и клиентом. Это позволяет создавать, помимо классических «звёзд», ещё и mesh сети.

OpenVPN позволяет более тонко управлять клиентами и их подключениями. Например, можно индивидуально раздавать маршруты и DNS-серверы для клиентов. WireGuard так не умеет.

Отдельно для mikrotik есть недостаток в том, что для каждой подсети нужно настраивать маршруты. Для win-клиентов они определяются и задаются исходя из AllowedAddress .

В целом я для себя сделал вывод, что для внешних пользователей удобнее и, возможно, безопаснее использовать OpenVPN. А для железных(ака аппаратных) или программных роутеров и их связи между собой удобнее WireGuard. По принципу — настроил и забыл.

Подготовка к настройке

Для начала нужно убедится в том, что наш роутер Mikrotik умеет работать с WireGuard. Далее я буду показывать на примере интерфейса winbox. Если Вы пользуете командную строку, то Вы, скорее всего, сами сможете определить наличие WireGuard.

Проверить, это можно просто взглянув на пункты меню (актуально для версии 7.5):

Обновить можно попробовать так:

стандартный способ обновления

стандартный способ обновления

Если так не получилось, то смотрите свою версию в заголовке winbox устройства

Читать:
Как снять защиту с диска защищенного от записи

в данном случае это mipsbe

в данном случае это mipsbe

и идите на официальный сайт mikrotik для скачивания последней версии ОС.

Коротко, как обновить через загрузку файла на Mikrotik:

Если у Вас много точек и так же для удобства настройки и дальнейшего обслуживания я рекомендую создать Вам подобную таблицу:

Вам так будет проще ориентироваться в дальнейшем

Настройка WireGuard на Mikrotik

Итак, у Вас есть WireGuard на Mikrotik, и теперь мы можем начать настройку.

Прежде всего нам нужно создать интерфейс, чтобы получить публичный ключ или Public Key . Я ранее про него не писал умышленно, чтобы было проще понять принцип работы WireGuard.

Но без публичного ключа установить соединение не получится. Он служит ключом шифрования и, можно сказать, паролем точки и для каждой точки он должен быть уникальным. При создании интерфейса он генерируется автоматически, так что Вам не нужно об этом переживать:

Создаем интерфейсы и копируем публичные ключи

Создаем интерфейсы и копируем публичные ключи

Создаем интерфейсы и копируем себе публичные ключи.

Скрипт для быстрой настройки

Далее я дам два варианта настройки простой и быстрый, и немного подольше. Для начала простой, которым пользуюсь сам. Вот скрипт который, я сделал для Вашего удобства:

Его можно запускать прямо из терминала, либо из winbox открыв терминал. Так же вы можете добавить его в System -> Scripts и запустить из терминала, но так как это разовая процедура, не вижу в этом особого смысла.

Для начала внесите все необходимые параметры в строки переменных :local , затем скопируйте и вставьте скрипт в терминал. Вам нужно будет только выбрать точку в которой вы находитесь А или B . Введите её и нажмите Enter .

Так нужно будет повторить в каждой точке!

Скрипт создаёт address , правило firewall для доступа из вне по списку interface list WAN . Список интерфейсов WAN создаётся по умолчанию. Если его нет, то добавьте.

Далее, скрипт создаёт настройки точки Peers для подключения и добавляет все необходимые маршруты Routes , которые берёт из Allowed Address

Ну или вы можете прописать всё руками по следующим скриншотам:

Создаём адрес и подсеть для нашего интерфейсаСоздаём адрес и подсеть для нашего интерфейса Создаём правило FirewallСоздаём правило Firewall Прописываем маршрутыПрописываем маршруты Добавляем точку к которой хотим подключитсяДобавляем точку к которой хотим подключится

Надеюсь эта статья помогла кому-то быстро всё понять и настроить. Так как я на понимание, тесты и настройку потратил минимум один день, а то и больше.

И в конце добавлю общую схему со всеми параметрами:

Общая схема работы и настройки WireGuard

Общая схема работы и настройки WireGuard

A VPN roadwarrior setup with WireGuard and Mikrotik RouterOS

Disclaimer: I’ve just put my hands over an hAP ac², my first piece of Mikrotik equipment. I’m very new to RouterOS so take this article as my own notes rather than a prescriptive recipe — comments welcome!

RouterOS 7 (currently available as a Release Candidate) introduced support for WireGuard, the VPN tech that aims to be “faster, simpler, leaner” than IPSec, and “considerably more performant than OpenVPN”.

This brief article explains how I have configured my hAP ac² for a roadwarrior scenario — that is, a VPN gateway that accepts peers connecting from non-static IP Addresses.

This is a simplified diagram of my current networking setup:

An ISP-provided router terminates the (PPPoA) DSL connection, and NATs 1:1 its public interface (1.2.3.4) to the WAN interface of the hAP (192.168.0.2), which through the LAN interface (192.168.1.1) masquerades all traffic going towards WAN.

Creating and configuring the WireGuard interface

We’re going to create a network interface for WireGuard, which will be assigned the IP 192.168.98.1, and we’ll dedicate 192.168.98.0/24 for the remote clients.

Client configuration

To have your roadwarriors connecting to WireGuard, you’ll have to generate a configuration file (including a pub/pri key pair) for each client. You can read the WireGuard docs, use a tool such as WireGuard Config Generator (which claims to be client-side only) or your client UI (e.g. the official Android client can import or generate the required config). You’re going to need the generated public key (let’s call it example-client1-public-key) for a later setup stage.

Let’s take a look at a sample configuration:

This configuration routes all traffic to the VPN gateway (including internet traffic), which might or might not be the desired scenario. In case you want to implement “split tunneling” instead and only route private IPs to the VPN, the configuration would change as follows (notice the change in the “AllowedIPs” bit).

One more thing

One last bit of configuration is required on the Mikrotik side — that is, adding and configuring a (or as many as you have created!) WireGuard peer.

That should be all! Your roadwarrior should be able to ping (and access) the local network, and potentially (according to the AllowedIPs configuration) egress from your home/office.

Настройка WireGuard на MikroTik

Схема WireGuard в MikroTikLab

Сегодня речь пойдёт о долгожданной настройки VPN WireGuard на Mikrotik RouterOS 7.3.1. Ранее данный тип соединения не был доступен, но с выходом «семерочки» мы теперь можем создавать данный тип туннеля. Из основных плюсов его это:

  • UDP соединение;
  • Проходимость через NAT;
  • Гибкое управление интерфейсами;

Из минусов — это отсутствие сохранения состояния и ручное назначение адресов на интерфейсы, как клиентские, так и серверные. Да, тут стоит оговориться, что это не клиент-серверная технология, в понятии протокола есть Peer, который может как принимать соединения, так и инициировать.

То есть тут нет настройки wireguard server и client как в привычных VPN протоколах на MikroTik. В данном случае оба конца сети равнозначны.

Общая идеология строится на том, что у обоих пиров есть приватный и публичные ключи. Это обычная строка цифр и символов сгенерированная в BASE64 кодировке. Всякий раз, когда вы создаёте WireGuard интерфейс, генерируется случайная последовательность ключа. Приватный ключ никому передавать нельзя, а вот публичный нужен для настройки с двух сторон. Первой стороне нужен ключ со второй стороны, и наоборот, второй стороне нужен ключ первой.

Т.е. простыми словами, у вас нет логина и пароля. Все обоюдно, шифруется публичными ключами каждой из сторон. Давайте перейдём от слов к делу и посмотрим на схему сети.

Схема сети

В нашем случае ничего сверхъестественного, имеется провайдер со своей сетью, внутри которой мы будем и настраивать туннель. И далее внутри него, настроим маршрутизацию между площадками.

Wireguard сеть

Настройка Office-1

Открываем меню WireGuard и создаём интерфейс. Имя можно задать какое угодно, но я сразу помечу его для понимания куда он смотрит.

Создание WireGuard интерфейса

Listen Port можете поменять, а можете оставить по умолчанию. Нажимаем применить и видим наш Private и Public.

Генерация ключа шифрования

Далее переходим на вкладку Peers и создаём пира. Нам нужно указать:

  • На каком интерфейсе будет слушаться подключение;
  • Публичный ключ другой стороны;
  • Endpoint – публичный IP партнёра;
  • Endpoint Port – соответственно его порт;
  • Allowed Address – сети и адреса, которым разрешено «бегать» по коридору, т.е. через данный интерфейс.

Настройки пира WireGuard

Далеко не отходим, и подключаемся к Office-2. Здесь так же создаём peer с понятным именем в сторону первого офиса.

Настройка второго офиса Mikrotik WireGuard

Копируем Public Key с Office-2 и возвращаемся в Office-1 и вставляем в настройки пира.

Обмен ключами шифрования

На этом же девайсе (Office-1), задаём IP на WireGuard to-Office-2 172.16.30.1 – это адрес внутри VPN сети.

Назначение IP адреса на WireGuard в офисе 1

Далее нам нужно создать пир на втором роутере. Копируем публичный ключ первого и переходим к настройке. Все аналогично, но только зеркально. Сейчас все увидите.

Обмен ключами шифрования с Office-2

  • Public Key – публичный ключ партнёра, т.е. первого роутера;
  • Его публичный IP и порт;
  • Разрешённые адреса, и сети.
  • Сохраняем, применяем и не забываем назначить туннельный IP на Office-2.

Office 2 IP Address WireGuard

Проверка WireGuard

Запустим ping по туннельным адресам wireguard в направлении друг друга c двух микротиков.

Проверка туннеля WIreGuard

Обратите внимание на интерфейсы, трафик действительно идёт по нужным.

Маршрутизация

И вишенкой на торте, у нас остаётся создание маршрутов в соседние сети. Выше мы убедились, что WireGuard работает, остаётся научить наши маршрутизаторы ходить друг к другу.

Создаём маршрут во второй офис на первом mikrotik через раздел routes (а не через wireguard).

WireGuard Site-to-Site маршрутизация

И наоборот, во втором офисе создаём маршрут в первый.

Immediate Gateway в WireGuard

Обратите внимание на Immediate Gateway – после сохранения правила, интерфейс через который доступна сеть, Mikrotik подставит автоматически. Ваша задача проверить, чтобы был выбран верный.

Проверка связанности сетей

Для этого включаем наши виртуальный PCs, проверяем чтобы мы получили адреса корректные и пробуем прошпиговать друг друга.

Site to site VPN WireGuard

Все прекрасно работает. Далее вы можете ограничивать трафик на уровне фаервола, но это уже совсем другая история.

Подытожим, мы настроили WireGuard на двух роутерах MikroTik, объяснили что в данной технологии нет привычной клиент серверной архитектуры, создали маршруты и объединили два офиса (site to site). А самое главное, это делается все быстро и просто.

89 вопросов по настройке MikroTik

Вы хорошо разбираетесь в Микротиках? Или впервые недавно столкнулись с этим оборудованием и не знаете, с какой стороны к нему подступиться? В обоих случаях вы найдете для себя полезную информацию в курсе «Настройка оборудования MikroTik». 162 видеоурока, большая лабораторная работа и 89 вопросов, на каждый из которых вы будете знать ответ. Подробности и доступ к началу курса бесплатно тут.

Похожие статьи