---
title: "Личный VPN на WireGuard: настройка на своём VPS"
description: "Как поднять свой VPN на WireGuard на VPS с Ubuntu или Debian: ключи, конфиг wg0.conf, NAT и пересылка, порт 51820/udp, клиент для телефона по QR-коду."
url: https://tihost.io/blog/wireguard-vpn-on-vps
language: ru
section: "Руководства"
published: 2026-10-05
updated: 2026-10-05
publisher: Tihost (https://tihost.io)
---

# Личный VPN на WireGuard: настройка на своём VPS

> **Коротко:** Личный VPN на WireGuard поднимается на VPS за 20-30 минут: установите пакет wireguard, сгенерируйте ключи командой `wg genkey`, опишите туннель в /etc/wireguard/wg0.conf с адресом 10.8.0.1/24 и портом 51820, включите пересылку пакетов и NAT, откройте 51820/udp и запустите `systemctl enable --now wg-quick@wg0`. Телефон подключается сканированием QR-кода, а для одного-двух человек хватает самого младшего тарифа.

**Главное:**

- WireGuard - VPN-протокол, встроенный в ядро Linux с версии 5.6: на VPS с Ubuntu или Debian он ставится командой `sudo apt install wireguard` и настраивается одним файлом `/etc/wireguard/wg0.conf`.
- Сервер WireGuard по умолчанию слушает UDP-порт 51820; в файрволе открывают только его - `sudo ufw allow 51820/udp`.
- Чтобы весь трафик клиента шёл через VPS, на сервере включают `net.ipv4.ip_forward=1` и NAT (iptables MASQUERADE), а в конфиге клиента указывают `AllowedIPs = 0.0.0.0/0`.
- Конфиг WireGuard переносится на телефон QR-кодом: `qrencode -t ansiutf8 < phone.conf` рисует код прямо в терминале, его сканирует официальное приложение WireGuard.
- Личному VPN на одного-двух человек хватает VPS с 1 vCPU и 2 ГБ памяти - на Tihost такой сервер стоит $4.00 в месяц.

> Используйте VPN в соответствии с законодательством своей страны. Команды рассчитаны на Ubuntu 22.04/24.04 и Debian 12; перед началом пройдите [первую настройку сервера](https://tihost.io/blog/vps-first-setup) и убедитесь, что SSH разрешён в UFW.

## Зачем свой VPN на VPS

- **Защищённое подключение в публичных Wi-Fi** - в кафе, отеле или аэропорту весь трафик идёт до вашего сервера в зашифрованном туннеле;
- **доступ к своим сервисам** - админки, базы данных и мониторинг можно закрыть от интернета и открыть только для адресов VPN-сети `10.8.0.0/24`;
- **доступ к домашней сети** - домашний роутер или мини-сервер подключается к тому же VPS как ещё один клиент, и вы достаёте до него из любой точки;
- **фиксированный IP** - в белые списки рабочих систем, панелей и файрволов достаточно добавить один публичный IPv4-адрес сервера.

WireGuard проще OpenVPN и IPsec: конфиг занимает десяток строк, ключи - короткие строки, как в SSH, а соединение восстанавливается само при смене сети, например при переходе с Wi-Fi на мобильный интернет. Подробности о протоколе - на [wireguard.com](https://www.wireguard.com/).

## Какой сервер нужен для WireGuard

WireGuard работает в ядре и почти не нагружает процессор, поэтому для одного-двух человек хватает младшей конфигурации [Starter](https://tihost.io/blog/starter-vps) - 1 vCPU и 2 ГБ памяти за $4.00 в месяц. Важно, чтобы VPS был на полной виртуализации KVM со своим ядром - на Tihost это так. Локацию выбирайте ближе к себе: чем меньше задержка до сервера, тем незаметнее VPN. Как сравнить Германию, Финляндию и Польшу - в статье [о выборе локации VPS](https://tihost.io/blog/vps-location-choice).

## Шаг 1. Установите WireGuard

Пакет `wireguard` ставит утилиты `wg` и `wg-quick`, `qrencode` понадобится для QR-кода, а `iptables` - для NAT (в минимальной установке Debian 12 его может не быть):

```bash
sudo apt update
sudo apt install -y wireguard qrencode iptables
```

## Шаг 2. Сгенерируйте ключи сервера и клиента

У каждого участника туннеля - пара ключей: закрытый (private) хранится только у него, открытый (public) отдаётся другой стороне. `umask 077` делает новые файлы доступными только root. Последняя команда выводит ключи - они понадобятся в конфигах:

```bash
sudo -i
cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub
wg genkey | tee phone.key | wg pubkey > phone.pub
cat server.key server.pub phone.key phone.pub
```

## Шаг 3. Создайте конфиг сервера wg0.conf

Сначала узнайте имя внешнего сетевого интерфейса - оно стоит после слова `dev` в маршруте по умолчанию. Часто это `eth0` или `ens3`:

```bash
ip route list default
# default via 203.0.113.1 dev eth0 proto static
```

Создайте файл `/etc/wireguard/wg0.conf` и подставьте ключи. Если интерфейс называется не `eth0`, замените его в строках `PostUp` и `PostDown`. `PostUp` при старте туннеля разрешает пересылку пакетов и включает NAT (MASQUERADE) - клиенты выходят в интернет с IP сервера, `PostDown` убирает эти правила при остановке:

`/etc/wireguard/wg0.conf`:

```
[Interface]
Address = 10.8.0.1/24
ListenPort = 51820
PrivateKey = <содержимое server.key>
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]
# телефон
PublicKey = <содержимое phone.pub>
AllowedIPs = 10.8.0.2/32
```

## Шаг 4. Включите пересылку пакетов

По умолчанию Linux не пересылает пакеты между интерфейсами, и трафик клиента дальше сервера не пойдёт. Параметр `net.ipv4.ip_forward=1` включает пересылку, а файл в `/etc/sysctl.d/` сохраняет её после перезагрузки:

```bash
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-wireguard.conf
sudo sysctl -p /etc/sysctl.d/99-wireguard.conf
```

## Шаг 5. Откройте порт 51820/udp

WireGuard работает по UDP, и снаружи серверу нужен только порт из `ListenPort`. WireGuard не отвечает на пакеты без правильного ключа, поэтому сканер портов не увидит, что на сервере работает VPN:

```bash
sudo ufw allow 51820/udp
sudo ufw status
```

## Шаг 6. Запустите туннель

`wg-quick@wg0` - сервис systemd, который поднимает интерфейс `wg0` из конфига и включается при загрузке сервера. `wg show` должен показать интерфейс, порт 51820 и одного пира (peer) - телефон:

```bash
sudo systemctl enable --now wg-quick@wg0
sudo wg show
```

## Шаг 7. Подготовьте конфиг клиента

Конфиг клиента - зеркало серверного: свой закрытый ключ, открытый ключ сервера и его адрес в `Endpoint` (подставьте IP своего VPS). `AllowedIPs = 0.0.0.0/0` отправляет в туннель весь IPv4-трафик, `DNS` задаёт DNS-сервер на время подключения, а `PersistentKeepalive = 25` раз в 25 секунд шлёт пакет, чтобы соединение не обрывалось за NAT домашнего роутера или оператора:

`phone.conf`:

```
[Interface]
PrivateKey = <содержимое phone.key>
Address = 10.8.0.2/32
DNS = 1.1.1.1

[Peer]
PublicKey = <содержимое server.pub>
Endpoint = 203.0.113.10:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
```

Если VPN нужен только для доступа к своим сервисам, а не для всего трафика, укажите `AllowedIPs = 10.8.0.0/24` - тогда через туннель пойдут только адреса VPN-сети.

## Шаг 8. Перенесите конфиг на телефон QR-кодом

Сохраните конфиг клиента на сервере как `/etc/wireguard/phone.conf` и выведите его QR-кодом прямо в терминал. В приложении WireGuard для Android или iOS нажмите «+» и выберите сканирование QR-кода; на компьютере конфиг импортируется файлом:

```bash
sudo nano /etc/wireguard/phone.conf
sudo qrencode -t ansiutf8 < /etc/wireguard/phone.conf
```

> В QR-коде и в `phone.conf` - закрытый ключ клиента. Не показывайте их и не пересылайте через мессенджеры; после импорта файл можно удалить с сервера.

## Шаг 9. Проверьте подключение

Включите туннель в приложении и выполните на сервере `wg show`: у пира должны появиться строки `latest handshake` с временем последнего рукопожатия и `transfer` с объёмом трафика. Любой сервис проверки IP на телефоне должен показать адрес вашего VPS:

```bash
sudo wg show
```

Если рукопожатия нет, проверьте, что порт 51820/udp открыт в UFW, а в `Endpoint` указан правильный IP. Если рукопожатие есть, но сайты не открываются, - проверьте `ip_forward` и имя интерфейса в `PostUp`.

## Как добавить ещё одно устройство

Для каждого устройства сгенерируйте свою пару ключей, допишите в `wg0.conf` новый блок `[Peer]` со следующим адресом (`10.8.0.3/32`, `10.8.0.4/32` и так далее) и перезапустите туннель. Один конфиг на несколько устройств не используйте: два клиента с одним ключом будут выбивать друг друга.

```bash
sudo nano /etc/wireguard/wg0.conf
sudo systemctl restart wg-quick@wg0
```

**Запустите сервер за 2 минуты.** AMD Ryzen 9, NVMe и защита от DDoS в Германии, Финляндии и Польше. Оплата криптовалютой или картой. [Заказать сервер](https://tihost.io/login)

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

### Какой порт использует WireGuard?

WireGuard по умолчанию использует UDP-порт 51820 - он задаётся параметром `ListenPort` в конфиге сервера. В файрволе открывают только этот порт: `sudo ufw allow 51820/udp`.

### Сколько ресурсов нужно VPS для WireGuard?

WireGuard работает в ядре Linux и почти не нагружает сервер: личному VPN на несколько устройств хватает VPS с 1 vCPU и 2 ГБ памяти. На Tihost такая конфигурация стоит $4.00 в месяц.

### Чем WireGuard отличается от OpenVPN?

WireGuard проще в настройке - конфиг на десяток строк и ключи как в SSH, работает в ядре Linux и быстро восстанавливает соединение при смене сети. OpenVPN старше, работает в пространстве пользователя и гибче в настройке, но сложнее.

### Почему WireGuard подключился, но интернет не работает?

Чаще всего на сервере не включена пересылка пакетов (`net.ipv4.ip_forward=1`) или в правиле MASQUERADE указан не тот сетевой интерфейс. Имя интерфейса показывает команда `ip route list default` - оно стоит после слова `dev`.

### Как подключить телефон к WireGuard?

Сохраните конфиг клиента на сервере и выполните `qrencode -t ansiutf8 < phone.conf` - в терминале появится QR-код. В приложении WireGuard для Android или iOS выберите добавление туннеля сканированием QR-кода.

### Можно ли пускать через WireGuard только часть трафика?

Да. В конфиге клиента WireGuard укажите `AllowedIPs = 10.8.0.0/24` вместо `0.0.0.0/0` - тогда через туннель пойдут только адреса VPN-сети, а остальной трафик - напрямую.

---

Обновлено 2026-10-05 · https://tihost.io/blog/wireguard-vpn-on-vps
