WG_VPN_VDS
IaC установка Wireguard VPN на VPS
Установка сервера
Установка серверной части WireGuard на сервере VDS осуществляется при помощи .
Ansible playbook выполняет следующие действия:
- Устанавливает необходимые пакеты.
- Настраивает конфигурационные файлы для WireGuard.
- Запускает и включает сервис WireGuard.
Playbook: deploy_wireguard.yml
Templates
Файл конфигурации сервера wg0.conf.j2
Инвентарь: hosts.yml
Запуск playbook
Каталог, из которого будет осуществляться запуск ansible-playbook, должен содержать следующие файлы:
- файл laybook
.deploy_wireguard.yml - файл шаблона
.wg0.conf.j2 - файл инвентаря
.hosts.yml
Для использования или pkcs11_provider, требуется установить утилиту . Она нужна для передачи паролей через командную строку.
Запуск playbook:
Примечания
- Убедитесь, что вы заменили
в шаблонеCLIENT_PUBLIC_KEYна реальный публичный ключ клиента.wg0.conf.j2 - Если у вас нет прав суперпользователя на сервере, вам нужно будет настроить Ansible для использования sudo.
- Возможно, вам нужно будет настроить дополнительные правила брандмауэра для разрешения трафика через порт WireGuard.
Ansible.cfg для выполнения таск на только что созданной ВМ VDS (для реализации другого подхода по развертыванию сервера)
Чтобы написать для выполнения задач на только что созданной ВМ VDS, нужно настроить файл так, чтобы он включал необходимые параметры подключения к удаленной машине. Ниже пример минимального конфигурационного файла :
Пояснения:
-
:[defaults]: Указывает файл инвентаря, где перечислены хосты, к которым будет происходить подключение.inventory = hosts: Пользователь, от имени которого будет выполнено подключение. Заменитеremote_user = your_userна имя пользователя, который будет использоваться для подключения (например,your_userилиroot).ansible: Отключает проверку ключей SSH, что полезно при первом подключении к новым серверам.host_key_checking = False: Отключает создание файлов повторных попыток выполнения.retry_files_enabled = False
-
:[privilege_escalation]: Позволяет использоватьbecome = Trueдля выполнения задач с привилегиями.sudo: Метод повышения привилегий —become_method = sudo.sudo: Указывает, что повышение привилегий будет выполнено до пользователяbecome_user = root.root: Не запрашивать пароль при использованииbecome_ask_pass = False.sudo
-
:[ssh_connection]: Отключает проверку ключа хоста SSH, чтобы избежать вопросов о подтверждении нового ключа при первом подключении.ssh_args = -o StrictHostKeyChecking=no: Устанавливает таймаут подключения в 30 секунд.timeout = 30
Пример файла инвентаря hosts:
Замените на IP-адрес вашей ВМ, а — на имя пользователя для подключения. Если используется SSH-ключ, укажите путь к приватному ключу ().
Скрипт для создания клиентов Wireguard
Использование скрипта:
- Сохранить скрипт в файл, например
на сервере WireGuard.add_wireguard_client.sh - Сделать его исполняемым:
- Запустить скрипт, передав имя и внутренний IP-адрес клиента как аргументы:
Внутренний IP-адреса клиента необходимо задать ткой, который не будет совпадать с уже ранее созданными клиентами. Проверить ранее созданные можно в файле
Что делает скрипт:
- Генерирует пару ключей для клиента и сохраняет их в
./etc/WireGuard/ - Добавляет новую секцию клиента в файл конфигурации
.wg0.conf - Получение публичного ключа сервера: Скрипт считывает публичный ключ сервера из файла
./etc/WireGuard/publickey - IP и порт сервера: В скрипте заданы IP и порт сервера (SERVER_IP и SERVER_PORT).
- Создание конфигурационного файла клиента: После генерации ключей и добавления секции клиента в конфигурационный файл сервера, создаётся конфигурационный файл клиента.
- Переведение (представление) конфиг файла клиента в
(доступен будет в стандартном потоке вывода при выполнении скрипта).QR - Перенос сгенерированных файлов в каталог
.ConfUsers - Перезагружает сервис WireGuard для применения изменений.
- Проверяет статус сервиса.