MikroTik: L2VPN = EoIP + WireGuard

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

WireGuard is a communication protocol and free and open-source software that implements encrypted virtual private networks (VPNs), and was designed with the goals of ease of use, high speed performance, and low attack surface. It aims for better performance and more power than IPsec and OpenVPN, two common tunneling protocols. The WireGuard protocol passes traffic over UDP.

Введение

Как позиционируют WireGuard это быстрый VPN нового поколения, в котором реализована современная криптография. Он изначально разрабатывался как более простая и удобная альтернатива существующим VPN.

Ну что, давайте протестируем данный протокол на примере Mikrotik. Возьмем версию прошивки Mikrotik RouterOS 7.1rc2 и протестируем.

Сделаем не просто связность, а реализуем схему: центральный офис + 2 удаленных офиса, все это на "серых" адресах, L2VPN (Ethernet over IP over WireGuard – нужно больше over) и подружим с CISCO. И должно у нас получиться, что-то вроде этого:

Начало

В данной статье я расскажу, как "поднять" сервер в облаке, установить WireGuard и подключить MikroTik'и к данному серверу как клиенты. И должны получить что-то вот это:

Все IP адреса открыты, как и пароли и ключи. Все делается в EVE-NG ради эксперимента.

Настройка сервера

Для размещения сервера потребуется VPS (VDS). Я буду использовать дешевый виртуальный сервер c операционной системой Ubuntu 20.04. Покупаем виртуальный сервер на любом хостинге. Для экспериментов я выбрал на ruvds.ru – цена около 240р.

Залогинимся на сервер с правами пользователя root и выполним следующие команды:

# устанавливаем Wireguard
apt update && apt upgrade 
apt install wireguard
# разрешаем проброс пакетов
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
# генерируем ключи для сервера:
wg genkey | tee /etc/wireguard/server_privatekey | wg pubkey | tee /etc/wireguard/server_publickey
# смотрим ключи для сервера:
root@ruvds-it403:~#
root@ruvds-it403:~# cat /etc/wireguard/server_publickey
Z2jNGtMYfqxYskx2mh5ekitESbD5C4l84nXreb2ykVg= 
root@ruvds-it403:~#
root@ruvds-it403:~# cat /etc/wireguard/server_privatekey
wJrG7cBytw3xhEJGFyOT7CvhsGgfFDVPzVlhUrXWGUo=
root@ruvds-it403:~#

Обязательно перезагрузите сервер!

Создадим конфигурационный файл /etc/wireguard/wg0.conf со следующим содержимым:

root@ruvds-it403:~# nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.7.0.1/24
ListenPort = 51820
PrivateKey = wJrG7cBytw3xhEJGFyOT7CvhsGgfFDVPzVlhUrXWGUo=

Запустим VPN-сервис и добавим его в автозагрузку:

wg-quick up wg0
systemctl enable wg-quick@wg0

Убедимся, что служба запустилась корректно:

root@ruvds-it403:~# wg show wg0
interface: wg0
  public key: Z2jNGtMYfqxYskx2mh5ekitESbD5C4l84nXreb2ykVg=
  private key: (hidden)
  listening port: 51820
root@ruvds-it403:~#

Настройка MikroTik

Задаем имя:

> system identity set name=Mik_OFFICE

Проверяем IP адрес, чтобы зайти через WEB

[admin@Mik_OFFICE] > ip address/print
Flags: D - DYNAMIC
Columns: ADDRESS, NETWORK, INTERFACE
#   ADDRESS           NETWORK      INTERFACE
0 D 192.168.1.196/24  192.168.1.0  ether1
[admin@Mik_OFFICE] >

Качаем новую прошивку и устанавливаем (на все устройства)

Заходим на устройство по WEB и закидываем прошивку в устройство

[admin@Mik_OFFICE] > system/reboot

Ну или так =)

Настройка WireGuard

Далее делаем настройку WireGuard клиента на MikroTik (лучше делать данные настройки из консоли, т.к. через Web у меня не завелось)

Создаем интерфейс wireguard с именем wg0:

interface/wireguard/add name=wg0

Проверяем:

[admin@Mik_OFFICE] >
[admin@Mik_OFFICE] > interface/wireguard/print
Flags: X - disabled; R - running
 0  R name="wg0" mtu=1420 listen-port=34529
      public-key="zeaqP+pXBqAJDJ2IfXy2bxIiQlfhs+FtNAY43yUkqUs=" 
[admin@Mik_OFFICE] >

Создаем пир:

/interface/wireguard/peers add allowed-address=10.7.0.1/24 interface=wg0 persistent-keepalive=20 public-key="Z2jNGtMYfqxYskx2mh5ekitESbD5C4l84nXreb2ykVg=" endpoint-address=193.124.115.192 endpoint-port=51820

Проверяем:

[admin@Mik_OFFICE] >
[admin@Mik_OFFICE] > /interface/wireguard/peers/print
Columns: INTERFACE, PUBLIC-KEY, ENDPOINT-ADDRESS, ENDPOINT-PORT
# INT  PUBLIC-KEY                                    ENDPOINT-ADDRESS  ENDPO
0 wg0  Z2jNGtMYfqxYskx2mh5ekitESbD5C4l84nXreb2ykVg=  193.124.115.192   51820
[admin@Mik_OFFICE] > 
[admin@Mik_OFFICE] >

Вешаем IP адрес на wg0:

ip address/add address=10.7.0.2/24 interface=wg0

Настройка сервера для работы с клиентами на MikroTik

Заходим на сервер и добавляем клиента Wireguard на сервер:

root@ruvds-it403:~# nano /etc/wireguard/wg0.conf
[Peer]
#Mik_OFFICE
PublicKey = zeaqP+pXBqAJDJ2IfXy2bxIiQlfhs+FtNAY43yUkqUs=
AllowedIPs = 10.7.0.2/32

Ребутаем сервис:

systemctl restart wg-quick@wg0
Читаем, если не заработало

Если вдруг будут ошибки или не получаться просто ребутните сервер и микротик

Проверяем:

root@ruvds-it403:~# wg show wg0
interface: wg0
  public key: Z2jNGtMYfqxYskx2mh5ekitESbD5C4l84nXreb2ykVg=
  private key: (hidden)
  listening port: 51820

peer: zeaqP+pXBqAJDJ2IfXy2bxIiQlfhs+FtNAY43yUkqUs=
  endpoint: 94.19.107.202:34529
  allowed ips: 10.7.0.2/32
  latest handshake: 21 seconds ago
  transfer: 212 B received, 92 B sent
root@ruvds-it403:~#

Пингуем сервер со стороны MikroTik'а и обратно (10.7.0.1, 10.7.0.2)

Аналогичным способом подключаем все оставшиеся MikroTik’и, незабываем редактировать файл /etc/wireguard/wg0.conf и systemctl restart wg-quick@wg0

Пингуем сервер со стороны MikroTik'ов и обратно (10.7.0.1, 10.7.0.2, 10.7.0.3, 10.7.0.4)

В итоге у нас должно получиться, что то того:

Файл /etc/wireguard/wg0.conf


[Interface]
Address = 10.7.0.1/24
ListenPort = 51820
PrivateKey = wJrG7cBytw3xhEJGFyOT7CvhsGgfFDVPzVlhUrXWGUo=

[Peer]
#Mik_OFFICE
PublicKey = zeaqP+pXBqAJDJ2IfXy2bxIiQlfhs+FtNAY43yUkqUs=
AllowedIPs = 10.7.0.2/32

[Peer]
#Mik_1
PublicKey = y+9MMhOZc042PejCyUY/jqlAaf5I5kn6hpuGlTJ1b0E=
AllowedIPs = 10.7.0.3/32

[Peer]
#Mik_2
PublicKey = XiCSEflrWYLvOEqd9e2AD6QEhktwIZ9q5NoNCQJVHUs=
AllowedIPs = 10.7.0.4/32

Проверяем:

root@ruvds-it403:~# wg show wg0
interface: wg0
  public key: Z2jNGtMYfqxYskx2mh5ekitESbD5C4l84nXreb2ykVg=
  private key: (hidden)
  listening port: 51820

peer: zeaqP+pXBqAJDJ2IfXy2bxIiQlfhs+FtNAY43yUkqUs=
  endpoint: 94.19.107.202:34529
  allowed ips: 10.7.0.2/32
  latest handshake: 16 seconds ago
  transfer: 180 B received, 92 B sent

peer: XiCSEflrWYLvOEqd9e2AD6QEhktwIZ9q5NoNCQJVHUs=
  endpoint: 94.19.107.202:9721
  allowed ips: 10.7.0.4/32
  latest handshake: 1 minute, 9 seconds ago
  transfer: 276 B received, 92 B sent

peer: y+9MMhOZc042PejCyUY/jqlAaf5I5kn6hpuGlTJ1b0E=
  endpoint: 94.19.107.202:1363
  allowed ips: 10.7.0.3/32
  latest handshake: 1 minute, 21 seconds ago
  transfer: 276 B received, 92 B sent
root@ruvds-it403:~#
root@ruvds-it403:~#

В итоге у нас получилось вот это:

В следующей статье я напишу как поднять EoIP, VLAN, trunk и все это делать связать между собой, чтобы все это заработало.

P.S.

Это моя первая статься, прошу не судить строго. И да, VPLS тоже будет. Сейчас речь, о том, как быстро сделать L2VPN на базе MikroTik.

Источник: https://habr.com/ru/post/577328/


Интересные статьи

Интересные статьи

Разработчик WireGuard VPN Джейсон Доненфельд выпустил новую версию WireGuardNT, которая работает в режиме ядра WindowsNT (7, 8.1, 10, 11, 2012, 2016, 2019, 2022). Перенос всего кода в ядро значите...
Выгрузка пользователей из 1C ЗУП в Битрикс24 или правдивая история о том как настроить интеграцию 1С-Битрикс24 с ЗУП без 1С-ника.В жизни так бывает, причём бывает чаще чем хотелось бы, хоть в целом и ...
В 1С-Битрикс: Управление сайтом (как и в Битрикс24) десятки, если не сотни настраиваемых типов данных (или сущностей): инфоблоки, пользователи, заказы, склады, форумы, блоги и т.д. Стр...
Этот пост будет из серии, об инструментах безопасности, которые доступны в Битриксе сразу «из коробки». Перечислю их все, скажу какой инструмент в какой редакции Битрикса доступен, кратко и не очень р...
Тема статьи навеяна результатами наблюдений за методикой создания шаблонов различными разработчиками, чьи проекты попадали мне на поддержку. Порой разобраться в, казалось бы, такой простой сущности ка...