cp.lv — VPS, выделенные и облачные серверы

cp.lv (LANGMARKET LLP) — хостинг-провайдер: VPS, выделенные и облачные серверы на NVMe с выбором ОС, полным root-доступом и поддержкой 24/7. Тест-период до оплаты: выделенные серверы — 5 дней, VPS и облако — 5 часов.

Contact Info
LANGMARKET LLP
Rīga, Latvija

+371 00 000 000

Follow Us

Личный кабинет

Язык

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

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

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

curl -sSL https://cp.lv/scripts/svoj-vpn-wireguard.sh | sudo bash

…или через wget:

wget -qO- https://cp.lv/scripts/svoj-vpn-wireguard.sh | sudo bash

Содержимое скрипта svoj-vpn-wireguard.sh:

#!/usr/bin/env bash
# Свой VPN на WireGuard: сервер + первый клиент (Ubuntu/Debian)
set -euo pipefail

WG_DIR=/etc/wireguard
SERVER_IP=$(curl -s ifconfig.me)
WAN_IF=$(ip route list default | awk '{print $5; exit}')

# 1. Установка
sudo apt update && sudo apt install -y wireguard wireguard-tools qrencode

# 2. Ключи сервера и клиента
cd "$WG_DIR"
umask 077
wg genkey | sudo tee server_private.key | wg pubkey | sudo tee server_public.key
wg genkey | sudo tee client_private.key | wg pubkey | sudo tee client_public.key
SRV_PRIV=$(sudo cat server_private.key)
SRV_PUB=$(sudo cat server_public.key)
CLI_PRIV=$(sudo cat client_private.key)
CLI_PUB=$(sudo cat client_public.key)

# 3. Конфиг сервера (переменные подставятся)
sudo tee "$WG_DIR/wg0.conf" > /dev/null << EOF
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = ${SRV_PRIV}
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ${WAN_IF} -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ${WAN_IF} -j MASQUERADE

[Peer]
PublicKey = ${CLI_PUB}
AllowedIPs = 10.8.0.2/32
EOF

# 4. Включение IP-форвардинга
echo "net.ipv4.ip_forward = 1" | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf

# 5. Конфиг клиента
sudo tee "$WG_DIR/client.conf" > /dev/null << EOF
[Interface]
PrivateKey = ${CLI_PRIV}
Address = 10.8.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = ${SRV_PUB}
Endpoint = ${SERVER_IP}:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF

# 6. Firewall и запуск
sudo ufw allow 51820/udp || true
sudo systemctl enable --now wg-quick@wg0
sudo qrencode -t ansiutf8 < "$WG_DIR/client.conf"
echo "Готово: VPN поднят, конфиг клиента — $WG_DIR/client.conf"

Свой VPN на WireGuard поднимается за 15 минут: установить пакет, сгенерировать пару ключей, описать интерфейс wg0 на сервере, включить IP-форвардинг и добавить клиента. Ниже — полная последовательность команд для Ubuntu/Debian на любом VPS.

Почему именно WireGuard

WireGuard встроен в ядро Linux, использует современную криптографию (Curve25519, ChaCha20) и работает быстрее OpenVPN при меньшем объёме кода. Конфигурация — это два коротких файла. Для личного VPN этого более чем достаточно.

Минимальные требования: VPS с 1 vCPU и 512 МБ RAM, публичный IPv4, root-доступ. Для VPN подойдёт любой недорогой тариф — трафик шифрования почти не нагружает процессор.

Шаг 1. Установка

apt update && apt upgrade -y
apt install -y wireguard wireguard-tools

Шаг 2. Генерация ключей сервера

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

umask 077 защищает приватный ключ от чтения другими пользователями. Сохраните оба значения — они понадобятся в конфиге.

Шаг 3. Конфиг сервера

Определите внешний сетевой интерфейс:

ip route list default

Обычно это eth0 или ens3. Откройте /etc/wireguard/wg0.conf в редакторе (sudo nano /etc/wireguard/wg0.conf) и вставьте содержимое:

[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <server_private.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

Либо создайте файл целиком одной командой — скопируйте и вставьте в консоль (кавычки 'EOF' сохраняют плейсхолдеры как есть):

sudo tee /etc/wireguard/wg0.conf > /dev/null << 'EOF'
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <server_private.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
EOF

Замените eth0 на своё имя интерфейса и вставьте приватный ключ сервера.

Шаг 4. Включение IP-форвардинга

Без этого сервер не будет пересылать трафик клиентов в интернет:

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

Шаг 5. Ключи и конфиг клиента

Сгенерируйте пару ключей для клиента:

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

Откройте на устройстве клиента файл client.conf в редакторе (nano client.conf) и вставьте содержимое:

[Interface]
PrivateKey = <client_private.key>
Address = 10.8.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = <server_public.key>
Endpoint = <IP_вашего_VPS>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Либо запишите файл целиком одной командой (кавычки 'EOF' оставят плейсхолдеры как есть):

tee client.conf > /dev/null << 'EOF'
[Interface]
PrivateKey = <client_private.key>
Address = 10.8.0.2/24
DNS = 1.1.1.1

[Peer]
PublicKey = <server_public.key>
Endpoint = <IP_вашего_VPS>:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
EOF

AllowedIPs = 0.0.0.0/0 направляет весь трафик через VPN. PersistentKeepalive = 25 держит соединение живым за NAT.

Шаг 6. Регистрация клиента на сервере

Добавьте в конец /etc/wireguard/wg0.conf:

[Peer]
PublicKey = <client_public.key>
AllowedIPs = 10.8.0.2/32

Шаг 7. Запуск

systemctl enable --now wg-quick@wg0
systemctl status wg-quick@wg0
wg show

Откройте порт в firewall (если используете ufw):

ufw allow 51820/udp

Подключение клиента

На телефоне удобно импортировать конфиг QR-кодом:

apt install -y qrencode
qrencode -t ansiutf8 < client.conf

Отсканируйте код в приложении WireGuard — соединение поднимется автоматически.

Проверка

После подключения проверьте внешний IP:

curl ifconfig.me

Должен вернуться IP вашего VPS. Если нет — проверьте IP-форвардинг и правило MASQUERADE.

Добавление нескольких клиентов

Каждому устройству нужна своя пара ключей и свой IP из подсети. Сгенерируйте ключи для второго клиента:

cd /etc/wireguard
wg genkey | tee client2_private.key | wg pubkey > client2_public.key

Добавьте новый блок в /etc/wireguard/wg0.conf:

[Peer]
PublicKey = <client2_public.key>
AllowedIPs = 10.8.0.3/32

Примените изменения без разрыва существующих соединений:

wg syncconf wg0 <(wg-quick strip wg0)

Так конфиг перечитается «на лету», а активные пиры не отвалятся.

Резервное копирование и восстановление

Все настройки VPN хранятся в /etc/wireguard. Сохраните их в безопасное место:

tar czf wireguard-backup.tar.gz /etc/wireguard

При переносе на новый сервер распакуйте архив, установите wireguard-tools и запустите wg-quick@wg0 — клиентам менять ничего не придётся, если IP сервера сохранился.

Проверка после перезагрузки

Убедитесь, что интерфейс поднимается автоматически:

reboot
# после входа
wg show
systemctl is-enabled wg-quick@wg0

Команда enabled подтверждает автозапуск. Если интерфейс не поднялся — смотрите journalctl -u wg-quick@wg0.

Безопасность интерфейса

Приватный ключ сервера — самый чувствительный файл. Проверьте права:

chmod 600 /etc/wireguard/*.key /etc/wireguard/wg0.conf

Не передавайте приватные ключи по незашифрованным каналам и генерируйте отдельную пару на каждое устройство — так компрометация одного клиента не раскрывает остальных.

Частые вопросы

Сколько устройств можно подключить? Сколько угодно. На каждое устройство добавьте отдельный блок [Peer] с уникальным AllowedIPs (10.8.0.3/32, 10.8.0.4/32 и т.д.).

Работает ли WireGuard по UDP-only портам? Да, WireGuard использует только UDP. Убедитесь, что провайдер и firewall не блокируют выбранный порт.

Как повысить приватность DNS? Укажите в клиенте DNS = 1.1.1.1 или поднимите свой резолвер на том же VPS.

Можно ли сменить порт 51820? Да, поменяйте ListenPort в конфиге сервера и Endpoint у клиентов, откройте новый порт в firewall.

Нужен ли отдельный сервер под VPN? Отдельный VPS изолирует VPN от других задач и упрощает управление доступом. Для личного использования достаточно самого лёгкого тарифа.


Готовы развернуть личный VPN? Возьмите VPS для VPN и безопасности или базовую аренду VPS. Нет времени на настройку — поможет Администрирование серверов.

Роман Соколов

Роман Соколов

Системный администратор. Обслуживает серверные узлы и мониторинг инфраструктуры 24/7, реагируя на инциденты.