Установка и настройка WireGuard на Rocky Linux 9

WireGuard — это современный открытый VPN-протокол, альтернативный IPSec, IKEv2 и OpenVPN. WireGuard спроектирован для Linux/Unix-подобных ОС: он реализован в пространстве ядра Linux, что делает его быстрым и надёжным. WireGuard используется для создания защищённых туннелей между двумя и более узлами.
WireGuard стремится заменить более старые VPN-протоколы, оставаясь лёгким, быстрым и простым в настройке, не жертвуя при этом криптографической надёжностью. В основе протокола — современные криптографические примитивы: Noise, Curve25519, ChaCha20-Poly1305, BLAKE2, SipHash24, HKDF и другие безопасные конструкции.
В этом руководстве подробно показано, как установить и настроить WireGuard-сервер на Rocky Linux 9 и как подключить клиентскую машину (на примере Rocky Linux). Команды можно адаптировать для других дистрибутивов Linux.
Что вы получите из руководства
- Полная пошаговая инструкция для сервера и клиента.
- Объяснение ключевых параметров конфигурации (Address, ListenPort, AllowedIPs, Endpoint, PersistentKeepalive и пр.).
- Правильная организация проброса пакетов и NAT через firewalld.
- Проверки и отладка: команды wg, ip, resolvectl, systemctl, ping.
- Рекомендации по безопасности и контроль списков задач для администратора.
Важно: в примерах используются файлы в /etc/wireguard и примерные IP-сети 10.8.0.0/24. Замените значения на подходящие для вашей инфраструктуры.
Преимущества и ограничения WireGuard
- Преимущества: простота конфигурации, небольшая кодовая база, высокая производительность, современная криптография.
- Ограничения: статическая модель peers (в классическом варианте — публичные ключи привязаны к адресам), меньше интеграций с корпоративным IAM по сравнению с IPSec в некоторых сценариях.
Важно: WireGuard хранит ключи в файловой системе; удобнее автоматизировать управление ключами и ротацию в вашей системе управления конфигурацией.
Краткие требования
- Rocky Linux 9 сервер (в примере hostname: wireguard-rocky).
- Неразрешённый пользователь с sudo/root правами.
- SELinux в режиме permissive (или корректные политические правила, если включён в enforcing).
Включение модуля WireGuard в ядре
В Rocky Linux 9 по умолчанию ядро совместимо с модулем wireguard. Чтобы включить модуль в текущей сессии и проверить его, выполните:
sudo modprobe wireguard
lsmod | grep wireguardЕсли модуль загружен, вы увидите запись в выводе lsmod.

Чтобы модуль загружался автоматически при старте системы, создайте файл конфигурации в /etc/modules-load.d:
sudo sh -c 'echo wireguard > /etc/modules-load.d/wireguard.conf'Затем установите набор утилит для управления WireGuard:
sudo dnf install wireguard-toolsНа этом этапе в системе должны присутствовать утилиты wg и wg-quick.

Генерация ключевых пар сервера и клиента
Пояснение терминов:
- PrivateKey — приватный ключ (должен храниться с минимальными правами доступа).
- PublicKey — публичный ключ, получаемый из приватного ключа; используется для аутентификации peer.
WireGuard предоставляет две основные утилиты:
- wg — низкоуровневый инструмент для управления интерфейсами и ключами;
- wg-quick — упрощённый скриптовый запуск интерфейсов по конфигам.
Генерация ключей сервера
Создайте приватный ключ сервера и установите строгие права:
wg genkey | sudo tee /etc/wireguard/server.key
sudo chmod 0400 /etc/wireguard/server.keyСгенерируйте публичный ключ на основе приватного:
sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pubПроверьте содержимое ключей (не публикуйте приватные ключи в открытом доступе):
cat /etc/wireguard/server.key
cat /etc/wireguard/server.pub
Генерация ключей клиента
Создайте каталог для клиентов и сгенерируйте ключи для client1:
sudo mkdir -p /etc/wireguard/clients
wg genkey | sudo tee /etc/wireguard/clients/client1.key
sudo chmod 0400 /etc/wireguard/clients/client1.key
sudo cat /etc/wireguard/clients/client1.key | wg pubkey | sudo tee /etc/wireguard/clients/client1.pubПроверьте ключи клиента:
cat /etc/wireguard/clients/client1.key
cat /etc/wireguard/clients/client1.pub
Совет: храните ключи в защищённой файловой системе и автоматизируйте резервное копирование секретов в соответствии с политиками безопасности вашей организации.
Конфигурация WireGuard-сервера
Создайте конфигурационный файл /etc/wireguard/wg0.conf:
sudo nano /etc/wireguard/wg0.confДобавьте базовый блок интерфейса, заменив PrivateKey на содержимое вашего /etc/wireguard/server.key:
[Interface]
# Приватный ключ WireGuard-сервера - /etc/wireguard/server.key
PrivateKey = iHaI5bkEbW8wqTQDbU/KITGhxtKoiezWVohVZsKwj3w=
# Интерфейс WireGuard будет иметь адрес 10.8.0.1
Address = 10.8.0.1/24
# Порт UDP, на котором сервер будет принимать подключения
ListenPort = 51820
# Сохранять изменения конфигурации в файл
SaveConfig = trueДалее добавьте секцию Peer для клиента, указав его PublicKey и разрешённый IP внутри VPN:
[Peer]
# Публичный ключ клиента - /etc/wireguard/clients/client1.pub
PublicKey = iWskvxyj+QK4185xO6Z2Fb0XYo1jGyiyI3iKbyGTkT8=
# IP клиента в VPN / можно указывать подсеть
AllowedIPs = 10.8.0.8/32Примечание: для AllowedIPs используйте /32 для конкретного хоста; в исходном руководстве использовалось /24 — это допустимо, но потенциально даёт доступ широкому диапазону IP в VPN. Подбирайте префикс исходя из модели доступа.
Сохраните файл и закройте редактор.
Включение проброса пакетов (IP forwarding)
Чтобы маршрутизировать трафик между интерфейсами и наружным интернетом, включите IP forwarding:
sudo nano /etc/sysctl.confДобавьте в конец:
# Проброс пакетов IPv4
net.ipv4.ip_forward=1
# Проброс пакетов IPv6 (опционально)
net.ipv6.conf.all.forwarding=1Примените изменения:
sudo sysctl -p
Настройка firewalld и правил NAT
Определите сетевой интерфейс, который предоставляет доступ в интернет (в примере eth0):
ip route show defaultОткройте конфигурацию сервера /etc/wireguard/wg0.conf и в секцию [Interface] добавьте команды PostUp/PostDown, чтобы при поднятии интерфейса автоматически настраивались правила firewall:
PostUp = firewall-cmd --zone=public --add-masquerade
PostUp = firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i wg -o eth0 -j ACCEPT
PostUp = firewall-cmd --direct --add-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADE
PostDown = firewall-cmd --zone=public --remove-masquerade
PostDown = firewall-cmd --direct --remove-rule ipv4 filter FORWARD 0 -i wg -o eth0 -j ACCEPT
PostDown = firewall-cmd --direct --remove-rule ipv4 nat POSTROUTING 0 -o eth0 -j MASQUERADEСохраните файл. Затем откройте UDP-порт для WireGuard и перезагрузите firewalld:
sudo firewall-cmd --add-port=51820/udp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Пояснения:
- PostUp выполняется при поднятии интерфейса wg0 — туда можно добавить любые команды сетевой настройки.
- PostDown отменяет изменения при остановке интерфейса.
- MASQUERADE нужен для NAT, если вы хотите, чтобы клиенты выходили в интернет через IP сервера.
Запуск и включение сервиса WireGuard
Запустите systemd-сервис для интерфейса wg0 и включите автозапуск:
sudo systemctl start [email protected]
sudo systemctl enable [email protected]Проверьте статус:
sudo systemctl status [email protected]
Проверьте интерфейс wg0:
ip a show wg0Информация должна соответствовать конфигурации (Address = 10.8.0.1/24).

Альтернативный способ управления: wg-quick
sudo wg-quick up /etc/wireguard/wg0.conf
sudo wg-quick down /etc/wireguard/wg0.confНастройка клиента и подключение
На клиентской машине (в примере — Rocky Linux с именем client1) установите wireguard-tools:
sudo dnf install wireguard-toolsПри установке может подтянуться systemd-resolved. Включите и запустите его:
sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolvedЗадайте NetworkManager использовать systemd-resolved как backend DNS:
sudo nano /etc/NetworkManager/NetworkManager.confДобавьте в секцию [main]:
[main]
dns=systemd-resolvedСделайте симлинк для /etc/resolv.conf:
sudo rm -f /etc/resolv.conf
sudo ln -s /usr/lib/systemd/resolv.conf /etc/resolv.conf
sudo systemctl restart NetworkManagerСоздайте файл конфигурации клиента /etc/wireguard/wg-client1.conf:
sudo nano /etc/wireguard/wg-client1.confПример содержимого (замените PrivateKey и PublicKey на ваши значения):
[Interface]
# IP клиента в VPN (должен совпадать с AllowedIPs на сервере)
Address = 10.8.0.8/24
# Приватный ключ клиента - /etc/wireguard/clients/client1.key
PrivateKey = 4FsCdtKr9GrLiX7zpNEYeqodMa5oSeHwH/m9hsNNfEs=
# Настройка DNS через systemd-resolved
PostUp = resolvectl dns %i 1.1.1.1 9.9.9.9; resolvectl domain %i ~.
PreDown = resolvectl revert %i
[Peer]
# Публичный ключ сервера - /etc/wireguard/server.pub
PublicKey = aK+MQ48PVopb8j1Vjs8Fvgz5ZIG2k6pmVZs8iVsgr1E=
# Маршрутизация всего трафика через VPN
AllowedIPs = 0.0.0.0/0
# Внешний адрес и порт сервера
Endpoint = 192.168.5.59:51820
# Keepalive для обхода NAT/динамических конечных точек
PersistentKeepalive = 25Запустите интерфейс клиента:
sudo wg-quick up wg-client1Проверьте интерфейс и адреса:
ip a show wg-client1
resolvectl status wg-client1
wg show
На сервере проверьте командой wg show, вы должны увидеть peer с публичным ключом клиента и endpoint.

Проверки соединения
С клиента выполните несколько пингов:
ping -c5 10.8.0.1
ping -c5 1.1.1.1
ping -c5 duckduckgo.comЕсли все успешны, значит туннель работает и маршрутизация в интернет через сервер также настроена.


Отладка и распространённые проблемы
- Нет связи после поднятия интерфейса:
- Проверьте, что ListenPort открыт в фаерволе и что PostUp команды были выполнены (journalctl -u [email protected]).
- Убедитесь, что в AllowedIPs на сервере указан именно адрес клиента (/32) или корректный диапазон.
- Клиент подключается, но интернет не работает:
- Проверьте sysctl net.ipv4.ip_forward=1 и правила NAT (firewall-cmd –direct –get-all-rules).
- Проверьте, не блокирует ли внешний провайдер нужный порт UDP.
- DNS не резолвится:
- Убедитесь, что systemd-resolved запущен и что в NetworkManager настроен dns=systemd-resolved, а /etc/resolv.conf указывает на resolv.conf от systemd.
- Приватные ключи видны в конфиге:
- Файл с приватным ключом должен иметь права 0400 и быть доступен только root.
Безопасность и рекомендации для production
- Ограничьте доступ к файлам с приватными ключами: chmod 0400 и владелец root.
- Настройте ротацию ключей: планируйте регулярную ротацию для приватных ключей с минимальным окном простоя (ввод новых ключей и обновление конфигурации peers).
- Логирование: включите и собирайте логи systemd для отслеживания аномалий (journalctl -u [email protected]).
- SELinux: если включён в режиме enforcing, создайте политику, которая позволит WireGuard и firewalld выполнять нужные действия, либо используйте permissive до настройки политик.
- Разделение привилегий: управляйте коллективными ключами через защищённый секретный хранилище.
Рольовые чек-листы (кратко)
Администратор сети:
- Проверить доступность UDP порта 51820 по публичному IP.
- Убедиться в корректности маршрутов и NAT.
- Настроить мониторинг интерфейса wg0.
Системный администратор сервера:
- Установить wireguard-tools и включить модуль ядра.
- Сгенерировать ключи, выставить права.
- Настроить systemd unit и тестовый запуск.
Девопс / автоматизация:
- Автоматизировать генерацию/оповещение о ротации ключей.
- Включить проверку конфигурации и CI тесты развертывания.
Мини-методика развертывания (шаги для автоматизации)
- Подготовить базовый образ Rocky Linux 9 с dnf обновлениями.
- Установить wireguard-tools и зависимости.
- Сгенерировать ключи на сервере и на клиенте (или централизованно из защищённого CI).
- Развернуть /etc/wireguard/wg0.conf и конфиги клиентов.
- Настроить правила firewalld через PostUp/PostDown.
- Тестировать соединение и записать результаты проверок (wg show, ip a, ping).
- Включить мониторинг и оповещения о падении интерфейса.
Модель принятия решений: когда использовать WireGuard
- Если нужна простая, быстрая и производительная VPN для удалённого доступа — WireGuard хорош.
- Если требуются интеграции с корпоративными PKI и сложными политиками авторизации на уровне шлюзов — рассмотрите IPSec или решения с поддержкой централизованной аутентификации.
Сравнение кратко (на уровне выбора)
- WireGuard: простота, скорость, современная криптография.
- OpenVPN: больше возможностей для TLS-авторизации, широкий набор опций, но более сложен и медленнее.
- IPSec: стандарт для корпоративных связей и межсетевых шлюзов, сложнее настроить, но интегрируется с аппаратными решениями.
Тесты приёмки (пара простых тест-кейсов)
- Подключение клиента: wg show показывает peer, на сервере виден endpoint клиента.
- Маршрутизация: с клиента ping 1.1.1.1 успешен.
- DNS: с клиента nslookup google.com возвращает результат.
Советы по миграции с OpenVPN/IPSec на WireGuard
- Перенесите список пользователей/доступов и сопоставьте IP в AllowedIPs.
- Подготовьте план отката: сохраните конфигурации старого VPN и возможность запустить их параллельно.
- Тестируйте ротацию ключей и работу NAT на тестовой подсети перед production.
Критерии приёмки
- Сервер поднимается и удерживает интерфейс wg0 после перезагрузки.
- Клиент подключается и получает IP из VPN подсети.
- Трафик клиента проходит через сервер и доступен в интернет при включённом NAT.
Краткая справка: команды для повседневной проверки
- Показать состояние интерфейсов WireGuard: wg show
- Показать IP/интерфейсы: ip a
- Проверить маршруты: ip route
- Проверить systemd unit: sudo systemctl status [email protected]
- Проверить логи: sudo journalctl -u [email protected]
Глоссарий (однострочные определения)
- Endpoint — адрес и порт удалённого peer, к которому устанавливается соединение.
- AllowedIPs — список маршрутов, которые отправляются через peer.
- PersistentKeepalive — период посылки «сигнала», чтобы поддерживать состояние NAT.
Заключение
В этом руководстве вы узнали, как установить и настроить WireGuard на Rocky Linux 9: включить модуль ядра, сгенерировать ключи, создать конфигурации сервера и клиента, настроить проброс пакетов и правила firewalld, запустить сервис и проверить соединение. WireGuard — компактное и эффективное решение для большинства задач удалённого доступа и VPN-каналов. При внедрении в production не забудьте о защите приватных ключей, мониторинге и политике ротации.
Если хотите углубиться: официальная документация WireGuard и репозитории GitHub содержат дополнительную информацию по интеграции и автоматизации развертываний.
Важно: адаптируйте примеры IP и пути к ключам под вашу инфраструктуру.
Сводка основных шагов:
- Включить модуль ядра wireguard и установить wireguard-tools.
- Сгенерировать пары ключей для сервера и каждого клиента.
- Создать /etc/wireguard/wg0.conf с секциями [Interface] и [Peer].
- Включить ip_forward и настроить NAT/firewalld через PostUp/PostDown.
- Запустить сервис и проверить подключение клиентов.
Дополнительно: мониторьте и управляйте ключами, используйте автоматизацию и проверяйте совместимость с корпоративными политиками безопасности.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента