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.