С помощью этого руководства вы научитесь развертывать защищенную VPN-инфраструктуру с использованием WireGuard в облачной платформе Cloud.ru Evolution.
Вы развернете WireGuard на виртуальной машине и настроите конфигурацию сервера, а также настроите WireGuard на клиентском устройстве и подключитесь к VPN-серверу.
В этом руководстве показано, как настроить WireGuard VPN-туннель через личный кабинет Cloud.ru Evolution. Вы также можете настроить туннель, используя Terraform.
Вы будете использовать следующие сервисы:
«Виртуальные машины» — сервис, в рамках которого предоставляется виртуальная машина.
«Публичные IP» — сервис для организации доступа.
WireGuard — приложение с открытым исходным кодом, которое создает зашифрованные виртуальные частные сети (VPN).
Шаги:
Узнайте IP-адрес вашего компьютера. Для этого вы можете использовать сервис 2ip.io или другие.
Зарегистрируйтесь в личном кабинете Cloud.ru.
Если вы уже зарегистрированы, войдите под своей учетной записью.
Сгенерируйте ключевую пару и загрузите публичный ключ в Cloud.ru Evolution.
На этом шаге вы подготовите сеть, группу безопасности, виртуальную машину.
Создайте группу безопасности с названием vpn-vm и добавьте в нее правила:
Трафик | Протокол | Порт | Тип источника/адресата | Источник/Адресат |
|---|---|---|---|---|
Входящий | UDP | 51820 | IP-адрес | IP-адрес вашего компьютера в формате <your_computer_ip>/32 |
Исходящий | — | — | IP-адрес | 0.0.0.0/0 |
На странице Сети → Группы безопасности убедитесь, что отображается группа безопасности vpn-vm со статусом «Создана».
Создайте виртуальную машину со следующими параметрами:
Название — vpn-vm.
Образ — публичный образ Ubuntu 22.04.
Публичный IP — оставьте Арендовать новый или выберите IP-адрес из списка арендованных.
Группы безопасности — группа по умолчанию и vpn-vm.
Логин — vpn-vm.
Метод аутентификации — Публичный ключ и Пароль.
Публичный ключ — укажите ключ, созданный ранее.
Пароль — задайте пароль пользователя.
Имя хоста — vpn-vm.
Остальные параметры оставьте по умолчанию или выберите на свое усмотрение.
Запишите публичный IP-адрес виртуальной машины — он понадобится при настройке VPN-туннеля.
На странице Инфраструктура → Виртуальные машины убедитесь, что отображается виртуальная машина vpn-vm со статусом «Запущена».
На этом шаге вы установите ПО, сгенерируете ключи и настроите VPN-сервер на виртуальной машине.
Подключитесь к виртуальной машине через консоль или SSH.
Обновите систему и установите WireGuard:
sudo apt update && sudo apt install -y wireguard
Сгенерируйте ключи для сервера:
Создайте директорию для конфигурационных файлов:
sudo mkdir -p /etc/wireguard
Сгенерируйте приватный и публичный ключи сервера:
sudo bash -c 'wg genkey | tee /etc/wireguard/server-privatekey | wg pubkey > /etc/wireguard/server-publickey'
Посмотрите и скопируйте сгенерированные ключи — они понадобятся в дальнейшем. Поочередно выполните команды:
sudo cat /etc/wireguard/server-publickeysudo cat /etc/wireguard/server-privatekey
Создайте конфигурационный файл WireGuard на сервере:
sudo nano /etc/wireguard/wg0.conf
Вставьте в него следующую конфигурацию и сохраните изменения:
[Interface]# Приватный ключ сервераPrivateKey = <server-privatekey># Адрес ВМ в сети WireGuardAddress = 10.0.1.1/24# Порт для входящих соединенийListenPort = 51820
Где <server-privatekey> — приватный ключ, сгенерированный ранее.
Включите пересылку пакетов — IP forwarding:
echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.confsudo sysctl -p
Включите NAT для сети WireGuard:
Узнайте название внешнего интерфейса (обычно eth0):
ip route | grep default
Добавьте правило NAT — замените eth0 на ваш интерфейс:
sudo iptables -t nat -A POSTROUTING -o <interface> -j MASQUERADEsudo apt install -y iptables-persistentsudo netfilter-persistent save
На этом шаге вы установите ПО, сгенерируете ключи и укажете их в конфигурации VPN на виртуальной машине.
На ваш компьютер установите WireGuard и сгенерируйте ключи для клиента:
Установите WireGuard:
sudo apt install wireguard-tools
Создайте ключи:
wg genkey | tee client-privatekey | wg pubkey > client-publickey
Посмотрите и скопируйте приватный ключ — он понадобится на следующем шаге:
cat client-publickey
Добавьте клиента в конфигурационный файл VPN-сервера:
Вернитесь в консоль виртуальной машины и запустите WireGuard:
sudo wg-quick up wg0
Проверьте, что интерфейс создан:
ip link show wg0
Добавьте устройство:
sudo wg set wg0 peer <client_public_key> allowed-ips 10.0.1.2/32 endpoint <your_computer_ip>:51820 persistent-keepalive 25
Где:
<client_public_key> — публичный ключ, сгенерированный в приложении на вашем компьютере.
<your_computer_ip> — публичный IP-адрес вашего компьютера.
Сохраните конфигурацию:
sudo wg-quick save wg0
Проверьте, что конфигурация сохранилась:
sudo wg show
В ответе должны вернуться параметры интерфейса wg0 и подключенного клиента.
Включите автозагрузку:
sudo systemctl enable wg-quick@wg0
На этом шаге вы настроите VPN-клиент на вашем компьютере.
Создайте конфигурационный файл:
nano /etc/wireguard/wg0.conf
Вставьте и сохраните код:
[Interface]PrivateKey = <client_private_key>Address = 10.0.1.2/24[Peer]PublicKey = <server_public_key>Endpoint = <vm_ip_address>:51820AllowedIPs = 10.0.1.0/24PersistentKeepalive = 25
Где:
<client_private_key> — публичный ключ, сгенерированный в приложении на вашем компьютере.
<server_public_key> — публичный ключ, сгенерированный виртуальной машине.
<vm_ip_address> — публичный IP-адрес виртуальной машины.
Запустите VPN:
sudo wg-quick up wg0sudo systemctl enable wg-quick@wg0
На сервере или клиенте выполните команду:
sudo wg
В ответе должно вернуться время последнего соединения — Latest handshake. Если время обновляется, туннель работает.
Выполните ping от одного узла к другому.
На виртуальной машине выполните команду:
ping 10.0.1.2
На компьютере выполните команду:
ping 10.0.1.1
Если пакеты передаются без потерь, VPN-туннель настроен корректно.
Вы научились настраивать серверную и клиентскую части WireGuard VPN для создания защищенной инфраструктуры.