WG_VPN_VDS

0

Описание

Языки

  • Shell86,7%
  • Jinja13,3%
README.md

IaC установка Wireguard VPN на VPS

Исходная статья

Установка сервера

Установка серверной части WireGuard на сервере VDS осуществляется при помощи

Ansible
.

Ansible playbook выполняет следующие действия:

  1. Устанавливает необходимые пакеты.
  2. Настраивает конфигурационные файлы для WireGuard.
  3. Запускает и включает сервис WireGuard.

Playbook:
deploy_wireguard.yml

Templates

Файл конфигурации сервера
wg0.conf.j2

Инвентарь:
hosts.yml

Запуск playbook

Каталог, из которого будет осуществляться запуск ansible-playbook, должен содержать следующие файлы:

  • файл laybook
    deploy_wireguard.yml
    .
  • файл шаблона
    wg0.conf.j2
    .
  • файл инвентаря
    hosts.yml
    .

Для использования

ssh-подключения с паролями
или pkcs11_provider, требуется установить утилиту
sshpass
. Она нужна для передачи паролей через командную строку.

Запуск playbook:

Примечания

  • Убедитесь, что вы заменили
    CLIENT_PUBLIC_KEY
    в шаблоне
    wg0.conf.j2
    на реальный публичный ключ клиента.
  • Если у вас нет прав суперпользователя на сервере, вам нужно будет настроить Ansible для использования sudo.
  • Возможно, вам нужно будет настроить дополнительные правила брандмауэра для разрешения трафика через порт WireGuard.

Ansible.cfg
для выполнения таск на только что созданной ВМ VDS (для реализации другого подхода по развертыванию сервера)

Чтобы написать

ansible.cfg
для выполнения задач на только что созданной ВМ VDS, нужно настроить файл так, чтобы он включал необходимые параметры подключения к удаленной машине. Ниже пример минимального конфигурационного файла
ansible.cfg
:

Пояснения:

  1. [defaults]
    :

    • inventory = hosts
      : Указывает файл инвентаря, где перечислены хосты, к которым будет происходить подключение.
    • remote_user = your_user
      : Пользователь, от имени которого будет выполнено подключение. Замените
      your_user
      на имя пользователя, который будет использоваться для подключения (например,
      root
      или
      ansible
      ).
    • host_key_checking = False
      : Отключает проверку ключей SSH, что полезно при первом подключении к новым серверам.
    • retry_files_enabled = False
      : Отключает создание файлов повторных попыток выполнения.
  2. [privilege_escalation]
    :

    • become = True
      : Позволяет использовать
      sudo
      для выполнения задач с привилегиями.
    • become_method = sudo
      : Метод повышения привилегий —
      sudo
      .
    • become_user = root
      : Указывает, что повышение привилегий будет выполнено до пользователя
      root
      .
    • become_ask_pass = False
      : Не запрашивать пароль при использовании
      sudo
      .
  3. [ssh_connection]
    :

    • ssh_args = -o StrictHostKeyChecking=no
      : Отключает проверку ключа хоста SSH, чтобы избежать вопросов о подтверждении нового ключа при первом подключении.
    • timeout = 30
      : Устанавливает таймаут подключения в 30 секунд.

Пример файла инвентаря
hosts
:

Замените

your_vds_ip
на IP-адрес вашей ВМ, а
your_user
— на имя пользователя для подключения. Если используется SSH-ключ, укажите путь к приватному ключу (
ansible_ssh_private_key_file
).

Скрипт для создания клиентов Wireguard

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

  1. Сохранить скрипт в файл, например
    add_wireguard_client.sh
    на сервере WireGuard.
  2. Сделать его исполняемым:
  3. Запустить скрипт, передав имя и внутренний IP-адрес клиента как аргументы:

Внутренний IP-адреса клиента необходимо задать ткой, который не будет совпадать с уже ранее созданными клиентами. Проверить ранее созданные можно в файле

/etc/WireGuard/wg0.conf

Что делает скрипт:

  • Генерирует пару ключей для клиента и сохраняет их в
    /etc/WireGuard/
    .
  • Добавляет новую секцию клиента в файл конфигурации
    wg0.conf
    .
  • Получение публичного ключа сервера: Скрипт считывает публичный ключ сервера из файла
    /etc/WireGuard/publickey
    .
  • IP и порт сервера: В скрипте заданы IP и порт сервера (SERVER_IP и SERVER_PORT).
  • Создание конфигурационного файла клиента: После генерации ключей и добавления секции клиента в конфигурационный файл сервера, создаётся конфигурационный файл клиента.
  • Переведение (представление) конфиг файла клиента в
    QR
    (доступен будет в стандартном потоке вывода при выполнении скрипта).
  • Перенос сгенерированных файлов в каталог
    ConfUsers
    .
  • Перезагружает сервис WireGuard для применения изменений.
  • Проверяет статус сервиса.