Как настроить VPN-сервер WireGuard на CentOS

WireGuard — это приложение, предназначенное для создания защищенной виртуальной частной сети (VPN) с удобным интерфейсом и простой настройкой. Используя надежные криптографические протоколы и алгоритмы, программа обеспечивает шифрование данных. Изначально разработанная для ядра Linux, программа WireGuard была расширена до совместимости с Windows, macOS, FreeBSD, iOS и Android.

Шаг 1. Установка сервера WireGuard на CentOS

Для начала получите последние обновления, выполнив следующие команды:

sudo yum update 

sudo dnf update

Для установки необходимых модулей ядра и инструментов WireGuard включите репозитории EPEL и Elrepo:

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

Шаг 2. Генерация закрытого и открытого ключей

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

Перед созданием пары ключей перейдите в каталог.

Перейдите в каталог 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

Запишите оба ключа, так как они потребуются в дальнейшем.

Шаг 3. Настройка серверной конфигурации

Для начала настройки сервера 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.0.2/32

Извлеките сгенерированный ранее закрытый ключ и вставьте его в поле PrivateKey.

Затем сгенерируйте пару ключей для клиента, скопируйте открытый ключ клиента и вставьте его в поле PublicKey. Для копирования значения ключа воспользуйтесь следующими командами:

sudo cat /etc/wireguard/public.key

sudo cat /etc/wireguard/private.key

Шаг 4. Настройка FireWall

По умолчанию брандмауэр ограничивает все соединения между внутренней сетью (wg0) и публичной сетью (eth0). Давайте изменим эту конфигурацию с помощью следующих команд:

sudo firewall-cmd —add-interface=wg0 —zone=internal

sudo firewall-cmd —permanent —zone=internal

Шаг 5. Запуск WireGuard и включение его при загрузке

Теперь сервер готов к запуску. Для запуска WireGuard воспользуйтесь командой wg-quick и укажите имя нового интерфейса:

wg-quick up wg0

Если конфигурация верна, то на экране появится следующее окно:

[WireGuard for CentOS — Screenshot].

Чтобы проверить состояние сервера WireGuard, введите:

wg show