WireGuard на CentOS: установка и настройка
Пошаговое руководство по установке WireGuard на CentOS 7/8/9: добавление репозиториев, генерация ключей, настройка wg0.conf, запуск и решение типичных проблем.
Содержание
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-toolsCentOS 8:
sudo dnf install epel-release elrepo-release
sudo dnf install kmod-wireguard wireguard-toolsCentOS 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).
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ