wireguard_private_networking
Приватная сеть серверов с помощью Ansible и WireGuard
Эта роль позволяет вам развернуть быструю, безопасную и независимую от провайдера частную сеть между несколькими серверами. Это полезно для провайдеров, которые не предоставляют вам частную сеть, или если вы хотите соединить серверы, которые расположены в разных регионах и у разных провайдеров.
Как это работает
Роль устанавливает WireGuard на Debian или Ubuntu, создает сеть между всеми серверами, добавляя их в качестве пир-узлов, и настраивает сервис wg-quick.
Установка
Установить можно, используя Ansible Galaxy:
$ ansible-galaxy install mawalu.wireguard_private_networking
Настройка
Установите эту роль, назначьте переменную vpn_ip
каждому хосту, который должен быть частью сети, и запустите роль. Пожалуйста, убедитесь, что порт VPN (по умолчанию 5888) разрешен в вашем файрволе. Вот небольшой пример конфигурации:
Дополнительно вы можете установить public_addr
для каждого хоста. Этот адрес будет использоваться для подключения к пир-узлу WireGuard вместо адреса в инвентаре. Это полезно, если вы настраиваете соединение через другую сеть, отличную от сети WireGuard. Например, Ansible подключается через локальную сеть к вашему пир-узлу.
# файл инвентаризации
wireguard:
hosts:
1.1.1.1:
vpn_ip: 10.1.0.1/32
public_addr: "example.com" # необязательно
2.2.2.2:
vpn_ip: 10.1.0.2/32
# плейбук
- name: Настроить сеть WireGuard
hosts: wireguard
remote_user: root
roles:
- mawalu.wireguard_private_networking
# плейбук (с конфигурацией клиента)
- name: Настроить сеть WireGuard
hosts: wireguard
remote_user: root
vars:
client_vpn_ip: 10.1.0.100
client_wireguard_path: "~/my-client-config.conf"
roles:
- mawalu.wireguard_private_networking
Дополнительная конфигурация
Существует небольшое количество переменных роли, которые могут быть переопределены.
wireguard_port: "5888" # порт для соединений между серверами
wireguard_path: "/etc/wireguard" # местоположение всех конфигураций WireGuard
wireguard_network_name: "private" # имя для файла конфигурации и wg-quick
wireguard_mtu: 1500 # Необязательно, MTU для установки в файле wg-quick. По умолчанию не установлено. Также может быть установлено для каждого хоста
debian_enable_backports: true # если репозитории backports должны быть добавлены на машинах Debian
# Поддержка Raspberry Pi Zero
# Требует заголовки ядра и ручной сборки WireGuard, включение через флаг, установка коллекции `community.general`
# Осторожно: может привести к перезагрузке.
allow_build_from_source: true
wireguard_sources_path: "/var/cache" # Местоположение для клонирования исходников WireGuard, если требуется ручная сборка
client_vpn_ip: "" # если установлено, будет сгенерирован дополнительный файл конфигурации WireGuard по указанному пути на локальной машине
client_wireguard_path: "~/wg.conf" # путь на локальной машине для записи конфигурации клиента, если client_vpn_ip установлен
# список дополнительных пир-узлов, которые будут добавлены к каждому серверу
wireguard_additional_peers:
- comment: martin
ip: 10.2.3.4
key: ваш_публичный_ключ_wireguard
- comment: other_network
ip: 10.32.0.0/16
key: их_публичный_ключ_wireguard
keepalive: 20
endpoint: some.endpoint:2230
wireguard_post_up: "iptables ..." # команда пост-настройки
wireguard_post_down: "iptables" # команда пост-выключения
Тестирование
У этой роли есть небольшая тестовая настройка, которая создается с помощью molecule. Чтобы запустить тесты, следуйте руководству по установке Molecule, убедитесь, что демон Docker запущен на вашей машине, и выполните molecule test
.
Вклад
Не стесняйтесь открывать проблемы или запросы на слияние, если вы найдете проблемы или у вас есть идеи для улучшения. Я особенно открыт для запросов на слияние, которые добавляют поддержку дополнительных операционных систем и тестов.
Build your own multi server private network using wireguard and ansible
ansible-galaxy install mawalu/wireguard-private-networking