TürkiyeVPS

Настройка WireGuard на VPS с Ubuntu 24.04

Свой VPN сервер — это проще, чем кажется. Разбираем установку WireGuard на VPS с Ubuntu 24.04, правила файрвола и настройку клиента с QR-кодом для телефона.

6 мин чтения

В публичных VPN-сервисах один IP-адрес делят сотни, а то и тысячи пользователей, а весь ваш трафик проходит через компанию, о которой вы почти ничего не знаете. Свой VPN сервер решает обе проблемы: IP-адрес принадлежит только вам, и ключи шифрования тоже хранятся у вас. В этой инструкции мы выполним полную настройку WireGuard на VPS с Ubuntu 24.04, правильно настроим файрвол и подключим ноутбук и смартфон. Если копировать команды по ходу чтения, уйдёт 15–20 минут.

Что такое WireGuard и почему именно он

WireGuard — современный VPN-протокол, встроенный прямо в ядро Linux. По сравнению с OpenVPN и IPsec у него очень компактный код, конфигурация в несколько строк и высокая скорость даже на слабых серверах. Соединение идёт по UDP, а каждое устройство определяется парой ключей (приватный/публичный) — логинов и паролей нет.

Зачем обычно поднимают собственный VPN:

  • Шифрование в публичных Wi-Fi. В кафе, отеле или аэропорту трафик идёт до вашего сервера в зашифрованном виде.
  • Постоянный IP для администрирования. SSH и панели управления на других серверах можно открыть только для IP вашего VPN (белый список).
  • Доступ к домашним или офисным сервисам через туннель, не выставляя их в интернет.

Правила использования VPN в разных странах отличаются. Соблюдать законы своей страны и условия договора с хостинг-провайдером — ваша ответственность.

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

  • VPS с Ubuntu 24.04 и доступом root (или sudo). Если вы ещё не подключались к серверу удалённо, начните со статьи что такое SSH.
  • У сервера должен быть собственный публичный IPv4-адрес, а выбранный UDP-порт (в примере 51820) — доступен из интернета. В TürkiyeVPS этому условию соответствуют тарифы, в характеристиках которых указан 1 выделенный IPv4-адрес, например тарифы VDS Enterprise. В характеристиках стандартных тарифов VPS и VDS отдельный публичный IPv4 не указан, поэтому, если хотите запустить WireGuard на одном из них, сначала уточните у нашей поддержки.
  • Если базовая защита сервера ещё не сделана, сначала пройдите наш чек-лист безопасности Linux-сервера.

1. Установка WireGuard

sudo apt update
sudo apt install -y wireguard qrencode

Пакет wireguard содержит утилиты wg и wg-quick, а qrencode понадобится, чтобы сгенерировать QR-код для телефона.

2. Генерация ключей

Создадим пары ключей для сервера и первого клиента (например, ноутбука). umask 077 делает новые файлы доступными только root:

sudo -i
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee client1.key | wg pubkey > client1.pub

Приватные ключи (.key) никому не передавайте. Публичные (.pub) прописываются в конфигурации другой стороны.

3. Определяем внешний сетевой интерфейс

Для правила NAT нужно имя интерфейса, через который сервер выходит в интернет. Это далеко не всегда eth0:

ip route show default

Если вывод выглядит как default via 203.0.113.1 dev ens3 ..., ваш интерфейс — ens3. Во всех примерах ниже замените eth0 на своё имя.

4. Конфигурация сервера: wg0.conf

nano /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# client1 - noutbuk
PublicKey = CLIENT1_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

Вместо SERVER_PRIVATE_KEY вставьте вывод cat server.key, вместо CLIENT1_PUBLIC_KEY — вывод cat client1.pub. Сеть 10.8.0.0/24 — внутренняя сеть туннеля: сервер получает 10.8.0.1, первый клиент — 10.8.0.2.

5. Включаем IP forwarding

Чтобы сервер пересылал трафик клиентов в интернет, ядро должно маршрутизировать IPv4-пакеты:

echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-wireguard.conf
sysctl --system

Проверьте командой sysctl net.ipv4.ip_forward — должно быть = 1.

6. Файрвол (UFW)

Если используете UFW, нужно разрешить и порт WireGuard, и пересылку трафика из туннеля наружу. Не включайте UFW, пока не разрешили SSH, иначе потеряете доступ к серверу:

ufw allow OpenSSH
ufw allow 51820/udp
ufw route allow in on wg0 out on eth0
ufw enable
ufw status verbose

Правило ufw route allow разрешает пересылку только из wg0 во внешний интерфейс. Можно вместо этого выставить DEFAULT_FORWARD_POLICY="ACCEPT" в /etc/default/ufw, но это открывает любую пересылку; правило route — более аккуратный вариант.

7. Запуск WireGuard

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

В выводе wg show должны быть interface: wg0, порт и ваш peer. Благодаря enable туннель поднимется сам после перезагрузки.

8. Настройка клиента

Удобнее всего подготовить файл клиента на сервере и затем перенести его на устройство:

nano /etc/wireguard/client1.conf
[Interface]
PrivateKey = CLIENT1_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = SERVER_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
  • AllowedIPs = 0.0.0.0/0 — весь IPv4-трафик идёт через туннель. Если нужен доступ только к сети VPN, укажите 10.8.0.0/24 (раздельное туннелирование).
  • Про IPv6: если IPv6 в туннеле не настроен, IPv6-трафик может идти мимо него. Добавив , ::/0 в AllowedIPs, вы направите IPv6 в туннель; без IPv6 на сервере он просто не будет работать, но и не «утечёт».
  • PersistentKeepalive = 25 помогает не терять соединение за NAT — на мобильном интернете или за домашним роутером.

Компьютер: установите официальный клиент WireGuard (Windows, macOS, Linux) и импортируйте client1.conf. Скопировать файл с сервера безопасно можно через scp.

Смартфон: в приложении WireGuard выберите «Создать из QR-кода». Эта команда нарисует QR-код прямо в терминале:

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

После подключения любой сервис «мой IP» должен показывать IP-адрес вашего VPS.

9. Добавление новых устройств

Каждому устройству — своя пара ключей и свой адрес в туннеле. Для второго клиента (например, телефона с адресом 10.8.0.3):

cd /etc/wireguard
umask 077
wg genkey | tee client2.key | wg pubkey > client2.pub

Быстрый способ (только до перезапуска):

wg set wg0 peer "$(cat client2.pub)" allowed-ips 10.8.0.3/32

Peer добавится сразу, но пропадёт после рестарта. Чтобы сохранить его, добавьте новый блок [Peer] в wg0.conf и перечитайте конфигурацию без разрыва текущих соединений:

wg syncconf wg0 <(wg-quick strip wg0)

Потеряли устройство? Удалите его блок [Peer] и выполните ту же команду — этот ключ больше не подключится.

Если что-то не работает

  • Подключается, но нет интернета: проверьте sysctl net.ipv4.ip_forward, имя интерфейса в PostUp и правило ufw route.
  • Нет handshake: если в wg show не появляется «latest handshake», скорее всего, блокируется UDP 51820 или перепутаны ключи. В конфиге сервера PublicKey — это публичный ключ клиента, и наоборот.
  • Логи: journalctl -u wg-quick@wg0 покажет ошибки запуска.

Часто задаваемые вопросы

WireGuard или OpenVPN?

WireGuard новее, быстрее и проще в настройке — хороший выбор по умолчанию для личного использования. OpenVPN умеет работать по TCP и существует гораздо дольше, поэтому в некоторых корпоративных сетях его до сих пор предпочитают.

Какой сервер нужен для своего VPN?

WireGuard очень лёгкий. Для нескольких личных устройств обычно хватает 1 vCPU и 512 МБ RAM. Важнее процессора собственный публичный IP-адрес сервера и качество его канала.

Не хочу настраивать сам. Есть готовый вариант?

Да. В тарифах VPN-сервера TürkiyeVPS WireGuard или OpenVPN устанавливается автоматически после оплаты, вы получаете выделенный IP-адрес и скачиваете файл подключения в личном кабинете.

Свой VPN сервер в Турции, в Стамбуле

Хотите настроить всё сами? Тарифы VDS Enterprise включают 1 выделенный IPv4-адрес, root-доступ и безлимитный трафик; оплата принимается в USDT (TRC20). Если нужен готовый WireGuard-сервер с собственным IP, посмотрите тарифы VPN-сервера — от $1.79 в месяц, сервер настраивается автоматически после оплаты. Вопросы можно задать в онлайн-чате на сайте или через тикет в личном кабинете.