wireguard_openwisp

ansible-wireguard-openwisp

Статус сборки

Gitter

Роль Ansible, которая устанавливает WireGuard и скрипты управления для OpenWISP. После правильной установки и настройки с OpenWISP, пиринги WireGuard управляются автоматически OpenWISP без необходимости вручную вмешиваться.

Эта роль также может настраивать скрипты, чтобы позволить OpenWISP управлять VXLAN через WireGuard туннелями.

Протестировано на Debian и Ubuntu.

ПРИМЕЧАНИЕ: настоятельно рекомендуется использовать эту процедуру на чистых виртуальных машинах или контейнерах linux.

Минимальная поддерживаемая версия ansible: 2.10.

Инструкция по установке и использованию

Для простоты, самый простой способ установить эту роль на вашем локальном компьютере через ansible-galaxy:

ansible-galaxy install openwisp.wireguard_openwisp

Смотрите пример плейбука в "Полный пример плейбука с SSL сертификатом" в этой документации, чтобы быстро начать работу с этой ролью.

ПРИМЕЧАНИЕ: Эта роль не настроит переадресацию пакетов и не добавит статические или динамические маршруты на вашем сервере.

Так как точный способ маршрутизации пакетов может варьироваться в зависимости от разных факторов и потребностей, которые могут сильно различаться от одной организации к другой, пользователю предоставляется возможность настраивать это в соответствии с его потребностями. Мы можем добавить конфигурацию по умолчанию маршрутизации/переадресации в будущем, когда у нас будет больше данных по использованию, если вас это интересует, пожалуйста, дайте нам знать.

Полный пример плейбука с SSL сертификатом

По умолчанию плейбук создает самоподписанный (недоверенный) SSL сертификат для VPN конечной точки. Если вы оставите недоверенный сертификат, вам также потребуются отключить проверку SSL на OpenWISP, хотя мы не рекомендуем использовать такое настройка в производственной среде. Вы можете установить свой собственный доверенный сертификат, следуя шагам в этом разделе.

Первое, что вам нужно сделать, это настроить действующий домен для вашего WireGuard VPN, это означает, что ваш файл инвентаризации (хосты) должен выглядеть так:

[openwisp2_wireguard]
wireguard.yourdomain.com

Вы должны иметь возможность добавить DNS-запись для wireguard.yourdomain.com, вы не можете использовать IP-адрес вместо wireguard.yourdomain.com.

После настройки вашего домена и распространения DNS-записи, продолжите установкой роли ansible geerlingguy.certbot

ansible-galaxy install geerlingguy.certbot

Затем создайте ваш playbook.yml, чтобы он выглядел примерно так:

- hosts: openwisp2_wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - geerlingguy.certbot
    - openwisp.wireguard_openwisp
  vars:
    openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
    openwisp2_wireguard_vpn_uuid: "вставьте-vpn-uuid-здесь"
    openwisp2_wireguard_vpn_key: "вставьте_vpn-key-здесь"
    openwisp2_wireguard_flask_key: "вставьте-токен-аутентификации-конечного-узла"

    # SSL сертификаты
    openwisp2_wireguard_ssl_cert: "/etc/letsencrypt/live/{{ ansible_fqdn }}/fullchain.pem"
    openwisp2_wireguard_ssl_key: "/etc/letsencrypt/live/{{ ansible_fqdn }}/privkey.pem"

    # конфигурация certbot
    certbot_auto_renew_user: "привилегированный-пользователь-для-обновления-сертификатов"
    certbot_auto_renew_minute: "20"
    certbot_auto_renew_hour: "5"
    certbot_create_if_missing: true
    certbot_create_standalone_stop_services: []
    certbot_certs:
      - email: "вставьте-ваш-email"
        domains:
          - wireguard.yourdomain.com

Читайте документацию geerlingguy.certbot, чтобы узнать больше о конфигурации роли certbot.

Чтобы узнать о всех переменных ansible, предоставляемых openwisp.wireguard_openwisp, читайте "Раздел переменных роли" этой документации.

Настройка нескольких интерфейсов WireGuard

С помощью этой роли вы можете настроить несколько интерфейсов WireGuard на одной машине, которые управляются OpenWISP независимо. Вы должны убедиться, что следующие переменные роли уникальны для каждого плейбука:

  • openwisp2_wireguard_path
  • openwisp2_wireguard_flask_port

Ниже приведен пример плейбука, содержащего два сценария для настройки нескольких интерфейсов WireGuard.

- name: Настройка первого интерфейса WireGuard
  hosts:
    - wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - openwisp.wireguard_openwisp
  vars:
    openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
    openwisp2_wireguard_path: "/opt/wireguard-openwisp/wireguard-1"
    openwisp2_wireguard_vpn_uuid: "вставьте-vpn1-uuid-здесь"
    openwisp2_wireguard_vpn_key: "вставьте-vpn1-key-здесь"
    openwisp2_wireguard_flask_key: "вставьте-vpn1-токен-аутентификации-конечного-узла"
    openwisp2_wireguard_flask_port: 8081

- name: Настройка второго интерфейса WireGuard
  hosts:
    - wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - openwisp.wireguard_openwisp
  vars:
    openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
    openwisp2_wireguard_path: "/opt/wireguard-openwisp/wireguard-2"
    openwisp2_wireguard_vpn_uuid: "вставьте-vpn-2-uuid-здесь"
    openwisp2_wireguard_vpn_key: "вставьте-vpn-2-key-здесь"
    openwisp2_wireguard_flask_key: "вставьте-vpn-2-токен-аутентификации-конечного-узла"
    openwisp2_wireguard_flask_port: 8082

Замечания

  • При создании объектов VPN-сервера в OpenWISP убедитесь, что имя интерфейса и порт уникальны для каждой VPN. В противном случае сценарии обновления будут работать неправильно из-за конфликтов.

Переменные роли

Эта роль имеет много значений переменных, которые можно изменить для наилучшего соответствия вашим потребностям.

Ниже перечислены все переменные, которые вы можете настроить (вы также можете ознакомиться с значениями по умолчанию этих переменных).

- hosts: openwisp2_wireguard
  become: "{{ become | default('yes') }}"
  roles:
    - openwisp.wireguard_openwisp
  vars:
    # URL экземпляра OpenWISP, вы можете пропустить это (удалить)
    # если wireguard устанавливается на том же хосте, на котором работает OpenWISP.
    # Если вы используете два отдельные хоста (один для OpenWISP и один для Wireguard),
    # что является хорошей идеей, вам нужно будет указать URL вашего
    # экземпляра OpenWISP (работающего OpenWISP Controller >= 1.0.0) здесь
    openwisp2_wireguard_controller_url: "https://openwisp.yourdomain.com"
    # Каталог, куда будут установлены скрипты обновления
    openwisp2_wireguard_path: "/opt/wireguard-openwisp"
    # Позволяет загружать VPN конфигурацию, используя "недоверенные" SSL-соединения.
    # Рекомендуется оставить значение false.
    openwisp2_wireguard_curl_insecure: false
    # UUID VPN, сгенерированный после создания объекта VPN-сервера в OpenWISP
    openwisp2_wireguard_vpn_uuid: "вставьте-vpn-uuid-здесь"
    # Ключ VPN, сгенерированный после создания объекта VPN-сервера в OpenWISP
    openwisp2_wireguard_vpn_key: "вставьте_vpn-key-здесь"
    # Flask конечная точка, используемая для триггера обновлений
    openwisp2_wireguard_flask_endpoint: "/trigger-update"
    # Ключ авторизации точки обновления
    openwisp2_wireguard_flask_key: "вставьте-токен-аутентификации-конечного-узла"
    # Порт, на котором работает конечная точка Flask
    openwisp2_wireguard_flask_port: 8081
    # Хост, на котором работает конечная точка Flask
    openwisp2_wireguard_flask_host: 0.0.0.0
    # Установите уровень журнала для логирования flask.
    # Допустимые значения: "INFO", "WARNING" и "ERROR"
    openwisp2_wireguard_logging_level: "WARNING"
    # Команда, используемая для запуска uwsgi из supervisor
    openwisp2_wireguard_uwsgi_command: "{{ openwisp2_wireguard_path }}/env/bin/uwsgi uwsgi.ini"

    # укажите путь к действительному SSL сертификату и ключу
    # (самоподписанный SSL сертификат будет сгенерирован, если он опущен)
    openwisp2_wireguard_ssl_cert: "/opt/wireguard-openwisp/ssl/server.crt"
    openwisp2_wireguard_ssl_key: "/opt/wireguard-openwisp/ssl/server.key"
    # при необходимости настройте информацию о самоподписанном SSL сертификате
    openwisp2_wireguard_ssl_country: "US"
    openwisp2_wireguard_ssl_state: "California"
    openwisp2_wireguard_ssl_locality: "San Francisco"
    openwisp2_wireguard_ssl_organization: "IT dep."

    # по умолчанию используется python3, возможно, вам придется установить это на python2.7 для более старых систем
    openwisp2_wireguard_python: python2.7
    # команда виртуального окружения для вашего удаленного дистрибутива, обычно устанавливается автоматически
    openwisp2_wireguard_virtualenv_command: "virtualenv"

    # Устанавливает ipv4.method VXLAN соединения, по умолчанию "link-local"
    openwisp2_wireguard_vxlan_ipv4_method: disabled
    openwisp2_wireguard_vxlan_ipv6_method: disabled

Устранение неполадок

Вот как вручную запустить проверку конфигурации, если это необходимо:

sudo -u openwisp /opt/wireguard-openwisp/update_wireguard.sh check_config

Логи приложения, которое отвечает за обновление конфигурации WireGuard, загруженной с сервера OpenWISP, можно найти по адресу /opt/wireguard-openwisp/vpn_updater.log.

Участие

Пожалуйста, ознакомьтесь с руководством по сотрудничеству OpenWISP.

Как проводить тесты

Если вы хотите внести свой вклад в ansible-wireguard-openwisp, вам следует проводить тесты в вашей среде разработки, чтобы убедиться, что ваши изменения не ломают ничего.

Для этого выполните следующие шаги:

Шаг 1: Клонируйте ansible-wireguard-openwisp

Клонируйте репозиторий командой:

git clone https://github.com/<your_fork>/ansible-wireguard-openwisp.git

Шаг 2: Установите docker

Если вы еще не установили docker, вам нужно его установить (пример для систем linux debian/ubuntu):

sudo apt-get install docker.io

Шаг 3: Установите molecule и зависимости

pip install molecule[docker,ansible] yamllint ansible-lint docker

Шаг 4: Загрузите образы docker

docker pull geerlingguy/docker-ubuntu2204-ansible:latest
docker pull geerlingguy/docker-ubuntu2004-ansible:latest
docker pull geerlingguy/docker-debian11-ansible:latest

Шаг 5: Запустите тест molecule

molecule test -s local

Если вы не получите сообщения об ошибках, это означает, что тесты успешно прошли без ошибок.

Совет: Используйте molecule test -s local --destroy=never, чтобы ускорить последующие прогонки тестов.

Лицензия

Смотрите ЛИЦЕНЗИЯ.

Поддержка

Смотрите Каналы поддержки OpenWISP.

О проекте

Role to install OpenWISP's Wireguard Updater

Установить
ansible-galaxy install openwisp/ansible-wireguard-openwisp
Лицензия
bsd-3-clause
Загрузки
422
Владелец
Modular and Programmable Open Source Network Management System for Linux OpenWrt.