wireguard_private_networking

Приватная сеть серверов с помощью Ansible и WireGuard

Ansible Role

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

Как это работает

Роль устанавливает 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
Лицензия
mit
Загрузки
10295
Владелец
Webdev, DevOps & Security. Btw I use Arch and Nix