Pull to refresh

MikroTik: L2VPN = EoIP + WireGuard (часть 1)

Reading time5 min
Views27K
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.

Tags:
Hubs:
Total votes 13: ↑12 and ↓1+15
Comments31

Articles