
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.
