WireGuard - это приложение, которое может обеспечить безопасную виртуальную частную сеть (VPN), оно достаточно простое в использовании и настройке. Оно использует надежные криптографические протоколы и алгоритмы для шифрования данных. Разработанное исключительно для ядра Linux, оно может быть развернуто и на Windows, macOS, FreeBSD, iOS, а так же Android.
Как установить WireGuard на CentOS 8.3:
- Как установить сервер WireGuard на CentOS
- Как сгенерировать открытый и закрытый ключ
- Как настроить FireWall
- Как настроить серверную конфигурацию
- Как запустить WireGuard и включить его при загрузке
В нашем случае мы будем использовать CentOS 8.3 для установки WireGuard.
Установка сервера WireGuard на CentOS
Скачаем последние обновления с помощью данных команд:
sudo yum update
sudo dnf update
Для того, чтобы установить WireGuard сервер войдите на ваш Linux-сервер, после входа добавьте репозитории EPEL и Elrepo для установки модулей ядра и инструментов WireGuard.
sudo dnf install epel-release elrepo-release -y
Убедимся, что у нас включены репозиторий PowerTools, так как пакеты EPEL могут зависеть от пакетов из него:
sudo yum install 'dnf-command(config-manager)'
sudo yum config-manager --set-enabled PowerTools
Прежде чем мы сможем установить модуль ядра WireGuard, включим его официальный репозиторий:
sudo yum copr enable jdoss/wireguard
Теперь установим WireGuard:
sudo yum install wireguard-dkms wireguard-tools
Генерация закрытого и открытого ключей
WireGuard работает путем шифрования соединения с помощью пары криптографических ключей. Пара ключей используется путем передачи открытого ключа другой стороне, которая затем может зашифровать свое сообщение таким образом, что оно может быть расшифровано только с помощью соответствующего закрытого ключа. Для обеспечения безопасности двусторонней связи каждая сторона должна иметь собственные закрытый и открытый ключи, так как каждая пара обеспечивает только односторонний обмен сообщениями.
Перед генерацией пары ключей перейдите в каталог
cd /etc/wireguard
Установите разрешение на эту директорию:
umask 077
Чтобы сгенерировать пару ключей, введите следующую команду:
wg genkey | tee private.key | wg pubkey > public.key
Чтобы просмотреть сгенерированные ключи, воспользуйтесь командами:
ls -l privatekey publickey
sudo cat privatekey
Обязательно запишите этот ключ, он понадобиться нам далее.
sudo cat publickey
Также, обязательно запишите этот ключ, он понадобиться нам далее.
Настройка FireWall
По умолчанию firewall прекращает все коммуникации между внутренней (wg0) и общедоступной сетью (eth0).
Изменим это с помощью данных команд:
sudo firewall-cmd --add-interface=wg0 --zone=internal
sudo firewall-cmd --permanent --zone=internal --add-masquerade
Настройка серверной конфигурации
Чтобы начать настройку сервера WireGuard, перейдите в папку /etc/wireguard и создайте файл wg0.conf
sudo nano /etc/wireguard/wg0.conf
Добавьте в файл конфигурации следующие директивы и заполните данные созданными до этого ключами:
[Interface]
PrivateKey = <contents-of-server-privatekey>
Address = 10.0.0.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
ListenPort = 51820
[Peer]
PublicKey = <contents-of-client-publickey>
AllowedIPs = 10.0.0.2/32
Скопируйте закрытый ключ, который мы сгенерировали ранее, и вставьте его в PrivateKey.
Аналогично нужно сгенерировать пару ключей для клиента, скопируйте открытый ключ клиента и вставьте его в PublicKey.
Чтобы скопировать значение ключа, выполните следующую команду:
sudo cat /etc/wireguard/public.key
sudo cat /etc/wireguard/private.key
Запуск WireGuard и включение его при загрузке
Теперь мы готовы к запуску сервера, для запуска WireGuard мы используем wg-quick и указываем имя нового интерфейса:
wg-quick up wg0
Если конфигурация выполнена идеально, вы увидите следующий экран
чтобы проверить статус работы сервера WireGuard введите:
wg show
Поздравляю, мы успешно подняли сервер WireGuard!