WireGuard QR-код: как сгенерировать конфиг за минуту
Простая инструкция по созданию QR-кода для WireGuard: генерация ключей, настройка клиента и сервера, кодирование конфигурации в QR и решение типичных проблем.
Содержание
WireGuard завоевал популярность благодаря простоте и высокой скорости. Чтобы не вводить конфигурацию вручную на телефоне, можно использовать QR-код: официальное приложение WireGuard сканирует его и импортирует настройки за секунды. В этой статье покажу, как за минуту сгенерировать QR-код для своего VPN-сервера.
Что такое QR-код в WireGuard и зачем он нужен
QR-код — это просто закодированный текстовый файл конфигурации клиента WireGuard. Внутри лежит приватный ключ клиента, IP-адрес, DNS, параметры пира (сервера). Когда вы сканируете такой код официальным приложением, оно создаёт туннель с этими настройками. Это удобно для подключения смартфона или планшета, когда ввод длинного текста неудобен.
Важно понимать: QR-код содержит приватный ключ клиента, поэтому передавать его нужно только по надёжным каналам. Не публикуйте QR в мессенджерах без шифрования и не выкладывайте в открытый доступ.
Как сгенерировать QR-код: подготовка ключей и конфигурации
Для начала нам нужен работающий WireGuard-сервер. Если сервер ещё не настроен, воспользуйтесь официальной инструкцией. Ниже предполагается, что вы имеете доступ к серверу и умеете выполнять команды от root или через sudo.
Создадим ключи для клиента. Выполните на любом компьютере (или на сервере) следующие команды:
wg genkey | tee client_private.key | wg pubkey > client_public.key
В результате появятся два файла: client_private.key (приватный ключ клиента) и client_public.key (публичный ключ клиента). Скопируйте их содержимое — оно понадобится.
Теперь создайте конфигурацию клиента. Обычно она выглядит так (замените значения своими):
[Interface]
PrivateKey = <приватный_ключ_клиента>
Address = 10.0.0.2/24
DNS = 1.1.1.1
[Peer]
PublicKey = <публичный_ключ_сервера>
Endpoint = vpn.example.com:51820
AllowedIPs = 0.0.0.0/0
Сохраните этот файл как client.conf. Приватный ключ сервера брать не нужно — только публичный. Endpoint должен быть вашим сервером (домен или IP) и портом, который слушает WireGuard.
Добавление клиента на сервер и генерация QR-кода
Чтобы сервер принял клиента, добавьте его peer в конфигурацию сервера. Отредактируйте файл /etc/wireguard/wg0.conf (или как у вас называется конфиг) и внесите блок:
[Peer]
PublicKey = <публичный_ключ_клиента>
AllowedIPs = 10.0.0.2/32
Укажите тот же IP-адрес, что вы задали в Address клиента. Затем перезапустите WireGuard:
sudo wg-quick down wg0 && sudo wg-quick up wg0
После этого можно генерировать QR-код. На Linux установите утилиту qrencode (например, sudo apt install qrencode). Затем выполните:
qrencode -t ansiutf8 < client.conf
Эта команда выведет QR-код прямо в терминал — просто наведите на него камеру телефона. Если хотите сохранить как изображение:
qrencode -t PNG -o qr.png < client.conf
Полученный файл qr.png можно переслать на телефон.
Проверка и типичные проблемы при сканировании
Если телефон не сканирует код или после импорта конфигурация не работает, проверьте по порядку:
- Корректность ключей. Убедитесь, что в client.conf указан приватный ключ клиента, а на сервере — публичный ключ клиента. Перепутанные ключи — самая частая причина.
- AllowedIPs. На клиенте 0.0.0.0/0 означает «весь трафик» через VPN. Если нужен только доступ к внутренней сети, укажите конкретные подсети, например 10.0.0.0/24.
- Firewall. Проверьте, что UDP-порт (обычно 51820) открыт на сервере. В противном случае туннель не установится.
- Формат QR. qrencode умеет кодировать только текст. Убедитесь, что в client.conf нет лишних пробелов или символов. Лучше использовать стандартный синтаксис без BOM.
Если QR-код слишком большой (например, при длинном Endpoint), используйте команду с уровнем коррекции ошибок: qrencode -t ansiutf8 -l H < client.conf — это повышает читаемость при повреждениях.
Альтернативные способы генерации
Некоторые VPN-сервисы и роутеры с прошивками, поддерживающими WireGuard, имеют встроенную генерацию QR-кода. Например, в интерфейсе провайдера часто есть кнопка «Показать QR-код» для каждого пользователя. Проверьте документацию вашего устройства или сервиса — там обычно есть подробная инструкция.
Если вы используете официальное приложение WireGuard на смартфоне, то можно создать конфигурацию прямо в приложении и отправить её на другое устройство (но это уже не про серверную генерацию). Для быстрой настройки нескольких устройств удобнее всё же сгенерировать QR заранее.
Заключение
Сгенерировать QR-код для WireGuard несложно: нужны ключи, конфигурационный файл и утилита qrencode. Главное — не перепутать ключи и правильно настроить peer на сервере. С QR-кодом вы сможете подключать новые телефоны за минуту, не вводя длинные строки вручную.
Мини-чеклист
- Создайте ключи клиента: wg genkey и wg pubkey
- Составьте client.conf с приватным ключом клиента, адресом и DNS
- Добавьте клиента как peer в конфигурацию сервера
- Перезапустите WireGuard и проверьте соединение до генерации QR
Частые ошибки
- Перепутаны приватный и публичный ключи в конфигурациях
- Неверно указан Endpoint (домен/порт) на клиенте
- AllowedIPs слишком широкие или наоборот не включают нужные сети
- QR-код сгенерирован из файла с лишними пробелами или переводом строки
Источники и документация
FAQ
Можно ли сгенерировать QR-код без доступа к серверу?
Технически можно, если у вас уже есть файл конфигурации клиента (client.conf). Для самого QR-кода сервер не нужен, но чтобы подключение работало, сервер должен быть настроен и содержать ваш публичный ключ.
Что такое AllowedIPs в конфигурации WireGuard?
AllowedIPs определяет, какие IP-адреса отправляются через туннель. Для клиента обычно ставят 0.0.0.0/0 (весь трафик) или только нужные подсети. На сервере для клиента указывается только его внутренний IP (например, 10.0.0.2/32).
Безопасно ли отправлять QR-код через мессенджер?
QR-код содержит приватный ключ, поэтому его нельзя передавать в открытом виде. Используйте защищённые каналы (например, шифрованный чат) или личный показ экрана. После сканирования лучше сразу удалить QR-файл.
Мой телефон не сканирует QR-код из терминала. Что делать?
Попробуйте увеличить уровень коррекции ошибок (флаг -l H) или выведите QR как картинку. Также убедитесь, что экран терминала достаточно яркий и без бликов. Некоторые камеры плохо считывают ANSI-символы — лучше сохранить в PNG.
Хотите перейти сразу к рабочему доступу?
Если сценарий уже ясен и не хочется проходить все шаги вручную, оформите доступ и проверьте подключение на своем устройстве.
Получить доступ