
Настройка WireGuard на VPS — свой VPN за считаные минуты
WireGuard VPS — это виртуальный сервер под вашим контролем, на котором работает VPN WireGuard на уровне ядра: у вас появляется выделенный выходной IP-адрес, который не сможет логировать ни один коммерческий провайдер. VPS без KYC на тарифе S1 от $5/мес разворачивается примерно за 47 секунд; WireGuard ставится тремя пакетами, ключи создаёт wg genkey, а весь трафик уходит в сеть через один сервер. Единственные ключи — у вас.
Коммерческие VPN просят вас довериться маркетинговой странице. Собственный VPN заменяет это доверие контролем: сервер ваш, ключи генерируете вы, политику логирования задаёте вы (никакого логирования), а выходной IP-адрес принадлежит только вам, а не общему пулу, который давно помечен всеми антифрод-вендорами. Именно WireGuard делает такой подход практичным: в нём около 4 000 строк кода, с версии 5.6 он входит в ядро Linux, а рабочий туннель описывается десятком строк конфигурации.
В этом руководстве мы построим полноценный сервер WireGuard на VPS без KYC, оплаченном в Monero (XMR), — без документов, без телефона и без подтверждения почты. Вы развернёте машину, подготовите сеть (IP forwarding и NAT в nftables), напишете конфиги сервера и клиента вручную, чтобы понимать каждую строку, добавите пиры (peers) для ноутбука и телефона и подключите kill-switch (аварийную блокировку трафика), чтобы при обрыве туннеля ничего не утекло.
Почему WireGuard и почему собственный сервер
Вариантов три: коммерческий VPN, OpenVPN на собственном сервере или WireGuard на собственном сервере. Для большинства пользователей, которые разбираются в приватности, выигрывает третий.
WireGuard против OpenVPN
- Кодовая база: в WireGuard около 4 000 строк, и аудит его кода занимает полдня. OpenVPN вместе с зависимостью от OpenSSL — это далеко за 100 000 строк, а значит, куда более обширная поверхность атаки.
- Криптография: WireGuard поставляется с одним фиксированным современным набором алгоритмов (Curve25519, ChaCha20-Poly1305, BLAKE2s). Согласования шифров нет, а значит, нет и понижения до слабого шифра, которое можно неправильно настроить. Гибкость OpenVPN — это ещё и лёгкий способ выстрелить себе в ногу.
- Скорость: WireGuard работает в ядре, а рукопожатие занимает один обмен пакетами туда и обратно (round trip). На скромном VPS он загружает канал в 1 Гбит/с целиком; OpenVPN в пользовательском пространстве на том же железе обычно упирается в заметно более низкий потолок.
- Роуминг: WireGuard — протокол без установления соединения (он работает поверх UDP). Переключились с Wi-Fi на LTE — туннель просто продолжает работу; для телефона это идеально.
Свой сервер или коммерческий VPN
Коммерческий VPN продаёт вам место в общем пуле IP-адресов, которым пользуются тысячи других людей, в том числе нарушители. Эти пулы заранее помечены стриминговыми сервисами, банками и антифрод-вендорами, а вам приходится верить непроверяемому обещанию «без логов». Собственный выходной узел на WireGuard даёт чистый выделенный IP-адрес, которым больше никто не пользуется, политику логирования, выставленную в ноль, и ключи, которые есть только у вас. Обратная сторона: этот IP-адрес — очевидно один-единственный статический адрес, поэтому он отлично подходит для приватного выхода и совершенно не годится, чтобы затеряться в толпе. Если нужна анонимность в толпе, добавьте сверху Tor. Какой инструмент подходит для какой задачи, смотрите в сценариях использования собственного VPN.
Развёртывание VPS без KYC под выходной узел
Выберите регион, ближайший к тому месту, где вы хотите «находиться» с точки зрения внешнего мира. CryptoVpsHost держит одинаковое оборудование на AMD EPYC в Рейкьявике (REK), Цюрихе (ZRH), Бухаресте (OTP) и Париже (PAR). Для личного VPN более чем достаточно тарифа S1 (2 vCPU / 4 ГБ DDR5 / 80 ГБ NVMe Gen5, от $5/мес): WireGuard настолько лёгкий, что процессор редко становится узким местом раньше, чем канал в 1 Гбит/с.
- Аккаунт: email и пароль — вот и все учётные данные. Без документов, без телефона, без подтверждения почты, без капчи. Подойдёт одноразовый адрес.
- Оплата: пополните баланс с помощью Monero (XMR) — он зачисляется примерно за 30 секунд — или в любой из 8 поддерживаемых монет. Развёртывание серверов затем списывает средства с баланса. При пополнении на $100 вы получаете бонус +30 %.
- Образ: выберите Debian 13 или Ubuntu 24.04. В обоих ядро поставляется со встроенным модулем WireGuard.
- Развёртывание: медианное время сборки — около 47 секунд. Вы получаете root-доступ и чистый IP-адрес.
Если вы предпочитаете не вводить ни одной команды вручную, откройте страницу заказа и учтите: всё, что описано ниже, можно также вставить в поле cloud-init / первой загрузки.
Установка WireGuard и включение IP forwarding
Подключитесь по SSH под root и установите нужные пакеты. В Debian/Ubuntu:
apt update && apt install -y wireguard wireguard-tools nftables
# turn the box into a router
cat > /etc/sysctl.d/99-wireguard.conf <<'EOF'
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
EOF
sysctl --systemТеперь сгенерируйте пару ключей сервера. Команда umask 077 гарантирует, что закрытый ключ никому, кроме владельца, не будет доступен для чтения:
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.key
cat server_private.key # you'll paste this into wg0.conf
cat server_public.key # clients need thisУзнайте имя внешнего сетевого интерфейса (оно понадобится для правила NAT) и свой публичный IP-адрес:
ip route get 1.1.1.1 | awk '{print $5; exit}' # e.g. eth0 or ens3
curl -4 ifconfig.co # your public IPv4Закрытый ключ должен оставаться только на сервере. Пароль root от сервера без KYC хранится в зашифрованном виде (AES-256), но ключи вашего VPN принадлежат только вам: никогда не вставляйте закрытый ключ сервера в клиент.
Серверный конфиг (wg0.conf)
Создайте файл /etc/wireguard/wg0.conf. В примере используются туннельная подсеть 10.8.0.0/24 и fd86:ea04:1115::/64 для IPv6. Вместо SERVER_PRIVATE_KEY подставьте сгенерированное значение, а вместо eth0 — имя вашего реального интерфейса из предыдущего шага.
[Interface]
Address = 10.8.0.1/24, fd86:ea04:1115::1/64
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
# NAT: masquerade tunnel traffic out the public NIC
PostUp = nft add table inet wg; \
nft add chain inet wg postrouting '{ type nat hook postrouting priority 100 ; }'; \
nft add rule inet wg postrouting oifname "eth0" masquerade
PostDown = nft delete table inet wg
# --- peers are appended below, one [Peer] per client ---Правило PostUp — это и есть весь слой NAT: оно переписывает адрес отправителя в пакетах, выходящих из туннеля, так что они выглядят отправленными с публичного IP-адреса VPS, а парное правило PostDown аккуратно убирает его при остановке. Если вы предпочитаете ufw, выполните ufw route allow in on wg0 out on eth0 и добавьте вместо этого блок masquerade в /etc/ufw/before.rules, но решение на nftables, приведённое выше, обходится без дополнительных файлов.
Откройте порт WireGuard и поднимите туннель:
ufw allow 51820/udp # if using ufw
systemctl enable --now wg-quick@wg0
wg show # confirm the interface is upКлючи и пир (peer) для каждого устройства
У каждого клиента (ноутбук, телефон) своя пара ключей. Для удобства её можно сгенерировать на сервере, но лучше — на самом устройстве, чтобы закрытый ключ никогда его не покидал. На клиенте:
umask 077
wg genkey | tee client_private.key | wg pubkey > client_public.keyЗатем добавьте в конец wg0.conf на сервере блок [Peer] с открытым ключом клиента. Каждому пиру нужен уникальный IP-адрес в туннеле:
[Peer]
# laptop
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.8.0.2/32, fd86:ea04:1115::2/128
[Peer]
# phone
PublicKey = PHONE_PUBLIC_KEY
AllowedIPs = 10.8.0.3/32, fd86:ea04:1115::3/128Примените изменения, не разрывая действующие туннели:
wg syncconf wg0 <(wg-quick strip wg0)Обратите внимание на асимметрию: на сервере AllowedIPs — это узкий туннельный IP-адрес конкретного клиента (запись маршрутизации/ACL). На клиенте AllowedIPs — это широкое значение 0.0.0.0/0 (то, что нужно отправлять через туннель). Перепутать их — самая частая ошибка при настройке WireGuard.
Клиентский конфиг для всех платформ и kill-switch
На клиенте создайте wg0.conf (или вставьте его содержимое в приложение). Endpoint — это публичный IP-адрес вашего VPS и порт, на котором он слушает. AllowedIPs = 0.0.0.0/0, ::/0 направляет через VPN весь трафик:
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.8.0.2/32, fd86:ea04:1115::2/128
DNS = 9.9.9.9, 2620:fe::fe
[Peer]
PublicKey = SERVER_PUBLIC_KEY
Endpoint = YOUR_VPS_IP:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25- Linux: сохраните файл как
/etc/wireguard/wg0.conf, затем выполнитеwg-quick up wg0. ПараметрPersistentKeepalive = 25не даёт туннелю оборваться за NAT. - macOS / Windows: установите официальное приложение WireGuard, импортируйте файл или отсканируйте QR-код.
- iOS / Android: установите WireGuard из магазина приложений. Сгенерируйте QR-код на сервере командой
qrencode -t ansiutf8 < client.conf(apt install qrencode) и отсканируйте его — печатать ничего не придётся.
Kill-switch
Поскольку AllowedIPs на клиенте равен 0.0.0.0/0, ::/0, wg-quick автоматически устанавливает kill-switch на основе маршрутизации: он делает туннель маршрутом по умолчанию и добавляет правило fwmark, которое отбрасывает любой пакет, не предназначенный для туннеля. Если WireGuard остановится, этот маршрут по умолчанию исчезнет, и трафик заблокируется (fail closed), а не утечёт через ваш реальный интерфейс. Чтобы ужесточить защиту в Linux, добавьте правила nftables в PostUp/PreDown, блокирующие весь исходящий трафик, кроме wg0 и рукопожатия с вашим endpoint. В мобильных приложениях это реализовано переключателем «Block untunneled traffic / Exclude private IPs» (блокировка трафика вне туннеля) — включите его.
Убедитесь, что выходной IP теперь принадлежит вашему VPS: команда curl -4 ifconfig.co должна вернуть адрес сервера, а не адрес вашего провайдера. О том, как защитить сервер, который должен работать круглосуточно, читайте в руководстве по защите SSH.
- Разверните VPS без KYC
Создайте аккаунт, указав только email и пароль, пополните баланс в Monero (XMR) и разверните VPS S1 (от $5/мес) с Debian 13 или Ubuntu 24.04 в выбранном регионе. Сборка занимает около 47 секунд, после чего вы получаете root-доступ на чистом выделенном IP-адресе.
- Установите WireGuard
apt update && apt install -y wireguard wireguard-tools nftables qrencode. Модуль WireGuard входит в ядро, так что ничего компилировать не нужно. - Включите IP forwarding
Запишите
net.ipv4.ip_forward = 1иnet.ipv6.conf.all.forwarding = 1в/etc/sysctl.d/99-wireguard.confи выполнитеsysctl --system. Это превращает VPS в маршрутизатор, который сможет пересылать ваш трафик в интернет. - Сгенерируйте пару ключей сервера
В каталоге
/etc/wireguardвыполнитеumask 077; wg genkey | tee server_private.key | wg pubkey > server_public.key. Закрытый ключ навсегда остаётся на сервере; открытый попадает в конфигурацию каждого клиента. - Напишите wg0.conf с правилом NAT
Создайте
/etc/wireguard/wg0.confс блоком[Interface](Address 10.8.0.1/24, ListenPort 51820, ваш закрытый ключ) и правилом masquerade для nftables вPostUpна внешнем интерфейсе. Откройте в файрволе UDP-порт 51820. - Добавьте пир для каждого устройства
Сгенерируйте пару ключей на каждом устройстве, затем добавьте в серверный конфиг блок
[Peer]с открытым ключом клиента и уникальным туннельным IP-адресом (например, 10.8.0.2/32). Примените изменения на лету командойwg syncconf wg0 <(wg-quick strip wg0). - Запустите туннель и подключите клиентов
Выполните на сервере
systemctl enable --now wg-quick@wg0. На каждом клиенте укажитеAllowedIPs = 0.0.0.0/0, ::/0иEndpoint = YOUR_VPS_IP:51820и поднимите туннель; на телефоне достаточно отсканировать QR-код, созданный черезqrencode. - Проверьте и включите kill-switch
Выполните на клиенте
curl -4 ifconfig.co— в ответе должен быть IP-адрес VPS. Включите в приложении «Block untunneled traffic» (или положитесь на блокировку при обрыве, которую обеспечивает маршрут по умолчанию в wg-quick), чтобы при падении туннеля ничего не утекло.
Вопросы, заслуживающие ответа
Приватнее ли собственный VPN на WireGuard, чем коммерческий?
Хватит ли VPS S1 за $5 по скорости для VPN?
Можно ли оплатить VPS без документов и KYC?
Чем отличается AllowedIPs на сервере от AllowedIPs на клиенте?
Есть ли в WireGuard встроенный kill-switch?
Изучайте дальше
Разверните свой офшорный сервер.
Выберите регион. Выберите тариф. Вставьте ключ. Оплатите. Следующие 47 секунд — за нами.