WireGuard — это современный способ поднять VPN. Крошечный протокол (около 4 000 строк кода в ядре против ~600 000 у OpenVPN), часть mainline-ядра Linux с 5.6 (2020), на одинаковом железе стабильно обгоняет OpenVPN в 3–4 раза при долях процента CPU. На нём построены Mullvad, ProtonVPN, NordLynx, Tailscale и почти все современные VPN-продукты под капотом. Поднять собственный на VPS — одна команда. В этой статье — как именно.
WireGuard vs OpenVPN, одним абзацем
| Размер кодовой базы | WireGuard ~4k строк · OpenVPN ~600k строк |
| Где работает | WireGuard: в ядре Linux · OpenVPN: userspace-демон |
| Скорость на том же VPS | WireGuard 800–950 Мбит/с · OpenVPN 150–300 Мбит/с (типично) |
| Накладной latency | WireGuard +~1 мс · OpenVPN +~3–5 мс |
| Handshake / переподключение | WireGuard <100 мс (рассчитан на мобильную сеть) · OpenVPN 1–3 с |
| Криптография | WireGuard: ChaCha20-Poly1305 + Curve25519, фиксировано · OpenVPN: настраивается, чаще AES-256-GCM |
| Файл конфига | WireGuard: ~10 строк · OpenVPN: ~50–200 строк + отдельная цепочка сертификатов |
| Удобство аудита | WireGuard: маленький, формально проанализирован · OpenVPN: большая поверхность, зрелый, но тяжёлый |
Шаг 1 — получить VPS
Подойдёт любой тариф NetGrid Host — даже Starter за €2.98/мес с лихвой хватит личному VPN на несколько устройств. Локацию выбирайте по тому, где хотите чтобы IP «находился»: Германия, Нидерланды, Швейцария — частые выборы для приватности/EU-юрисдикции; США — для доступа к US-only сервисам; ваш выбор зависит от задачи. Развернёт за минуту, IP, root-пароль и SSH-порт придут на почту.
Шаг 2 — установка одной командой
Подключитесь по SSH под root:
ssh -p <ПОРТ> root@<IP-ВАШЕГО-VPS>Запустите проверенный WireGuard installer от Nyr (лицензия BSD-2, один bash-файл, которым с 2020 года пользуются сотни тысяч self-hosters):
curl -O https://raw.githubusercontent.com/Nyr/wireguard-install/master/wireguard-install.sh
bash wireguard-install.shУстановщик интерактивный — задаёт 4 вопроса:
- Public IPv4 address — определяется автоматически, просто Enter.
- Public DNS for clients — выберите `Cloudflare (1.1.1.1)` или `Google (8.8.8.8)`. Это резолверы, которые ваши устройства будут использовать *пока VPN включён*.
- Name for the first client — `my-laptop`, `my-phone`, любое запоминаемое имя.
- Press any key to continue — и дальше скрипт делает всё сам.
Что делает скрипт под капотом
- Определяет ОС (Ubuntu / Debian / Fedora / RHEL / Rocky / AlmaLinux / CentOS Stream — все поддерживаются).
- Ставит `wireguard`, `qrencode`, `iptables`.
- Генерирует пару ключей сервера (private/public).
- Пишет `/etc/wireguard/wg0.conf` (серверный конфиг).
- Включает форвардинг IPv4/IPv6 (`net.ipv4.ip_forward`, `net.ipv6.conf.all.forwarding`).
- Добавляет NAT-правила iptables, чтобы трафик уходил с VPS под его публичным IP.
- Генерирует ключи первого клиента, кладёт `/root/<имя-клиента>.conf`.
- Стартует и включает `[email protected]` для автозапуска при ребуте.
- Печатает в терминал QR-код, в который зашит весь клиентский конфиг.
Шаг 3 — подключиться с устройства
Поставьте официальное приложение WireGuard:
| iOS | App Store |
| Android | Google Play |
| macOS | App Store |
| Windows | wireguard.com/install/ |
| Linux | `apt install wireguard` (Debian/Ubuntu) или `dnf install wireguard-tools` (RHEL-семейство) |
На телефоне — откройте приложение, + → Создать из QR-кода → наведите камеру на QR в SSH-терминале → дайте имя туннелю → переключатель. Подключено.
На десктопе — скопируйте `.conf` файл с VPS, в WireGuard-приложении Add Tunnel → Import tunnel(s) from file. Чтобы скопировать:
# С вашего ноутбука, замените <port> и <ip>:
scp -P <port> root@<server-ip>:/root/my-laptop.conf ./Шаг 4 — проверить, что работает
- До включения VPN — откройте https://geomyip.com, запомните свой реальный IP и страну.
- Включите туннель WireGuard в приложении.
- Перезагрузите https://geomyip.com — IP должен стать IP вашего VPS, страна — той, в которой вы заказали сервер.
- На сервере проверьте состояние туннеля: `sudo wg show` — увидите `latest handshake: a few seconds ago` и `transfer: X received, Y sent` для подключённого peer-а.
Добавить ещё устройства потом
Запустите установщик ещё раз — получите меню (добавить, удалить, удалить полностью):
bash wireguard-install.shВыберите Add a new user, дайте имя — свежий `.conf` и QR появятся в `/root/<имя>.conf`.
Где живут конфиги
| Серверный конфиг | `/etc/wireguard/wg0.conf` — не делитесь, в нём приватный ключ сервера |
| Клиентские конфиги | `/root/<имя-клиента>.conf` — это то, что отдаём на устройства |
| systemd-сервис | `[email protected]` (стартует и автостартует на ребуте) |
| Текущий статус | `sudo wg show` и `sudo wg show wg0` |
Частые грабли
- Локальный фаервол (ufw / firewalld) блокирует UDP 51820. Установщик Nyr добавляет iptables-правила, но не трогает ufw/firewalld. Если включён один из них — откройте порт WireGuard: `sudo ufw allow 51820/udp` или `sudo firewall-cmd --permanent --add-port=51820/udp && sudo firewall-cmd --reload`. Полная картина — в статье про фаервол и порты.
- Некоторые мобильные операторы / hotel Wi-Fi режут UDP 51820. Запустите установщик ещё раз, выберите более «дружелюбный» порт типа `443` (UDP) — он почти везде разрешён, потому что это HTTPS.
- Speedtest после подключения показывает меньше чем дома. Это нормально — см. статью про скорость интернета. Пропускная способность VPN ограничена самым узким звеном на пути: ваша домашняя сеть, сеть сервера, любой транзит между.
- `sudo wg show` показывает 0 peers или нет handshake. Клиент не подключился. Проверьте что публичный IP в клиентском конфиге реально указывает на сервер, что UDP 51820 открыт со стороны клиента, и что вы импортировали правильный `.conf`.
Если что-то надо подебажить на VPS — общий чеклист команд в статье «Полезные команды диагностики Linux-сервера».
VPS от€1.99в месяц
Безлимитный трафик, порт 1 Гбит/с и NVMe-хранилище. 12 локаций в Европе и США.