Когда я только начинала экспериментировать с VPS, идея сделать свой VPN-сервер казалась чем-то сложным. Сначала я пользовалась готовыми скриптами — удобно, быстро, но вообще не понимала, что именно происходит. А потом был момент, когда скрипт не работал, а заказчик ждал подключение через WireGuard VPN. И вот тогда я впервые вручную собрала туннель, прочувствовала всю магию
.conf
Хочу рассказать, как настроить WireGuard VPN вручную — от установки до работающего туннеля. Никаких скриптов, только ручной контроль.
Что такое WireGuard?
Если вкратце — это современный, лёгкий и очень быстрый VPN-протокол. Он работает на уровне ядра Linux, использует криптографию нового поколения, и… просто летает. Я раньше пробовала OpenVPN и IPSec, но WireGuard оказался не только быстрее, но и проще в настройке — особенно если делать всё руками.
1. Установка WireGuard на сервер
Я покажу на примере Ubuntu 22.04. Для других дистрибутивов вроде Debian или CentOS команды немного отличаются, но суть та же.
sudo apt update sudo apt install wireguard
Устанавливаются два компонента — сам
wg
2. Генерация ключей
В WireGuard нет привычных логина и пароля. Всё строится на публичных и приватных ключах. Генерируем их:
umask 077 wg genkey | tee privatekey | wg pubkey > publickey
Это создаст два файла:
privatekey
publickey
3. Настройка конфигурационного файла сервера
Создаём файл
/etc/wireguard/wg0.conf
[Interface] PrivateKey = <сюда вставьте содержимое файла privatekey> Address = 10.0.0.1/24 ListenPort = 51820 [Peer] PublicKey = <публичный ключ клиента> AllowedIPs = 10.0.0.2/32
Тут важный момент:
Address
4. Открываем порт и включаем IP forwarding
sudo ufw allow 51820/udp echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p
WireGuard туннель не будет работать, если система не разрешает пересылку IP-пакетов.
5. Запуск VPN
sudo wg-quick up wg0
И проверяем:
sudo wg
Если всё нормально, вы увидите статус подключения.
Чтобы VPN поднимался при старте сервера:
sudo systemctl enable wg-quick@wg0
6. Настройка клиента (например, Ubuntu или даже Windows)
На клиенте тоже нужен
wireguard
[Interface] PrivateKey = <приватный ключ клиента> Address = 10.0.0.2/24 DNS = 1.1.1.1 [Peer] PublicKey = <публичный ключ сервера> Endpoint = <IP VPS>:51820 AllowedIPs = 0.0.0.0/0 PersistentKeepalive = 25
Файл можно импортировать в WireGuard GUI — он есть для Windows, macOS, Android и iOS. Кнопка «Activate», и вы в туннеле.
Полезные советы из практики
- WireGuard конфиг легко копировать, архивировать и разворачивать. Один раз собрали — и можно раздавать доступ с нужными правками.
- Не забывайте про , особенно если клиент за NAT’ом.
PersistentKeepalive
- У меня VPN работает без перебоев на VPS уже второй год. В деньгах — дешевле подписки на платный сервис, в управлении — на 100% под моим контролем.
- На одном сервере можно запускать несколько туннелей, просто используйте разные порты или интерфейсы (,
wg1
и т.д.).wg2
Резюмируем
Да, скрипты — это удобно. Но когда вы понимаете, как настроить WireGuard VPN вручную, появляется настоящая свобода. Вы больше не зависите от сторонних решений, не боитесь нестандартных ситуаций и точно знаете, что происходит на каждом этапе. Для меня это был важный шаг от “юзера” к настоящему девопсу.
За стабильность — с бонусом
Долгосрочные клиенты получают больше: +1 месяц в подарок по промокоду