wireguard

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

/

Если вас интересует тема 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
Previous Story

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

Next Story

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

Latest from Blog

Zabbix – Docker – Raspberry Pi

Для начала установим Portainer – веб-интерфейс для управления docker-контейнерами. Бесплатно, удобно, подойдет новичкам в docker. Установка

Сетевая папка/диск в Linux

x.x.x.x адрес шары /mnt/shara точка монтирования user пользователь с доступом к шаре 1234 пароль пользователя Для

Памятка SSH

В статье описаны продвинутые функций OpenSSH, которые позволяют сильно упростить жизнь системным администраторам и программистам, которые

0 £0.00