Гайд

Запустіть власний VPN на офшорному VPS

Комерційні VPN вимагають довіряти політиці відсутності логів, написаній їхнім маркетингом. Ваш власний VPS не має чого логувати, окрім того, що ви налаштуєте. Ось повна конфігурація WireGuard — і чесний перелік компромісів.

Чому self-hosted кращий за комерційний VPN

«Відсутність логів» у комерційного VPN — це політика. Відсутність логів на вашому VPS — це архітектура. Ця різниця важить більше за будь-який аудит:

  • VPN-провайдер бачить все за замовчуванням. Трафік тисяч користувачів завершується на серверах, які компанія повністю контролює. Опечатана ухвала плюс тиха зміна політики логування невидимі для вас — і таке вже траплялося, у провайдерів, про яких ви чули.
  • На власному VPS ви контролюєте весь стек. Ваш sshd, ваш диск, ваша конфігурація WireGuard. Ми нічого не запускаємо всередині вашої віртуалки і не ведемо жодних логів активності чи з'єднань на мережевому рівні. Ми не бачимо всередину вашого VPS; VPN-компанія визначається саме тим, що бачить усередині свого тунелю.
  • Юрисдикція працює на вас. Ваша точка виходу живе там, де ви її розгортаєте — поза межами альянсів стеження, якщо оберете, і підпорядковується судам юрисдикції хостингу, а не країні реєстрації VPN-компанії.

І чесний контраргумент: self-hosted VPN має виділену IP-адресу, яка належить лише вам. Сайти не позначатимуть її як VPN (це реальне покращення якості життя), але весь ваш трафік йде з однієї адреси — ви не зливаєтеся з натовпом із тисяч. Якщо вам потрібна анонімність натовпу — використовуйте Tor. Якщо потрібна надійна інфраструктура — ніщо не замінить сервер, який ви контролюєте.

Що ми будуємо

Телефон і ноутбук → тунель WireGuard → SV-Pro у вибраній локації → відкритий інтернет. IPv4-форвардинг з NAT на сервері, повне тунелювання на клієнтах (0.0.0.0/0), DNS через 9.9.9.9. Приклад IP сервера: 185.220.101.14 — підставте свій. Базова ОС — Debian 13; якщо ви ще не захистили сервер, спершу пройдіть чекліст на 30 хвилин , а потім повертайтеся.

Налаштування сервера на Debian 13

Встановлення та генерація ключів

apt update && apt install -y wireguard qrencode

cd /etc/wireguard
umask 077

# server keypair
wg genkey | tee server.key | wg pubkey > server.pub

# one keypair per client device (laptop shown; repeat for phone)
wg genkey | tee laptop.key | wg pubkey > laptop.pub

Генерація клієнтських ключів на сервері прийнятна для першого налаштування, оскільки конфіги все одно передаються через SSH. Для суворішої гігієни генеруйте ключі на кожному пристрої і вставляйте лише публічні ключі в конфіг сервера.

Створення wg0.conf

# /etc/wireguard/wg0.conf
[Interface]
Address    = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <contents of server.key>
PostUp     = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown   = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# laptop
[Peer]
PublicKey  = <contents of laptop.pub>
AllowedIPs = 10.10.0.2/32

# phone — repeat the block with 10.10.0.3/32

Перевірте назву uplink-інтерфейсу командою ip route | grep default — на образах VPSRento це eth0, але якщо у вас інша, відкоригуйте рядки MASQUERADE.

Увімкнення форвардингу та запуск

# turn on IPv4 forwarding, persist across reboots
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-wireguard.conf
sysctl -p /etc/sysctl.d/99-wireguard.conf

# firewall: one UDP port, nothing else
ufw allow 51820/udp comment 'WireGuard'

# bring it up, now and on boot
systemctl enable --now wg-quick@wg0
wg show

wg show має вивести інтерфейс, порт прослуховування та ваших пірів. Рядків handshake ще не буде — вони з'являться, коли підключиться клієнт.

Конфігурація клієнта

На ноутбуці — laptop.conf:

[Interface]
PrivateKey = <contents of laptop.key>
Address    = 10.10.0.2/32
DNS        = 9.9.9.9

[Peer]
PublicKey           = <contents of server.pub>
AllowedIPs          = 0.0.0.0/0, ::/0
Endpoint            = 185.220.101.14:51820
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0, ::/0 маршрутизує все через тунель — пізніше можна змінити на split tunnel, якщо захочете. PersistentKeepalive підтримує з'єднання через домашній NAT. Для телефона нічого не вводьте: згенеруйте конфігураційний файл телефона на сервері та відобразіть його як QR-код у терміналі:

# prints a scannable QR in the terminal — scan it with the WireGuard app
qrencode -t ansiutf8 < phone.conf

Активуйте, потім перевірте з будь-якого клієнта: curl ifconfig.me має відповісти IP вашої VPS, а тест на витік DNS має показати оператора 9.9.9.9's — не вашого провайдера.

Нотатки щодо продуктивності

WireGuard живе в ядрі та працює на ChaCha20 — на вузлах AMD EPYC один тунель реально передає 600–900 Мбіт/с через NAT, тобто порт насичується задовго до того, як навантажиться CPU. Обмеженням ніколи не є шифр; ним є умови трафіку тарифного плану. VPN — це чиста смуга: кожен завантажений гігабайт рахується один раз на вхід і один раз на вихід. На планах із лімітованим трафіком ця арифметика важлива. На SV-Pro — $19.99/міс, безліміт на 1 Гбіт/с — ні, і саме тому SV-Pro — план, на який ми орієнтуємо тих, хто будує VPN. Один клієнт тримає всю сім'ю на одному SV-Pro в Амстердамі і досі не знайшов його межі.

Multi-hop: вхід в Амстердамі, вихід у Рейк'явіку

Для другого шару з'єднайте дві VPS у різних юрисдикціях. Вхідний вузол у Нідерландах (низька затримка до вас), WireGuard-тунель між двома серверами, вихідний вузол в Ісландії (юрисдикція, з якої ви насправді хочете, щоб ваш трафік виходив). Ваші пристрої бачать одну точку в Амстердамі; інтернет бачить IP у Рейк'явіку; вхідний вузол бачить лише шифротекст, що проходить крізь. Механічно це ті самі конфіги, які ви щойно написали, двічі — другий wg інтерфейс на вхідному вузлі, чий маршрут за замовчуванням вказує на вихідний тунель. Ціна — приблизно 40–60 мс додаткової затримки та ще одна $5.99–6.89 VPS. Це варте того, коли ваша модель загроз має бюджет; декор, коли ні.

Чесні обмеження

  • Тепер ви оператор. Оновлення, ротація ключів і аптайм — на вас. unattended-upgrades та чекліст з посилення безпеки покривають більшу частину; решта — час від часу apt upgrade у неділю.
  • Один IP — одна ідентичність. Спостерігачі можуть корелювати все, що виходить з вашої адреси. Коли це має значення, розгорніть заново в іншій локації — через 55 секунд у вас свіжий вихід і свіжий IP, перевірений проти 40+ чорних списків.
  • VPS — це не Tor. Ця конфігурація захищає вас від вашого провайдера, від ворожого Wi-Fi і від VPN-компаній. Проти державного рівня загрози, який спостерігає за обома кінцями тунелю, існує часова кореляція. Знайте, в якому бою ви берете участь.

Ваш тунель. Ваші логи: жодних.

SV-Pro — 4 vCPU, 8 ГБ RAM, безлімітний 1 Gbps — вибір творців VPN за $19.99/міс. Root за 55 секунд.

Українська