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
Затем вам необходимо создать сетевой интерфейс (например, wg0) для Wiregaurd на узлах, как показано ниже. Затем назначьте 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
Затем назначьте закрытый ключ для каждого узла сетевому интерфейсу 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 (маска сети/подсети) и конечная точка (публичный 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
Тестирование 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
На этом всё! WireGuard — это современное, безопасное, простое, но мощное и легко настраиваемое VPN-решение будущего. Он находится в стадии интенсивного развития, поэтому работа продолжается. Вы можете получить дополнительную информацию, особенно о его внутренней работе и других параметрах конфигурации, на домашней странице WireGuard.