Введение
WireGuard — это современный VPN-протокол, который отличается высокой скоростью, простотой настройки и надёжным шифрованием. В отличие от OpenVPN и IPSec, WireGuard имеет минимальную кодовую базу и работает на уровне ядра Linux, что обеспечивает превосходную производительность.
В этом руководстве мы настроим собственный VPN-сервер WireGuard на VPS с Ubuntu.
Почему WireGuard?
| Критерий | WireGuard | OpenVPN | IPSec |
|---|---|---|---|
| Скорость | ⚡ Очень высокая | Средняя | Средняя |
| Простота настройки | ✅ Простая | ❌ Сложная | ❌ Сложная |
| Размер кода | ~4 000 строк | ~100 000 строк | Огромный |
| Шифрование | ChaCha20, Curve25519 | OpenSSL | Различное |
| Поддержка ОС | Все платформы | Все платформы | Ограниченная |
Установка WireGuard на сервере
Обновление системы
sudo apt update && sudo apt upgrade -yУстановка WireGuard
sudo apt install wireguard -yГенерация ключей сервера
cd /etc/wireguard
umask 077
wg genkey | tee server_private.key | wg pubkey > server_public.keyПросмотрите сгенерированные ключи:
cat server_private.key
cat server_public.key⚠️ Важно: Приватный ключ сервера должен храниться в секрете!
Настройка сервера WireGuard
На Ubuntu 22.04 сетевой интерфейс редко называется eth0 — чаще это ens18, enp6s18 и т.п. Если в PostUp/PostDown указать неверное имя, wg-quick не поднимет туннель.
Сначала узнайте имя интерфейса с маршрутом по умолчанию:
ip -4 route show default | awk '{print $5}'Создайте конфигурационный файл одной командой (подставит интерфейс и приватный ключ автоматически):
IFACE=$(ip -4 route show default | awk '{print $5}')
PRIV=$(cat /etc/wireguard/server_private.key)
sudo tee /etc/wireguard/wg0.conf << EOF
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = ${PRIV}
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ${IFACE} -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ${IFACE} -j MASQUERADE
EOFПример: если
ip -4 route show defaultпоказываетens18, в конфиге будет-o ens18. Не копируйтеeth0вслепую.
Включение IP-форвардинга
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -pОткрытие порта в брандмауэре
sudo ufw allow 51820/udpЗапуск WireGuard
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0Проверьте статус:
sudo wg showНастройка клиента
Генерация ключей клиента
На сервере выполните:
cd /etc/wireguard
wg genkey | tee client1_private.key | wg pubkey > client1_public.keyДобавление клиента в конфигурацию сервера
Добавьте в /etc/wireguard/wg0.conf:
[Peer]
PublicKey = <client1_public_key>
AllowedIPs = 10.0.0.2/32Замените <client1_public_key> на содержимое файла client1_public.key (команда cat /etc/wireguard/client1_public.key). Без реального ключа wg-quick не запустится.
Перезапустите WireGuard:
sudo systemctl restart wg-quick@wg0Конфигурация клиента
Создайте файл client1.conf:
[Interface]
PrivateKey = <client1_private_key>
Address = 10.0.0.2/24
DNS = 1.1.1.1, 8.8.8.8
[Peer]
PublicKey = <server_public_key>
Endpoint = YOUR_SERVER_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25Подключение клиентов
Windows и macOS
- Скачайте приложение WireGuard с официального сайта
- Импортируйте файл
client1.conf - Нажмите Activate для подключения
Android и iOS
- Установите приложение WireGuard из Google Play / App Store
- Отсканируйте QR-код конфигурации или импортируйте файл
Для генерации QR-кода на сервере:
sudo apt install qrencode -y
qrencode -t ansiutf8 < client1.confLinux
sudo apt install wireguard -y
sudo cp client1.conf /etc/wireguard/wg0.conf
sudo wg-quick up wg0Добавление нескольких клиентов
Для каждого нового клиента:
# Генерация ключей
wg genkey | tee client2_private.key | wg pubkey > client2_public.key
# Добавление в конфигурацию сервера
sudo nano /etc/wireguard/wg0.conf
# Добавьте новый блок [Peer] с IP 10.0.0.3/32
# Перезапуск
sudo systemctl restart wg-quick@wg0Проверка работы VPN
После подключения проверьте:
# На клиенте — проверка IP
curl ifconfig.me
# На сервере — статистика
sudo wg showЗаключение
Собственный VPN-сервер на WireGuard — это быстрое, безопасное и полностью подконтрольное решение. В отличие от коммерческих VPN-сервисов, вы сами контролируете свои данные и не зависите от сторонних провайдеров.
🔐 Совет: Для VPN-сервера достаточно минимального VPS — WireGuard потребляет очень мало ресурсов. Заказать VPS для VPN →