Как поднять свой WireGuard VPN на VPS (пошагово)

Сложность: Новичок 9 мин чтения Обновлено: 18.07.2026 20
Как поднять свой WireGuard VPN на VPS (пошагово)
Аренда дешёвого VPS и превращение его в собственный WireGuard VPN дают вам приватный туннель, которым не пользуется никто другой - без ежемесячной подписки и без компании, логирующей ваш трафик. Этот гайд проведёт вас через весь процесс на свежем сервере с Ubuntu, шаг за шагом, со всеми командами, которые нужно скопировать и вставить. Опыт работы с серверами не требуется.

Что нужно подготовить перед началом

Вот весь список покупок. Ничего экзотического тут нет, а общая стоимость - пара долларов в месяц:

  • Дешёвый VPS (виртуальный сервер). Самого младшего тарифа - 1 vCPU и 1 ГБ оперативной памяти - более чем достаточно для личного использования. При создании выбирайте Ubuntu 22.04 или 24.04.
  • Публичный IP-адрес сервера и root (или sudo) доступ по SSH. Провайдер присылает их на почту сразу после оплаты.
  • SSH-клиент. На Windows используйте встроенный ssh в PowerShell или PuTTY, на macOS и Linux просто откройте терминал.
  • VPS на базе KVM. Почти все тарифы такие, но избегайте самых дешёвых на OpenVZ - они используют общее ядро хоста и не могут загрузить WireGuard, поэтому эта настройка там не заработает. Если сомневаетесь, спросите провайдера или выберите тариф с пометкой "KVM".
  • Около 15 минут.
Почему WireGuard: это современный VPN-протокол - несколько сотен строк кода, очень быстрый и простой в настройке. По сравнению с OpenVPN он подключается быстрее, меньше расходует заряд батареи на мобильных устройствах и гораздо легче для чтения и аудита. Именно из-за этой простоты мы начинаем с него.

Шаг 1: Подключитесь и обновите сервер

Откройте терминал и войдите, заменив адрес на IP вашего сервера:

ssh root@YOUR_SERVER_IP

Первое, что нужно сделать на любом свежем сервере, - установить последние обновления безопасности:

apt update && apt upgrade -y

Шаг 2: Установите WireGuard

Одна команда устанавливает WireGuard и qrencode - небольшую утилиту, которую мы позже используем, чтобы перенести конфиг на телефон в виде QR-кода:

apt install wireguard qrencode -y

Шаг 3: Сгенерируйте ключи сервера

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

cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key

Выведите оба ключа и держите их под рукой для следующих шагов:

cat server_private.key
cat server_public.key

Шаг 4: Найдите свой сетевой интерфейс

Чтобы направить ваш трафик в интернет, серверу нужно знать имя своей публичной сетевой карты. Выполните:

ip route list default

Посмотрите на слово сразу после dev в выводе - обычно это eth0 или ens3. Запишите его; оно понадобится на следующем шаге.

Шаг 5: Создайте конфиг сервера

Создайте файл /etc/wireguard/wg0.conf (например, командой nano /etc/wireguard/wg0.conf) и вставьте блок ниже. Замените SERVER_PRIVATE_KEY на приватный ключ из Шага 3, а eth0 - на имя интерфейса из Шага 4:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Простыми словами: сервер занимает адрес 10.8.0.1 внутри приватной VPN-сети, слушает UDP-порт 51820, а две строки iptables включают маскарадинг, который позволяет вашим устройствам выходить в большой интернет через него.

Шаг 6: Включите IP-форвардинг

По умолчанию Linux не передаёт трафик с одного интерфейса на другой. Включите это через отдельный небольшой конфиг - чистый, повторяемый способ, который не конфликтует с другими настройками и не накапливается, если запустить его дважды:

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

Шаг 7: Создайте клиента и добавьте его как пир

Теперь сгенерируйте пару ключей для вашего первого устройства (ноутбука или телефона):

wg genkey | tee client_private.key | wg pubkey > client_public.key
cat client_private.key
cat client_public.key

Сообщите серверу об этом клиенте, добавив блок [Peer] в конец файла /etc/wireguard/wg0.conf. Здесь используйте публичный ключ клиента:

[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32

Шаг 8: Откройте файрвол и запустите WireGuard

Разрешите SSH (чтобы не заблокировать себе доступ) и порт WireGuard, затем включите файрвол:

ufw allow 22/tcp
ufw allow 51820/udp
ufw enable
Сначала проверьте свой SSH-порт. Если провайдер поставил SSH на нестандартный порт (не 22), разрешите именно этот порт - например ufw allow 2222/tcp - до того как выполнить ufw enable, иначе файрвол заблокирует вам доступ к собственному серверу.

Запустите туннель и настройте его автоматический старт при каждой перезагрузке:

systemctl enable --now wg-quick@wg0

Проверьте, что он работает - вы должны увидеть интерфейс и порт, который он слушает:

wg show

Шаг 9: Создайте конфиг клиента

Каждому подключающемуся устройству нужен небольшой файл конфигурации. На сервере создайте файл с именем client.conf и впишите CLIENT_PRIVATE_KEY (из Шага 7), SERVER_PUBLIC_KEY (из Шага 3) и публичный IP вашего сервера:

[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Строка AllowedIPs = 0.0.0.0/0, ::/0 - это то, что отправляет весь ваш трафик через туннель. Настройка DNS = 1.1.1.1 не даёт вашим запросам утекать к местному провайдеру. Именно этот client.conf вы загружаете на каждое устройство ниже.

Шаг 10: Установите приложение WireGuard и подключитесь

У WireGuard есть бесплатное официальное приложение для каждой платформы. Загрузить ваш client.conf можно двумя способами: отсканировать QR-код (проще всего на телефонах) или импортировать файл (проще всего на компьютерах). Чтобы сделать QR-код, выполните эту команду на сервере и держите окно терминала широким, чтобы код не исказился:

qrencode -t ansiutf8 < client.conf

Android: установите приложение WireGuard из Google Play. Откройте приложение, нажмите кнопку +, выберите Scan from QR code, наведите камеру на код в терминале, дайте туннелю имя, затем переключите тумблер для подключения.

iPhone и iPad: установите приложение WireGuard из App Store. Нажмите +, выберите Create from QR code, отсканируйте код, назовите туннель и включите его. Разрешите конфигурацию VPN, когда iOS попросит.

Windows: скачайте приложение с wireguard.com/install. Скопируйте ваш client.conf на ПК, откройте приложение, нажмите Import tunnel(s) from file, выберите client.conf, затем нажмите Activate.

macOS: установите приложение WireGuard из Mac App Store. Нажмите Import tunnel(s) from file, выберите ваш client.conf, разрешите конфигурацию VPN, затем нажмите Activate.

Linux (десктоп): установите пакет командой apt install wireguard (или эквивалентной для вашего дистрибутива; см. wireguard.com/install), скопируйте client.conf в /etc/wireguard/ и поднимите его командой wg-quick up client. Отключить - командой wg-quick down client.

Добавляете ещё одно устройство? Повторите Шаг 7 для каждого нового телефона или ноутбука: сгенерируйте новую пару ключей, выдайте устройству следующий свободный адрес (10.8.0.3/32, затем 10.8.0.4/32 и так далее), добавьте его собственный блок [Peer] в wg0.conf и примените изменение командой systemctl restart wg-quick@wg0. Дайте каждому устройству свой ключ - никогда не загружайте один конфиг на два устройства сразу.

Шаг 11: Убедитесь, что туннель действительно работает

Включите подключение и проверьте две вещи на нашей странице Сетевые инструменты. Первое: интернет должен видеть IP вашего сервера, а не домашний - страница показывает ваш текущий IP и страну прямо вверху. Второе: откройте вкладку DNS Leak Test и запустите проверку - каждый резолвер в списке должен принадлежать вашему DNS-провайдеру, а не домашнему интернет-провайдеру. Если обе проверки в порядке, у вас рабочий приватный VPN.

Частые ошибки

  • Неправильное имя интерфейса. Если eth0 в конфиге не совпадает с тем, что показал Шаг 4, трафик подключится, но никогда не дойдёт до интернета. Это причина номер один туннеля в состоянии "подключено, но интернета нет".
  • Забыли про IP-форвардинг. Пропуск Шага 6 даёт тот же тупиковый симптом. Перезапустите sysctl --system и проверьте, что cat /proc/sys/net/ipv4/ip_forward возвращает 1.
  • Файрвол провайдера. У некоторых хостеров есть свой файрвол в панели управления поверх ufw. Убедитесь, что UDP 51820 открыт и там тоже.
  • Перепутали ключи. Конфиг сервера хранит публичный ключ клиента; конфиг клиента хранит публичный ключ сервера. Приватные ключи никогда не покидают машину, на которой были созданы.
  • IPv6 проскакивает мимо туннеля. Этот гайд направляет IPv6 в туннель (::/0), но настраивает сервер только под IPv4, поэтому некоторые сайты, работающие только по IPv6, могут грузиться медленно или вообще не открываться. Если такое случилось, проще всего отключить IPv6 на устройстве-клиенте или позже добавить поддержку IPv6 на сервере.
  • Сбитые часы. С WireGuard всё в порядке, но если часы сервера сильно сбиты, ломается TLS к сайтам. Выполните timedatectl и при необходимости включите NTP.

Когда обычного WireGuard недостаточно

Собственный туннель WireGuard отлично подходит для приватности - ваш трафик зашифрован и привязан к серверу, которым пользуетесь только вы. Но в странах с агрессивной цензурой у него есть слабое место: системы глубокой инспекции пакетов (DPI) могут распознать трафик WireGuard по его отпечатку и замедлить или отбрасывать его, даже если не могут прочитать, что внутри. Операторы в России, например, перешли к блокировке VPN на устройствах ТСПУ, установленных в каждой сети, а регуляторы там открыто продвигают тотальную блокировку VPN-трафика. Если ваша цель - обход именно такого DPI, а не повседневная приватность, лучше подойдёт протокол, который маскируется под обычный HTTPS, - например VLESS с Reality. Эту настройку мы разберём в отдельном гайде этого раздела.

Законно ли держать собственный VPN?

В большинстве стран мира арендовать сервер и держать на нём собственный VPN совершенно законно - это та же технология, которую компании используют для удалённой работы. Однако вы отвечаете за то, что делаете через него: VPN меняет то, откуда якобы приходит ваш трафик, но не ставит вас выше закона. Небольшое число стран ограничивает или лицензирует использование VPN, поэтому проверьте правила там, где вы реально живёте. И помните о честных пределах самостоятельного хостинга: ваш трафик приватен от локальной сети и вашего интернет-провайдера, но компания, которая сдаёт вам VPS, всё равно видит, что сервер по этому IP существует и сколько данных он передаёт. Для большинства людей этот компромисс более чем оправдан - вы получаете туннель, который никто больше не делит с вами, на ваших условиях.

Держите это своим: делайте резервную копию /etc/wireguard/ в надёжном месте, никогда не делитесь приватным ключом и создавайте отдельный блок [Peer] со своей парой ключей для каждого нового устройства вместо повторного использования одного. Если устройство потеряется, вы сможете отозвать только этот пир. Когда устройство настроено, удалите оставшиеся клиентские файлы с сервера, чтобы его приватный ключ там не валялся: rm client.conf client_private.key.
Идём дальше: хотите, чтобы сервер вообще не хранил записей? Смотрите отдельный гайд Как заставить свой VPS не хранить логи.
Теги: wireguard vpn vps self-hosted privacy tutorial linux