Эта инструкция предполагает, что вы настраиваете WireGuard VPN-сервер на виртуальном приватном сервере (VPS) под управлением Ubuntu 20.04 или выше (самая распространенная ОС для VPS). Если у вас другая ОС (например, Debian, CentOS), команды могут немного отличаться, но принципы те же.

Важные предупреждения:

  • У вас должен быть root-доступ к VPS (через SSH).
  • После настройки проверьте фаервол (UFW или iptables), чтобы открыть порт для WireGuard (по умолчанию UDP 51820).
  • Это базовая настройка для простого VPN. Для производства добавьте безопасность (например, ограничьте доступ по IP).
  • Команды выполняйте от root или с sudo.

Шаг 1: Обновление системы и установка WireGuard

Сначала обновите пакеты и установите WireGuard. WireGuard доступен в стандартных репозиториях Ubuntu.

sudo apt update
sudo apt upgrade -y
sudo apt install wireguard -y

Если WireGuard не найден (на старых версиях Ubuntu), добавьте репозиторий:

sudo add-apt-repository ppa:wireguard/wireguard
sudo apt update
sudo apt install wireguard -y

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

WireGuard использует пары ключей: приватный (private) и публичный (public). Приватный ключ остается на устройстве, публичный обменивается.

Мы сгенерируем 4 ключа:

  • Пара для сервера (private_server.key и public_server.key).
  • Пара для клиента (private_client.key и public_client.key).

Перейдите в директорию для ключей (рекомендую /etc/wireguard для удобства):

cd /etc/wireguard
sudo mkdir keys  # Создаем поддиректорию для ключей (опционально)
cd keys

Генерация ключей для сервера:

wg genkey | tee private_server.key | wg pubkey > public_server.key
chmod 600 private_server.key  # Защищаем приватный ключ

Генерация ключей для клиента:

wg genkey | tee private_client.key | wg pubkey > public_client.key
chmod 600 private_client.key  # Защищаем приватный ключ

Проверьте ключи:

ls -l  # Увидите 4 файла: private_server.key, public_server.key, private_client.key, public_client.key
cat public_server.key  # Пример: покажет публичный ключ сервера

Если нужно больше клиентов (например, еще 2 ключа для второго клиента), повторите:

wg genkey | tee private_client2.key | wg pubkey > public_client2.key
chmod 600 private_client2.key

Шаг 3: Настройка конфигурации сервера

Создайте файл конфигурации для интерфейса WireGuard (обычно wg0.conf).

sudo nano /etc/wireguard/wg0.conf

Вставьте следующий шаблон (замените значения на свои ключи и IP):

[Interface]
Address = 10.0.0.1/24  # Внутренний IP сервера в VPN-сети (выберите свою подсеть, например, 10.0.0.0/24)
PrivateKey = <Содержимое private_server.key>  # Вставьте приватный ключ сервера
ListenPort = 51820  # Порт UDP для прослушки (можно изменить)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE  # Включаем форвардинг (eth0 - ваш сетевой интерфейс, проверьте ifconfig)
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE  # Отключаем при остановке

[Peer]
PublicKey = <Содержимое public_client.key>  # Публичный ключ клиента
AllowedIPs = 10.0.0.2/32  # IP клиента в VPN-сети (для одного клиента; для нескольких добавьте больше [Peer])
  • Address: IP сервера в VPN.
  • PrivateKey: Скопируйте из cat private_server.key.
  • ListenPort: Стандартный порт.
  • PostUp/PostDown: Для NAT и форвардинга трафика (позволяет клиентам выходить в интернет через сервер).
  • [Peer]: Раздел для клиента. Если несколько клиентов, добавьте дополнительные [Peer] блоки.

Сохраните файл (Ctrl+O, Enter, Ctrl+X в nano).

Защитите конфиг:

sudo chmod 600 /etc/wireguard/wg0.conf

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

Чтобы сервер маршрутизировал трафик клиентов:

sudo sysctl -w net.ipv4.ip_forward=1

Сделайте это постоянным: отредактируйте /etc/sysctl.conf

sudo nano /etc/sysctl.conf

Добавьте строку:

net.ipv4.ip_forward = 1

Примените:

sudo sysctl -p

Шаг 5: Запуск WireGuard на сервере

Запустите интерфейс:

sudo wg-quick up wg0

Проверьте статус:

sudo wg show

Должны увидеть интерфейс wg0, приватный ключ и пиры (пока пусто, пока клиент не подключится).

Сделайте автозапуск при загрузке:

sudo systemctl enable wg-quick@wg0

Шаг 6: Настройка фаервола

Если используете UFW (Uncomplicated Firewall):

sudo ufw allow 51820/udp
sudo ufw reload

Если iptables:

sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT

Шаг 7: Настройка клиента

Клиент может быть на любом устройстве (Linux, Windows, Android, iOS). Здесь пример для Linux.

Установите WireGuard на клиенте (аналогично шагу 1).

Создайте конфиг на клиенте (/etc/wireguard/wg0.conf):

[Interface]
Address = 10.0.0.2/24  # IP клиента (должен совпадать с AllowedIPs на сервере)
PrivateKey = <Содержимое private_client.key>  # Приватный ключ клиента
DNS = 8.8.8.8  # Опционально, DNS для VPN

[Peer]
PublicKey = <Содержимое public_server.key>  # Публичный ключ сервера
Endpoint = <IP_ВАШЕГО_VPS>:51820  # Внешний IP сервера и порт
AllowedIPs = 0.0.0.0/0  # Все трафик через VPN (или 10.0.0.0/24 для только внутренней сети)
PersistentKeepalive = 25  # Опционально, для NAT

Запустите на клиенте:

sudo wg-quick up wg0

Проверьте:

sudo wg show

И протестируйте ping 10.0.0.1 (IP сервера) или внешний интернет.

Шаг 8: Добавление нескольких клиентов

Если нужно больше клиентов (например, для 4 ключей как 2 пары), сгенерируйте дополнительные ключи (как в шаге 2), добавьте [Peer] в серверный wg0.conf:

[Peer]
PublicKey = <public_client2.key>
AllowedIPs = 10.0.0.3/32

Перезапустите сервер: sudo wg-quick down wg0 && sudo wg-quick up wg0.

Шаг 9: Отладка и остановка

  • Остановить: sudo wg-quick down wg0
  • Логи: sudo journalctl -u wg-quick@wg0 (если systemd)
  • Общие проблемы: Проверьте порты, ключи (без лишних пробелов), IP-конфликты.