Быстрый старт Сети Обновлено 7 CentOS

WireGuard на CentOS: установка и настройка

Пошаговое руководство по установке WireGuard на CentOS 7/8/9: добавление репозиториев, генерация ключей, настройка wg0.conf, запуск и решение типичных проблем.

WireGuardCentOSVPNнастройкаVPN-сервер
Содержание
КороткоWireGuard устанавливается на CentOS через EPEL и ELRepo (для 7/8) или только EPEL (для 9). После генерации ключей создаётся конфиг wg0.conf, включается автозапуск systemd, открывается UDP-порт и активируется IP-forwarding. Основные проблемы решаются проверкой прав на ключи, SELinux и firewall.

WireGuard — современный VPN-протокол, встроенный в ядро Linux (начиная с версии 5.6). Он работает поверх UDP, отличается простотой настройки и высокой производительностью. CentOS, как серверная операционная система, часто используется в качестве VPN-шлюза. В этой статье мы разберём установку и настройку WireGuard на CentOS 7, 8 и 9.

Подготовка системы и установка WireGuard

Перед установкой обновите пакеты: на CentOS 7/8 используйте yum, на CentOS 9 — dnf. Затем добавьте необходимые репозитории. Для CentOS 7 и 8 потребуются EPEL и ELRepo. Для CentOS 9 достаточно EPEL, поскольку модуль WireGuard уже присутствует в ядре (проверьте для своей версии).

CentOS 7:

sudo yum install epel-release elrepo-release
sudo yum install kmod-wireguard wireguard-tools

CentOS 8:

sudo dnf install epel-release elrepo-release
sudo dnf install kmod-wireguard wireguard-tools

CentOS 9:

sudo dnf install epel-release
sudo dnf install wireguard-tools

После установки убедитесь, что модуль загружается:

sudo modprobe wireguard

Если возникает ошибка, перезагрузите систему или установите DKMS-версию пакета.

Генерация ключей и создание конфигурации

Создайте каталог для конфигурации с ограниченными правами:

sudo mkdir -p /etc/wireguard
sudo chmod 700 /etc/wireguard

Сгенерируйте приватный и публичный ключи:

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

Задайте правильные права на приватный ключ:

sudo chmod 600 /etc/wireguard/privatekey

Создайте файл конфигурации интерфейса /etc/wireguard/wg0.conf. Пример для сервера:

[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <содержимое privatekey>

[Peer]
PublicKey = <публичный ключ клиента>
AllowedIPs = 10.0.0.2/32

Если нужно разрешить клиенту доступ к локальной сети за сервером, добавьте соответствующие подсети в AllowedIPs и включите IP-forwarding. Конфигурация клиента аналогична, но с его приватным ключом и сервером в качестве пира.

Запуск и проверка работы

Включите и запустите интерфейс:

sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0

Проверьте статус:

sudo wg show
ip a show wg0

Откройте UDP-порт в firewalld:

sudo firewall-cmd --permanent --add-port=51820/udp
sudo firewall-cmd --reload

Активируйте пересылку пакетов:

echo 'net.ipv4.ip_forward=1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Теперь проверьте связь с пиром, например: ping 10.0.0.2.

Типичные проблемы и их решение

1. WireGuard не стартует. Проверьте права на ключи (600 для приватного) и наличие модуля lsmod | grep wireguard.

2. Нет соединения. Убедитесь, что UDP-порт открыт в firewall, и SELinux не блокирует трафик (для теста можно перевести в permissive: sudo setenforce 0).

3. Клиент подключается, но нет доступа в интернет. Проверьте IP-forwarding и настройте NAT: sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE (не забудьте сохранить правила).

4. Ошибка «Unable to load module». Установите DKMS-версию или пересоберите ядро с поддержкой WireGuard.

Мини-чеклист

  • Обновите систему: sudo yum update или sudo dnf update.
  • Добавьте EPEL и ELRepo (для CentOS 7/8) и установите kmod-wireguard и wireguard-tools.
  • Сгенерируйте ключи и создайте конфигурацию /etc/wireguard/wg0.conf с правильными правами.
  • Откройте UDP-порт в firewall и включите net.ipv4.ip_forward=1.

Частые ошибки

  • Забывают изменить права на приватный ключ (должен быть 600).
  • Не открывают UDP-порт в firewalld, из-за чего пиры не могут подключиться.
  • Не включают IP-forwarding на сервере, поэтому клиенты не получают доступ к внешней сети.
  • Игнорируют SELinux — он может блокировать WireGuard; настройте политики или временно отключите для диагностики.

Источники и документация

FAQ

Можно ли установить WireGuard на CentOS 6?

Официально нет — CentOS 6 вышел из поддержки, и репозитории ELRepo не предоставляют kmod-wireguard для этой версии. Рекомендуется обновить систему или использовать более старый VPN.

Как добавить несколько клиентов?

Добавьте в секцию [Peer] повторно с другим PublicKey и AllowedIPs для каждого клиента, например AllowedIPs = 10.0.0.3/32.

Что делать, если WireGuard не видит интерфейс после перезагрузки?

Проверьте, что сервис wg-quick@wg0 включён: systemctl enable wg-quick@wg0. Также убедитесь, что модуль wireguard загружается автоматически (добавьте его в /etc/modules-load.d или пересоберите initramfs).

Хотите перейти сразу к рабочему доступу?

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

Получить доступ

Дальше по теме

Связанные статьи