Настроить свой VPN за 10 минут: полный гайд по WireGuard на VPS
Эта инструкция предполагает, что вы настраиваете 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-конфликты.
Оставьте комментарий