WireGuard VPN: установка и настройка собственного сервера

Всем привет! Если вы когда-нибудь хотели поднять свой собственный VPN-сервер (чтобы не доверять свои данные непонятно кому, не платить за подписки и не ловить throttling от публичных сервисов) — вы попали по адресу. Сегодня разберёмся с WireGuard — современным, быстрым и реально простым в настройке VPN. Это не OpenVPN с его километрами конфигов и странными багами. Всё будет быстро, просто и понятно.

Возможности WireGuard

  • Минималистичный и быстрый — реально быстрее OpenVPN и IPSec.
  • Очень простой конфиг: пара строчек — и всё работает.
  • Встроенная криптография на уровне ядра Linux (или через модуль).
  • Работает практически везде: Linux, Windows, macOS, Android, iOS.
  • Поддержка роутинга трафика, split tunneling, и даже mesh-сетей.

Что требуется

  • VPS или домашний сервер — любой Linux-дистрибутив. Я покажу на Ubuntu 22.04 LTS, но на Debian и CentOS всё аналогично.
  • Минимум 1 CPU, 512MB RAM, 10GB SSD (WireGuard почти ничего не жрёт).
  • Публичный IP-адрес (или проброс портов, если за NAT-ом).
  • Доступ по SSH и базовые навыки работы с консолью.

Установка — пошаговая инструкция

  1. Обновляем систему:
    sudo apt update && sudo apt upgrade -y
  2. Ставим WireGuard:
    sudo apt install wireguard -y

    На других дистрибутивах — официальная дока.

  3. Генерируем ключи для сервера:
    
    umask 077
    wg genkey | tee server_private.key | wg pubkey > server_public.key
        

    Точно так же генерируем ключи для каждого клиента (на другой машине или локально):

    
    wg genkey | tee client_private.key | wg pubkey > client_public.key
        
  4. Создаём конфиг для сервера:
    
    sudo nano /etc/wireguard/wg0.conf
        

    Вставляем:

    
    [Interface]
    Address = 10.0.0.1/24
    ListenPort = 51820
    PrivateKey = (содержимое server_private.key)
    
    # Разрешаем форвардинг
    PostUp = sysctl -w net.ipv4.ip_forward=1; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    PostDown = sysctl -w net.ipv4.ip_forward=0; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    
    [Peer]
    PublicKey = (client_public.key)
    AllowedIPs = 10.0.0.2/32
        
    • eth0 — интерфейс вашего сервера (узнайте через ip a).
    • AllowedIPs — IP клиента в VPN-сети.
  5. Открываем порт на фаерволе:
    sudo ufw allow 51820/udp
  6. Запускаем сервер:
    
    sudo systemctl enable wg-quick@wg0
    sudo systemctl start wg-quick@wg0
        

    Проверяем:

    sudo wg show
  7. Конфиг для клиента:
    
    [Interface]
    PrivateKey = (client_private.key)
    Address = 10.0.0.2/24
    DNS = 1.1.1.1
    
    [Peer]
    PublicKey = (server_public.key)
    Endpoint = your.server.ip:51820
    AllowedIPs = 0.0.0.0/0, ::/0
    PersistentKeepalive = 25
        

    Можно использовать официальные клиенты под любые ОС.

Использование: команды и варианты

  • Запуск/остановка:
    sudo systemctl start wg-quick@wg0
    sudo systemctl stop wg-quick@wg0
    sudo systemctl restart wg-quick@wg0
  • Статус:
    sudo systemctl status wg-quick@wg0
  • Показать подключённых клиентов:
    sudo wg show
  • Добавить нового клиента (peer):
    
    # Генерируете ключи, добавляете блок
    [Peer]
    PublicKey = (новый client_public.key)
    AllowedIPs = 10.0.0.3/32
        

    Перезапускаете WireGuard: sudo systemctl restart wg-quick@wg0

  • Проверить логи:
    journalctl -u wg-quick@wg0

Ошибки и как делать не надо

  • Не храните приватные ключи в публичных репах или на сервере без прав доступа! (chmod 600)
  • Не используйте одинаковые ключи для разных клиентов.
  • Не забывайте открывать UDP-порт на фаерволе и в панелях хостинга.
  • Пользуйтесь только официальными клиентами — не ставьте левый софт.
  • Не добавляйте в AllowedIPs = 0.0.0.0/0 на сервере — это сломает маршрутизацию.
  • Проверьте, что у вас не конфликтуют подсети (10.0.0.0/24 не должен совпадать с локалкой дома).

Пример реального использования

Реальный кейс: поднял WireGuard на DigitalOcean VPS, подключил рабочий ноутбук и телефон. Теперь весь трафик в публичных Wi-Fi идёт через мой сервер, плюс доступ к домашней NAS-ке через туннель. На сервере прописал несколько [Peer] блоков для разных устройств. В любой момент вижу, кто подключён, какой трафик гоняет. Настроил split tunneling — чтобы только рабочие сервисы шли через VPN, а остальное — напрямую.

Заключение

WireGuard — это реально лучшее, что случалось с VPN за последние годы. Он простой, быстрый, безопасный и почти не требует танцев с бубном. Официальная дока — https://www.wireguard.com/. Если есть вопросы или хочется автоматизации — смотрите скрипт для автоматической установки (open source, не реклама). Не забывайте обновлять систему и не светите приватные ключи. Надеюсь, теперь ваш VPN будет именно вашим!

Хотите прочитать больше про Администрирование,Сети?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *