Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Сетевое оборудование и VPN

WireGuard: добавление нового клиента (Peer) и генерация QR-кода

Обновлено: 27.08.2026 · Официальная документация ↗

Задача: подключить телефон или ноутбук к серверу WireGuard

WireGuard — это сверхбыстрый и современный протокол VPN. В отличие от старых систем с логинами и паролями, безопасность WireGuard построена на криптографических парах ключей (Public / Private Key). Чтобы подключить новое устройство (Peer), необходимо сгенерировать ключи и добавить запись в конфигурацию сервера.

Пошаговый процесс добавления клиента

Шаг 1. Устанавливаем утилиту для генерации QR-кодов на сервере

Подключитесь к вашему Linux-серверу WireGuard по SSH и установите генератор QR-кодов:

sudo apt update && sudo apt install qrencode -y

Шаг 2. Генерируем ключи для нового клиента (например, smartphone_alex)

# Переходим в рабочую папку:
cd /etc/wireguard/

# Генерируем приватный и публичный ключ для клиента:
wg genkey | tee alex_private.key | wg pubkey > alex_public.key

# Смотрим сгенерированные ключи:
cat alex_private.key
cat alex_public.key

Шаг 3. Добавляем клиента в конфигурацию сервера wg0.conf

Откройте главный конфигурационный файл сервера sudo nano /etc/wireguard/wg0.conf и допишите в самый конец новый блок [Peer]:

[Peer]
# Имя: Смартфон Alex
PublicKey = ВСТАВЬТЕ_СОДЕРЖИМОЕ_ФАЙЛА_alex_public.key
AllowedIPs = 10.0.0.5/32

Сохраните файл (Ctrl+O, Enter, Ctrl+X) и примените настройки без разрыва связи:

sudo wg syncconf wg0 <(wg-quick strip wg0)

Шаг 4. Создаем клиентский конфигурационный файл

Создайте файл alex.conf:

sudo nano /etc/wireguard/alex.conf

Вставьте следующую структуру:

[Interface]
PrivateKey = ВСТАВЬТЕ_СОДЕРЖИМОЕ_ФАЙЛА_alex_private.key
Address = 10.0.0.5/24
DNS = 1.1.1.1

[Peer]
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_СЕРВЕРА_ИЗ_wg0.conf
Endpoint = IP_ВАШЕГО_СЕРВЕРА:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Шаг 5. Выводим QR-код прямо в терминал для смартфона!

Выполните команду:

qrencode -t ansiutf8 < /etc/wireguard/alex.conf

Прямо в окне консоли появится большой красивый QR-код. Откройте приложение WireGuard на iPhone или Android, нажмите + -> Сканировать QR-код, наведите камеру — и VPN мгновенно настроен и готов к работе!

💡 Практика специалистов: Для удобного управления большим количеством пользователей WireGuard рекомендуем установить веб-панели с открытым исходным кодом, например 'WireGuard-UI' или 'WGDashboard'. Они позволяют генерировать пиры и QR-коды в один клик через веб-браузер.

Частые вопросы (FAQ)

Зачем нужен параметр PersistentKeepalive = 25?

Он заставляет устройство отправлять контрольный пинг каждые 25 секунд. Это предотвращает закрытие NAT-соединения мобильными операторами и гарантирует, что на телефон продолжат приходить push-уведомления.

Что означает AllowedIPs = 0.0.0.0/0 в настройках клиента?

Значение 0.0.0.0/0 означает, что абсолютно весь интернет-трафик телефона будет идти через зашифрованный VPN-сервер. Если вам нужен доступ только к офисной подсети, укажите, например, 192.168.1.0/24.

Могут ли два разных клиента использовать один и тот же IP-адрес?

Категорически нет! В WireGuard маршрутизация построена по принципу Cryptokey Routing: каждому клиенту должен быть выделен строго уникальный IP-адрес (например, 10.0.0.2, 10.0.0.3, 10.0.0.4 и т.д.).

Как временно отключить доступ клиенту?

Откройте wg0.conf на сервере, удалите или закомментируйте знак решетки # блок [Peer] этого пользователя и выполните wg syncconf wg0 <(wg-quick strip wg0).

Полезные материалы
Рекомендуем