UNIXAWESOME

WireGuard. Установка и настройка

#wireguard #vpn #security

wireguard.png

WireGuard – VPN протокол с открытым исходным кодом, обеспечивающий высокую скорость при минимальной нагрузке.

В современном мире VPN нужен практически всем. Ведь не только для доступа к заблокированным ресурсам можно получить доступ, но и для объединения разных устройств подключенных к интернету и расположенных географически в разных местах.

Особенности WireGuard

test2.png

Установка

Установка wireguard будет производится на VPS с ОС Debian 11.

Для начала подключаемся к нашему серверу по ssh.

Ставим последние обновления.

1apt update
2apt upgrade

Теперь можно устанавливать WireGuard

1apt install wireguard

Для Debian 10 необходимо будет добавить backport репозиторий.

1echo "deb http://deb.debian.org/debian buster-backports main" | sudo tee /etc/apt/sources.list.d/buster-backports.list

И после установки скорее всего потребуется перезагрузка для Debian 10

На одноранговом узле, который будет действовать как «сервер», необходимо включить пересылку IPv4 с помощью sysctl

1sysctl -w net.ipv4.ip_forward=1

Чтобы сделать изменение постоянным нужно добавить net.ipv4.ip_forward = 1 в файл /etc/sysctl.d/99-sysctl.conf.

Настройка firewall

Нужно открыть порт 51820/UDP

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

Генерируем публичный и приватный ключ сервера.

1wg genkey | tee /etc/wireguard/privatekey | wg pubkey | tee /etc/wireguard/publickey

Создаём конфиг файл.

1vim /etc/wireguard/wg0.conf

И добавим в него следующее:

1[Interface]
2Address = 10.0.0.1/24
3ListenPort = 51820
4PrivateKey = <SERVER_PRIVATE_KEY>
5
6PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
7PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Запуск сервиса wireguard

Теперь пробуем поднять наш wireguard интерфейс. Запускаем службу и сразу смотрим статус или всё запустилось.

1systemctl start wg-quick@wg0
2systemctl status wg-quick@wg0

Если запустилось нормально, можем ставить в автозагрузку:

1systemctl enable wg-quick@wg0

Также можно посмотреть статус именно нашего интерфейса wg0 и подключенных к нему пиров.

1wg show wg0

Настройка клиента linux

Устанавливаем wireguard пакет

Archlinux

1pacman -S wireguard-tools

Ubuntu/Debian

1apt install wireguard

На сервере генерируем ключи для клиента:

1wg genkey | tee /etc/wireguard/laptop_privatekey | wg pubkey | tee /etc/wireguard/laptop_publickey

И теперь обновим на сервере файл wg0.conf

1vim /etc/wireguard/wg0.conf

И добавим туда новый раздел с новым клиентом

1...
2[Peer]
3# laptop
4PublicKey = <СLIENT_PUBLIC_KEY>
5AllowedIPs = 10.0.0.2/32

Перезапускаем сервис после добавления нового клиента

1systemctl restart wg-quick@wg0

На клиенте создаем конфигурационный файл в папке /etc/wireguard/, называем его как-нибудь laptop.conf:

 1[Interface]
 2PrivateKey = <CLIENT_PRIVATE_KEY>
 3Address = 10.0.0.2/32
 4DNS = 10.0.0.1
 5
 6[Peer]
 7PublicKey = <SERVER_PUBKEY>
 8Endpoint = <SERVER_IP>:51820
 9AllowedIPs = 0.0.0.0/0, ::/0
10PersistentKeepalive = 20

Запускаем сервис и сразу смотрим статус на клиенте:

1systemctl start wg-quick@laptop
2systemctl start wg-quick@laptop

Также созданный файл для клиента можна импортировать через GUI Network менеджера.

Настройка клиента Android

Устанавливаем из андроид маркета офф. приложение wireguard

На сервере делаем ключи для клиента:

1wg genkey | tee /etc/wireguard/android_privatekey | wg pubkey | tee /etc/wireguard/android_publickey

Добавляем на сервере в файл wg0.conf новый пир:

1...
2[Peer]
3# Android phone
4PublicKey = <СLIENT_PUBLIC_KEY>
5AllowedIPs = 10.0.0.3/32

Перезапускаем сервис на сервере:

1systemctl restart wg-quick@wg0

Создаем конфиг файл для телефона. Подставив ключи и IP адреса.

 1[Interface]
 2PrivateKey = <CLIENT_PRIVATE_KEY>
 3Address = 10.0.0.3/32
 4DNS = 10.0.0.1
 5
 6[Peer]
 7PublicKey = <SERVER_PUBKEY>
 8Endpoint = <SERVER_IP>:51820
 9AllowedIPs = 0.0.0.0/0, ::/0
10PersistentKeepalive = 20

Нужно перенести этот конфиг на смартфон, но значительно удобнее использовать QR код.

Для этого нужно установить qrencode

1apt install qrencode

Дальше указываем конфиг файл и генерируем QR код.

1qrencode -t ansiutf8 < android.conf

После этого в консоли мы увидим QR код и нам остается только отсканировать его через WireGuard на мобильном приложении. qrencode.png

Настройка клиента Mikrotik

Для роутеров Mikrotik поддержка wireguard есть только в 7 версии routerOS, а она пока что в стадии development(не для продакшена).

Поставил версию 7.1rc4 на MikroTik hAP lite (RB941-2nD), пока работает стабильно.

На момент написания поста доступна версия 7.1rc4

Добавляем wireguard интерфейс. wg1.png

Добавляем пир. Указав созданный интерфейс, публичный ключ нашего сервера, IP адрес сервера, порт, разрешенные сети(0.0.0.0/0 для всего трафика или только для доступа к нашей сети 10.0.0.0/24) и KeepAlive. wg2.png

И обязательно добавляем ip адрес на наш wireguard интерфейс. IP > Addresses Нажимаем ‘+’, вписываем наш ip, который мы выбрали для клиента(например 10.0.0.3/24), и выбираем наш интерфейс. addresses.png

Reply to this post by email ↪