0

wireguard

Настройка WireGuard VPN на роутерах Mikrotik

30.04.2022

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

• Организация каналов между офисами через WireGuard VPN на платформе Linux
• Настройка WireGuard VPN для доступа в интернет

Следующий очень важный момент: 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

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

/interface wireguard
add listen-port=34567 mtu=1420 name=wireguard-sts

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

mikrotik-wireguard-002.png

Или:

/ip address
add address=10.10.0.1/24 interface=wireguard-sts network=10.10.0.0

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

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

/ip firewall filter
add action=accept chain=input dst-port=34567 in-interface=ether1 protocol=udp

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

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

mikrotik-wireguard-003.png

В терминале:

/interface wireguard peers
add allowed-address=10.10.0.2/32,192.168.233.0/24 interface=wireguard-sts public-key="9pVP67ehKtQEr6BV46X9SuQrdvys+1QeVT0oeUg71wo="

Еще раз напомним, что вся адресация внутри WireGuard сети назначается администратором вручную и явно прописывается для каждого пира с обоих сторон. Это один из недостатков WireGuard, который следует из его простоты.

С другой стороны, у нас, допустим, будет Windows. Быстро настраиваем там новый туннель, в разделе Interface добавляем выделенный узлу адрес, а в разделе Peer указываем публичный ключ Mikrotik, его адрес и порт, а в разделе разрешенных адресов добавим адрес WireGuard интерфейса и сети за роутером.

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

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

Mikrotik как инициатор (клиент)

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

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

mikrotik-wireguard-007.png

Или вводим команду:

/interface wireguard
add listen-port=13231 mtu=1420 name=wireguard-inet

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

mikrotik-wireguard-008.png

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

/ip address
add address=10.20.0.105/24 interface=wireguard-inet network=10.20.0.0

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

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

mikrotik-wireguard-009.png

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

/interface wireguard peers
add allowed-address=0.0.0.0/0 endpoint-address=x.x.x.x endpoint-port=34567 interface=wireguard-inet persistent-keepalive=25s public-key="kKxQ4wF+kUrpsTGwjMvlSwX45WV4nixG76/+sKlzEQA="

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

mikrotik-wireguard-010.png

Перезапускаем службу и соединение будет установлено. Но трафик как шел через основного провайдера – так и идет. Почему так? Заглянем в таблицу маршрутизации, которая находится в IP – Routes, как видим нулевой маршрут как был через основного провайдера – так и остался. В отличие от официальных пакетов WireGuard, которые управляют маршрутами на хосте, в Mikrotik все отдано в руки администратора.

А дальше все зависит от того, что именно мы хотим получить. Если нам нужен доступ через туннель к отдельным узлам, то просто достаточно создать для них отдельные маршруты. Создаем новое правило, в котором указываем нужный адрес и шлюз, в качестве которого будет выступать противоположный конец WireGuard туннеля.

mikrotik-wireguard-012.png

Теперь снова проверяем (мы добавили маршрут к сервису проверки IP) – все хорошо, мы обращаемся к данному узлу через VPN-сервер.

Добавить маршрут из командной строки можно следующим образом:

/ip route
add disabled=yes distance=1 dst-address=172.67.74.128/32 gateway=10.20.0.1 pref-src=0.0.0.0 routing-table=main scope=30 suppress-hw-offload=no target-scope=10

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

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

mikrotik-wireguard-014.png

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

/ip route
add disabled=no distance=1 dst-address=0.0.0.0/1 gateway=10.20.0.1 pref-src="" routing-table=main scope=30 suppress-hw-offload=no target-scope=10
add disabled=no distance=1 dst-address=128.0.0.0/1 gateway=10.20.0.1 pref-src="" routing-table=main scope=30 suppress-hw-offload=no target-scope=10

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

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

mikrotik-wireguard-015.png

Или:

/ip route
add disabled=no dst-address=x.x.x.x/32 gateway=192.168.3.1 routing-table=main suppress-hw-offload=no

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

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

mikrotik-wireguard-016.png

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

Дополнительные материалы.
Отобразить…

Mikrotik

  1. Оборудование MikroTik класса SOHO. Общий обзор и сравнение возможностей
  2. Производительность младших моделей Mikrotik hEX и hAP. Экспресс-тестирование
  3. Базовая настройка роутера MikroTik
  4. Расширенная настройка DNS и DHCP в роутерах Mikrotik
  5. Автоматическое резервное копирование настроек Mikrotik на FTP
  6. Проброс портов и Hairpin NAT в роутерах Mikrotik
  7. Настройка IPTV в роутерах Mikrotik на примере Ростелеком
  8. Настройка VPN-подключения в роутерах Mikrotik
  9. Настройка черного и белого списков в роутерах Mikrotik
  10. Настройка выборочного доступа к сайтам через VPN на роутерах Mikrotik
  11. Настройка OpenVPN-сервера на роутерах Mikrotik
  12. Безопасный режим в Mikrotik или как всегда оставаться на связи
  13. Настройка Proxy ARP для VPN-подключений на роутерах Mikrotik
  14. Настраиваем Port Knocking в Mikrotik
  15. Резервирование каналов в Mikrotik при помощи рекурсивной маршрутизации
  16. Настраиваем родительский контроль на роутерах Mikrotik
  17. Настраиваем IKEv2 VPN-сервер на роутерах Mikrotik с аутентификацией по сертификатам
  18. Расширенная настройка Wi-Fi на роутерах Mikrotik. Режим точки доступа
  19. Mikrotik CHR – виртуальный облачный роутер
  20. Настройка контроллера CAPsMAN (бесшовный Wi-Fi роуминг) на Mikrotik
  21. Настройка VPN-подключения на роутерах Mikrotik если подсети клиента и офиса совпадают
  22. Настраиваем использование DNS over HTTPS (DoH) на роутерах Mikrotik
  23. Настройка PPTP или L2TP VPN-сервера на роутерах Mikrotik
  24. Установка Mikrotik CHR на виртуальную машину Proxmox
  25. Защита RDP от перебора паролей при помощи оборудования Mikrotik
  26. Настройка SSTP VPN-сервера на роутерах Mikrotik
  27. Настройка выборочного доступа к сайтам через VPN с автоматическим получением маршрутов по BGP на роутерах Mikrotik
  28. Особенности эксплуатации CA на роутерах Mikrotik: резервное копирование, экспорт и импорт сертификатов
  29. Настройка туннелей GRE и IPIP на роутерах Mikrotik
  30. Правильное использование Fast Path и FastTrack в Mikrotik
  31. DHCP Snooping – настройка защиты от неавторизованных DHCP-серверов на оборудовании Mikrotik
  32. Работа оборудования Mikrotik в режиме беспроводной станции (клиента)
  33. Используем режим ARP reply-only для повышения безопасности сети на оборудовании Mikrotik

The Dude

  1. The Dude. Установка и быстрое начало работы
  2. Централизованное управление обновлением RouterOS при помощи The Dude
  3. Централизованный сбор логов Mikrotik на сервер The Dude

Свежие комментарии

Подписка

Лучшие статьи

Рубрики

Популярное

1 wireguard 342 views

WAREGUARD

WireGuard — это современный протокол для организации VPN, написанный с нуля, бесплатный и с открытыми исходниками. В отличие от OpenVPN или IPSec, он намного проще и легче.
gitlab
Previous Story

30 команд Git, необходимых для освоения интерфейса командной строки Git

screen
Next Story

Linux – начинающим. Screen – многозадачность в терминале и ни единого разрыва!

Latest from Blog

Поиск и замена URL в MYSQL

Используйте сценарии MySQL для поиска и замены URL-адресов в базе данных Другой способ поиска и замены старых URL-адресов в базе данных – использование сценариев MySQL. Этот метод очень полезен, если у вас

POSTGRESQL 16 + CЕРВЕР 1С X64 И 1С 8.3.24

Для начала, в какой среде будем работать: Наша задача: Предполагается, что Debian на который мы установим как PostgreSQL так и Сервер 1С установлен (Установка по умолчанию). Для начала проверим «локаль»: Как видим

HADOOP

Hабор инструментов для разработки программ и обеспечения среды для их запуска в распределенной среде. Позволяет создавать большие кластеры и упрощает процесс управления ими. Является одним из элементов конвейеров обработки больших данных. Разработан на Java фондом Apache

Обновление mySQL с версии 5.7 до 8.0

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

11 советов по настройке файла wp-config.php

Скорость: Отключите сохраненные версии… Сейчас! Функция сохранения версий записей включена по умолчанию, но может привести к значительному “раздуванию” базы данных. Сохраненные версии существуют для того, чтобы вы могли откатиться к предыдущей версии записи,
Go toTop

Don't Miss

wireguard

WAREGUARD

WireGuard — это современный протокол для организации VPN, написанный с нуля, бесплатный