WireGuard на Fedora Desktop: настройка клиента
Fedora Workstation — не Ubuntu, и часть гайдов по WireGuard, написанных под Debian-производные, здесь просто не работает: другие пакеты, другой набор графических утилит, SELinux добавляет свои сюрпризы. При этом сам WireGuard встроен в ядро и в NetworkManager настолько глубоко, что для рабочего туннеля вообще не обязательно трогать терминал — почти всё делается через GNOME Settings. Разберём оба пути: через графический интерфейс и через nmcli, с проверкой и типичными граблями.
Содержание
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →Что понадобится перед началом
Для подключения нужен один из двух вариантов данных от VPN-сервера:
- готовый файл конфигурации
client.conf(или.confс любым именем) — так обычно выдают панели вроде wg-easy или скрипты автогенерации клиентов; - набор параметров вручную: приватный ключ клиента, публичный ключ и endpoint сервера, диапазон Allowed IPs, адрес клиента внутри VPN-сети, при необходимости — DNS и Persistent Keepalive.
На Fedora Workstation пакет NetworkManager-wireguard обычно уже стоит, а вот графический плагин для импорта иногда нужно доустановить отдельно:
sudo dnf install NetworkManager-wireguard-gnome wireguard-tools
После установки перезапустите GNOME Settings (или просто перелогиньтесь) — иначе пункт «WireGuard» в списке типов VPN может не появиться сразу.
Если ключей ещё нет и конфиг придётся собирать вручную, сгенерировать пару можно прямо в терминале:
wg genkey | tee privatekey | wg pubkey > publickey
Приватный ключ остаётся на клиенте, публичный передаётся администратору сервера — если сервер настраиваете сами, см. установку WireGuard на VPS.
Импорт готового конфига через GNOME Settings
Самый быстрый способ — если у вас уже есть файл .conf.
- Откройте Settings → Network.
- Слева, в разделе VPN, нажмите +.
- В списке типов выберите Import from file….
- Укажите путь к
.confфайлу и подтвердите.
GNOME сам разберёт секции [Interface] и [Peer], создаст подключение и добавит его в общий список сетей. Останется включить тумблер напротив имени подключения — оно будет называться так же, как файл конфигурации (без расширения).
Важный нюанс: если в конфиге прописан DNS =, GNOME применит его как DNS для этого подключения автоматически. Если строки нет — резолвинг пойдёт через DNS, которые выдаёт активное на данный момент физическое подключение (Wi-Fi или Ethernet), и трафик DNS-запросов может не попадать в туннель. Это стоит проверить отдельно — как именно, разберём ниже в разделе про диагностику.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверРучная настройка без файла конфигурации
Если данные выданы не файлом, а списком параметров, добавьте VPN вручную:
- Settings → Network → +.
- Выберите WireGuard из списка (не «Import from file…», а именно тип подключения).
- Задайте имя подключения — оно же станет именем интерфейса, например
wg-home. - На вкладке General:
- Private Key — приватный ключ клиента;
- Listen Port — обычно можно оставить пустым (автоматический выбор);
- fwmark — не трогайте, если сервер не требует специфической маршрутизации.
- Ниже, в блоке адресов интерфейса, добавьте IP клиента внутри VPN-подсети, например
10.8.0.2/32или10.8.0.2/24— формат зависит от того, как настроен сервер. - Добавьте пира (Add):
- Public Key — публичный ключ сервера;
- Allowed IPs —
0.0.0.0/0, ::/0для полного туннелирования всего трафика или конкретные подсети для split-tunnel (например,10.8.0.0/24— только доступ к серверу и его сети, без выхода в интернет через VPN); - Endpoint — адрес и порт сервера, например
203.0.113.10:51820; - Persistent Keepalive —
25секунд, если клиент находится за NAT (мобильная сеть, домашний роутер) — без этого туннель может «засыпать» и переставать пропускать входящий трафик от сервера.
- При необходимости на вкладке IPv4/IPv6 добавьте DNS-сервер, который должен использоваться при активном туннеле.
Сохраните и включите тумблер подключения.
Проверка, что туннель действительно работает
Включённый тумблер в Settings ещё не гарантирует, что трафик реально идёт через VPN. Проверка в три шага.
Статус интерфейса и хендшейка:
sudo wg show
Если строка latest handshake появилась и обновляется — туннель поднят на уровне протокола. Пустая или отсутствующая строка означает, что пакеты до сервера не доходят: см. раздел с типичными проблемами.
IP-адрес интерфейса:
ip -brief address show
В списке должен появиться интерфейс с именем вашего подключения (или wg0) и адресом из диапазона VPN.
Внешний IP, который видит интернет:
curl -4 ifconfig.me
Если это IP сервера, а не вашего провайдера — туннель работает и трафик реально через него идёт. Отдельно стоит проверить DNS: если запросы уходят напрямую провайдеру мимо VPN, это классическая утечка, которую важно закрыть особенно при работе с чувствительными сервисами — подробнее в статье про проверку и закрытие DNS-leak.
Автоподключение и управление через nmcli
GNOME Settings удобен для разовой настройки, но частое переключение подключений быстрее делать из терминала — особенно если VPN нужен только под конкретную задачу, а не постоянно.
Список всех подключений и их статус:
nmcli connection show
Поднять и погасить туннель:
nmcli connection up wg-home
nmcli connection down wg-home
Автоматический запуск при входе в систему (полезно для сервера, который должен быть подключён всегда):
nmcli connection modify wg-home connection.autoconnect yes
Импорт конфига без графического интерфейса — тот же результат, что и «Import from file» в Settings, но из скрипта или по SSH:
nmcli connection import type wireguard file client.conf
Для быстрой проверки, какой профиль сейчас активен, а какие просто существуют в системе:
| Команда | Что показывает |
|---|---|
nmcli connection show --active | только активные подключения |
nmcli device status | состояние всех сетевых интерфейсов |
nmcli connection show wg-home | полные параметры конкретного профиля |
journalctl -u NetworkManager -f | лог NetworkManager в реальном времени |
Если вы одновременно администрируете сервер и настраиваете клиентов на разных дистрибутивах, полезно держать под рукой единый гайд по серверной части — например, установку WireGuard на Rocky Linux 9, где логика systemd-сервиса и firewalld во многом совпадает с тем, что видит Fedora на клиенте.
Типичные проблемы и их решение
Handshake не происходит вообще. Чаще всего дело в firewall на сервере или в неверном порту/адресе в Endpoint. Проверьте, что порт WireGuard открыт снаружи:
sudo firewall-cmd --list-ports
Если сервер за NAT или у провайдера, убедитесь, что проброшен именно UDP-порт, а не TCP — WireGuard работает только по UDP.
Handshake есть, интернета нет. Значит туннель поднят, но на сервере не настроен NAT/маскарадинг для исходящего трафика клиентов, либо в Allowed IPs указана не та подсеть. На стороне сервера должно быть что-то вроде:
sudo firewall-cmd --zone=public --add-masquerade --permanent
sudo firewall-cmd --reload
Подключение падает после сна ноутбука. GNOME иногда не переустанавливает WireGuard-туннель после выхода из suspend, если физическая сеть (Wi-Fi) поднимается медленнее. Помогает вручную дёрнуть подключение:
nmcli connection down wg-home && nmcli connection up wg-home
или добавить Persistent Keepalive = 25, если его не было — это же решает похожую проблему с обрывами и на других системах, подробнее в статье про обрыв соединения WireGuard.
SELinux блокирует нестандартный путь к конфигу. Если импортируете файл не из домашней директории, а, скажем, из /opt или смонтированного диска, NetworkManager может получить Permission denied при чтении. Самое простое — скопировать конфиг в ~/Downloads или ~/ перед импортом; для постоянного хранения в нестандартном месте потребуется отдельная настройка контекста SELinux, что для разовой задачи избыточно.
Два VPN одновременно конфликтуют по маршрутам. Если помимо WireGuard активен ещё один туннель (например, рабочий OpenVPN), оба стараются забрать себе маршрут по умолчанию. Это отдельная и довольно частая тема — она разобрана в материале про несколько VPN-подключений одновременно, логика применима и к Linux, хотя инструменты управления профилями отличаются.
Арендуйте сервер под свои задачи!
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.
Арендовать серверНужны сами нейросети для контента?
Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.
Частые вопросы
Обязательно ли ставить NetworkManager-wireguard-gnome отдельно?
На части сборок Fedora Workstation плагин уже входит в состав по умолчанию, но лучше проверить: rpm -q NetworkManager-wireguard-gnome. Если пакета нет — ставьте explicit, иначе пункт WireGuard просто не появится в диалоге добавления VPN.
Можно ли настроить WireGuard без GUI, только через wg-quick, если Fedora стоит в минимальной инсталляции без GNOME?
Да, wg-quick up client работает независимо от рабочего стола — это уровень ядра и systemd, а не NetworkManager. GNOME Settings — просто удобная надстройка поверх той же системы.
Почему в Settings подключение отображается активным, а wg show ничего не выводит?
Обычно это означает, что интерфейс поднялся, но пира с правильным публичным ключом или endpoint не удалось достучаться — проверьте правильность ключей и доступность порта на сервере командой nc -u -zv <ip сервера> 51820 с клиента.
Как временно отключить только DNS от VPN, оставив сам туннель активным?
В настройках подключения на вкладке IPv6 включите Use this connection only for resources on its network — это отключит и маршрут по умолчанию, и DNS от VPN, оставив доступ только к ресурсам внутри VPN-подсети.
Что делать, если после обновления Fedora WireGuard-подключение пропало из списка?
Такое случается при обновлении между мажорными версиями NetworkManager. Профили хранятся в /etc/NetworkManager/system-connections/ — проверьте, что файл .nmconnection на месте, и при необходимости перезапустите sudo systemctl restart NetworkManager.
Обсудить статью, задать вопрос или начать новую тему
Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.
Перейти в сообщество →