WireGuard – Быстрый, современный и безопасный VPN-туннель для Linux

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

Предназначена для использования в различных ситуациях и может быть развернута на встроенных интерфейсах, полностью загруженных маршрутизаторах основного уровня и суперкомпьютерах; работает под управлением операционных систем Linux, Windows, macOS, BSD, iOS и Android.

Рекомендуемое чтение: 13 лучших VPN-сервисов с пожизненной подпиской

Представляет собой крайне простой, но мощный интерфейс, нацеленный на простоту настройки и развертывания, аналогично SSH. Его ключевые особенности включают простой сетевой интерфейс, маршрутизацию криптографических ключей, встроенную поддержку роуминга и контейнеров.

Обратите внимание, что на момент написания статьи он находится в стадии активной разработки: некоторые его части работают над стабильным релизом 1.0, в то время как другие уже находятся там (работают нормально).

В этой статье вы узнаете, как установить и настроить WireGuard в Linux для создания VPN-туннеля между двумя хостами Linux.

Тестовая среда

Для этого руководства наша настройка (имя хоста и публичный IP) следующая:

Node 1 : tecmint-appserver1: 		10.20.20.4
Node 2 : tecmint-dbserver1: 		10.20.20.3

Как установить WireGuard в дистрибутивах Linux

Войдите в оба узла и установите WireGuard, используя соответствующую команду для ваших дистрибутивов Linux следующим образом.

Установите WireGuard в RHEL 8

$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
$ sudo subscription-manager repos --enable codeready-builder-for-rhel-8-$(arch)-rpms
$ sudo yum copr enable jdoss/wireguard
$ sudo yum install wireguard-dkms wireguard-tools

Установите WireGuard в CentOS 8

$ sudo yum install epel-release
$ sudo yum config-manager --set-enabled PowerTools
$ sudo yum copr enable jdoss/wireguard
$ sudo yum install wireguard-dkms wireguard-tools

Установите WireGuard в RHEL/CentOS 7

$ sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ sudo curl -o /etc/yum.repos.d/jdoss-wireguard-epel-7.repo https://copr.fedorainfracloud.org/coprs/jdoss/wireguard/repo/epel-7/jdoss-wireguard-epel-7.repo
$ sudo yum install wireguard-dkms wireguard-tools

Установите WireGuard в Fedora

$ sudo dnf install wireguard-tools

Установите WireGuard в Debian

# echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
# printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
# apt update
# apt install wireguard

Установите WireGuard в Ubuntu

$ sudo add-apt-repository ppa:wireguard/wireguard
$ sudo apt-get update
$ sudo apt-get install wireguard

Установите WireGuard в OpenSUSE

$ sudo zypper addrepo -f obs://network:vpn:wireguard wireguard
$ sudo zypper install wireguard-kmp-default wireguard-tools

Настройка туннеля VPN WireGuard между двумя хостами Linux

Когда установка wireguard завершена на обоих узлах, вы можете перезагрузить узлы или добавить модуль wireguard из ядра Linux, используя следующую команду на обоих узлах.

$ sudo modprobe wireguard
OR
# modprobe wireguard

Затем сгенерируйте открытый и закрытый ключи, закодированные в base64, используя утилиту wg на обоих узлах, как показано.

---------- On Node 1 ---------- 
$ umask 077
$ wg genkey >private_appserver1

---------- On Node 2 ----------
$ umask 077
$ wg genkey >private_dbserver1
$ wg pubkey < private_dbserver1
Generate Keys on Both Nodes

Затем вам нужно создать сетевой интерфейс (например, wg0) для WireGuard на пирах, как показано ниже. Затем назначьте IP-адреса для созданного нового сетевого интерфейса (в этом руководстве мы будем использовать сеть 192.168.10.0/24).

---------- On Node 1 ---------- 
$ sudo ip link add dev wg0 type wireguard
$ sudo ip addr add 192.168.10.1/24 dev wg0

---------- On Node 2 ----------
$ sudo ip link add dev wg0 type wireguard
$ sudo ip addr add 192.168.10.2/24 dev wg0

Чтобы просмотреть подключенные сетевые интерфейсы на пирах и их IP-адреса, используйте следующую команду IP.

$ ip ad
View Network Interfaces with IP Addresses

Затем назначьте закрытый ключ для каждого пира сетевому интерфейсу wg0 и активируйте интерфейс, как показано.

---------- On Node 1 ---------- 
$ sudo wg set wg0 private-key ./private_appserver1
$ sudo ip link set wg0 up

---------- On Node 2 ----------
$ sudo wg set wg0 private-key ./private_dbserver1
$ sudo ip link set wg0 up

Теперь, когда оба ссылки активны, каждая из них сопровождается своими закрытыми ключами, запустите утилиту wg без аргументов, чтобы получить конфигурацию интерфейсов WireGuard на пирах. Затем создайте свой туннель VPN WireGuard следующим образом.

Пир (открытый ключ), allowed-ips (сеть/маска подсети) и endpoint (публичный ip:порт) принадлежат противоположному пиру.

----------  On Node1 (Use the IPs and Public Key of Node 2) ---------- 
$ sudo wg
$ sudo wg set wg0 peer MDaeWgZVULXP4gvOj4UmN7bW/uniQeBionqJyzEzSC0= allowed-ips 192.168.10.0/24  endpoint  10.20.20.3:54371

----------  On Node2 (Use the IPs and Public Key of Node 1) ----------
$ sudo wg
$ sudo wg set wg0 peer 6yNLmpkbfsL2ijx7z996ZHl2bNFz9Psp9V6BhoHjvmk= allowed-ips 192.168.10.0/24 endpoint  10.20.20.4:42930
Create Wireguard VPN Tunnel Between Linux Machines

Тестирование туннеля VPN WireGuard между системами Linux

После создания туннеля VPN WireGuard, выполните пинг противоположного пира, используя адрес сетевого интерфейса WireGuard. Затем снова запустите утилиту wg, чтобы подтвердить установление связи между пирами, как показано.

---------- On Node 1 ----------
$ ping 192.168.10.2
$ sudo wg

---------- On Node 2 ----------
$ ping 192.168.10.1
$ sudo wg
Test Wireguard VPN Tunnel Between Linux Machines

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

Source:
https://www.tecmint.com/wireguard-secure-vpn-tunnel-for-linux/