wireguard_openwisp
ansible-wireguard-openwisp
Роль 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.
ansible-galaxy install openwisp/ansible-wireguard-openwisp