Личный VPN на WireGuard: настройка за 10 минут

Сети и VPN
Личный VPN на WireGuard: настройка за 10 минут

Свой VPN на VPS — это защищённый трафик в кафе и аэропортах, доступ к домашним и рабочим ресурсам из любой точки мира и никаких «бесплатных» сервисов, которые торгуют вашими данными. Настройка WireGuard занимает действительно около десяти минут: это самый лёгкий и быстрый VPN-протокол на сегодня, он встроен прямо в ядро Linux. В этой инструкции разберём установку WireGuard на Ubuntu 24.04 LTS с нуля: генерация ключей через wg genkey, конфиг /etc/wireguard/wg0.conf, подключение телефона и ноутбука, а также нюансы запуска на дешёвом NAT VPS с нестандартным портом.

Почему именно WireGuard

WireGuard появился позже классических протоколов и избавился от их исторического багажа. Весь код — около 4 тысяч строк против сотен тысяч у OpenVPN, поэтому его проще аудировать и сложнее сломать. Что это даёт на практике:

  • Скорость. Работа в ядре Linux и современная криптография ChaCha20-Poly1305 дают в 2–4 раза большую пропускную способность, чем у OpenVPN на том же сервере.
  • Мгновенное подключение. Рукопожатие занимает миллисекунды; при смене сети (Wi-Fi → LTE) туннель переживает переключение незаметно.
  • Экономия батареи. Протокол «молчит», когда нет трафика, — телефон не разряжается.
  • Простая модель. Никаких сертификатов и центров сертификации: у каждой стороны пара ключей, как в SSH.

Если вам ближе классика с сертификатами или нужен TCP-режим, посмотрите инструкцию по OpenVPN на VPS. А о том, почему собственный сервер честнее любого бесплатного VPN-сервиса, мы подробно писали в статье «Свой VPN против бесплатного».

Что понадобится

Требования у WireGuard минимальные — он спокойно живёт на самом дешёвом сервере:

  • VPS с Ubuntu 24.04 LTS и root-доступом;
  • 1 vCPU и 1 ГБ RAM — с запасом хватит для 1–5 устройств;
  • безлимитный трафик, чтобы не считать гигабайты.

Для личного VPN разумно не переплачивать: у Cheap-Host есть NAT VPS в Германии — тариф NAT Base за 99 ₽/мес (1 vCPU, 2 ГБ RAM, 15 ГБ NVMe, безлимитный трафик на канале 100 Мбит/с). IP-адрес там общий, но WireGuard это не мешает — ниже покажем, как задать нестандартный порт. Если нужен выделенный IPv4 и локация в Москве, подойдёт обычный VPS Start за 450 ₽/мес. Сервер выдаётся автоматически за 45–60 секунд — IP и SSH-доступ приходят сразу после оплаты. Как подключиться к серверу, разобрано в статье про SSH с Windows, macOS и Linux.

Настройка WireGuard на Ubuntu 24.04: сервер

Шаг 1. Установка

sudo apt update
sudo apt install -y wireguard

Пакет ставит утилиты wg и wg-quick; модуль ядра уже входит в Ubuntu 24.04.

Шаг 2. Генерация ключей сервера

wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
sudo chmod 600 /etc/wireguard/server_private.key

Команда wg genkey создаёт приватный ключ, а wg pubkey выводит из него публичный. Приватный ключ сервера никуда не передаётся.

Шаг 3. Ключи для клиента

Для каждого устройства — своя пара:

wg genkey | tee client1_private.key | wg pubkey > client1_public.key

Шаг 4. Конфиг /etc/wireguard/wg0.conf

Создайте файл sudo nano /etc/wireguard/wg0.conf:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = ПРИВАТНЫЙ_КЛЮЧ_СЕРВЕРА
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# Телефон
PublicKey = ПУБЛИЧНЫЙ_КЛЮЧ_КЛИЕНТА_1
AllowedIPs = 10.8.0.2/32

Подставьте содержимое своих файлов ключей. Имя внешнего интерфейса проверьте командой ip route | grep default — если это не eth0, а, например, ens3, поправьте строки PostUp/PostDown. Для каждого нового устройства добавляйте секцию [Peer] со своим ключом и следующим адресом: 10.8.0.3/32, 10.8.0.4/32 и т. д.

Шаг 5. Форвардинг и файрвол

echo "net.ipv4.ip_forward=1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl --system
sudo ufw allow 51820/udp

Шаг 6. Запуск

sudo systemctl enable --now wg-quick@wg0
sudo wg

Команда sudo wg покажет интерфейс, порт и список пиров. Сервер готов — на всё ушло меньше десяти минут.

Подключение клиентов: телефон и компьютер

Создайте на сервере файл client1.conf:

[Interface]
PrivateKey = ПРИВАТНЫЙ_КЛЮЧ_КЛИЕНТА_1
Address = 10.8.0.2/24
DNS = 1.1.1.1

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

AllowedIPs = 0.0.0.0/0 означает «весь трафик в туннель» — то, что нужно для защиты в публичном Wi-Fi. Если хотите ходить через VPN только к своим ресурсам, укажите вместо этого их подсеть, например 10.8.0.0/24. PersistentKeepalive = 25 держит соединение живым за NAT домашнего роутера.

Дальше два пути:

  1. Компьютер. Установите приложение WireGuard для Windows/macOS/Linux и импортируйте файл client1.conf.
  2. Телефон. Удобнее QR-код: sudo apt install -y qrencode, затем qrencode -t ansiutf8 < client1.conf — и отсканируйте код камерой из приложения WireGuard.

Проверка: включите туннель и откройте любой сервис определения IP — должен показаться адрес вашего VPS.

WireGuard на NAT VPS: нестандартный порт

На NAT VPS IPv4-адрес общий, а вам выделяется диапазон из 999 TCP/UDP-портов плюс отдельный порт для SSH. Стандартный порт WireGuard 51820, скорее всего, не входит в ваш диапазон — но протоколу совершенно всё равно, на каком порту работать. Достаточно двух правок:

  • в серверном wg0.conf: ListenPort = ВАШ_ПОРТ (любой UDP-порт из выделенного диапазона, его список виден в панели управления);
  • в клиентском конфиге: Endpoint = ОБЩИЙ_IP:ВАШ_ПОРТ.

После правки — sudo systemctl restart wg-quick@wg0. Больше ничего менять не нужно: исходящий NAT на стороне хостера уже настроен. Подробно о том, как устроен проброс и чем NAT VPS отличается от обычного, — в статье про проброс портов на NAT VPS. Именно поэтому NAT Base за 99 ₽/мес — самый дешёвый способ получить личный VPN: WireGuard использует ровно один UDP-порт из 999 доступных.

Типичные проблемы и решения

СимптомПричинаРешение
Туннель поднялся, но интернета нетНе включён форвардинг или неверный интерфейс в MASQUERADEПроверьте sysctl net.ipv4.ip_forward и имя интерфейса в PostUp
Рукопожатие не проходитЗакрыт UDP-порт или порт вне диапазона NAT VPSОткройте порт в UFW; на NAT VPS возьмите порт из своего диапазона
Соединение отваливается за домашним роутеромNAT-таймаутДобавьте PersistentKeepalive = 25 у клиента
Ошибка при старте wg-quickОпечатка или лишние пробелы в ключахСравните ключи с файлами, проверьте синтаксис конфига
Не открываются сайты, но пинг по IP идётПроблема с DNSУкажите DNS = 1.1.1.1 в секции [Interface] клиента

FAQ

Сколько ресурсов нужно VPS для WireGuard?

Совсем немного: WireGuard работает в ядре Linux и почти не нагружает процессор. Для личного VPN на 1–5 устройств достаточно 1 vCPU и 1–2 ГБ RAM — например, NAT Base у Cheap-Host за 99 ₽/мес с безлимитным трафиком.

Заработает ли WireGuard на NAT VPS с общим IP?

Да. WireGuard использует один UDP-порт, и его номер можно свободно менять. Укажите в ListenPort любой из выделенных вам портов, а в клиентском Endpoint — общий IP сервера и этот же порт.

Насколько WireGuard быстрее OpenVPN?

На одинаковом железе WireGuard обычно даёт в 2–4 раза большую пропускную способность и меньший пинг: он работает в ядре и использует лёгкую криптографию ChaCha20-Poly1305. Канал 100 Мбит/с он загружает практически без потерь.

Можно ли подключить несколько устройств?

Да. Каждому устройству — своя пара ключей и своя секция [Peer] в wg0.conf с уникальным адресом: 10.8.0.2/32, 10.8.0.3/32 и так далее. После правки перезапустите wg-quick@wg0.

Законно ли поднимать свой VPN на VPS?

Личный VPN для защиты собственного трафика в публичных сетях и доступа к своим ресурсам — обычный инструмент безопасности, как SSH или HTTPS. Ответственность за использование туннеля лежит на вас: соблюдайте законодательство своей страны и правила хостинга.

Вывод

WireGuard — самый короткий путь к личному VPN: шесть шагов, один конфиг wg0.conf, десять минут времени. Вы получаете шифрование трафика в любом публичном Wi-Fi, стабильный доступ к своим ресурсам и полный контроль над сервером — без подписок и чужих логов. Если для этой задачи вам нужен сервер — у Cheap-Host есть NAT Base от 99 ₽/мес: NVMe, KVM, безлимитный трафик, автодеплой за 45–60 секунд. Оплатить можно СБП, картой «Мир» или криптовалютой, а если что-то не заведётся — поддержка 24/7 отвечает без шаблонных отписок.