mawalu.wireguard_private_networking

Red privada de servidor a servidor con Ansible y WireGuard

Ansible Role

Este rol te permite desplegar una red privada rápida, segura y agnóstica al proveedor entre múltiples servidores. Esto es útil para proveedores que no te ofrecen una red privada o si deseas conectar servidores que están repartidos en múltiples regiones y proveedores.

Cómo

El rol instala WireGuard en Debian o Ubuntu, crea una malla entre todos los servidores añadiéndolos como pares y configura el servicio systemd wg-quick.

Instalación

La instalación se puede hacer usando ansible galaxy:

$ ansible-galaxy install mawalu.wireguard_private_networking

Configuración

Instala este rol, asigna una variable vpn_ip a cada host que deba ser parte de la red y ejecuta el rol. Asegúrate de permitir el puerto VPN (el predeterminado es 5888) en tu firewall. Aquí tienes un pequeño ejemplo de configuración:

Opcionalmente, puedes configurar una public_addr en cada host. Esta dirección se usará para conectarse al par de WireGuard en lugar de la dirección en el inventario. Es útil si configuras a través de una red diferente que la que usa WireGuard, por ejemplo, Ansible se conecta a través de una LAN a tu par.

# archivo de inventario de hosts

wireguard:
  hosts:
    1.1.1.1:
      vpn_ip: 10.1.0.1/32
      public_addr: "example.com" # opcional
    2.2.2.2:
      vpn_ip: 10.1.0.2/32
# playbook

- name: Configurar malla de WireGuard
  hosts: wireguard
  remote_user: root
  roles:
    - mawalu.wireguard_private_networking
# playbook (con configuración de cliente)
- name: Configurar malla de WireGuard
  hosts: wireguard
  remote_user: root
  vars:
    client_vpn_ip: 10.1.0.100
    client_wireguard_path: "~/mi-configuracion-cliente.conf"
  roles:
    - mawalu.wireguard_private_networking

Configuración adicional

Hay un pequeño número de variables de rol que se pueden sobrescribir.

wireguard_port: "5888" # el puerto a usar para las conexiones de servidor a servidor
wireguard_path: "/etc/wireguard" # ubicación de todas las configuraciones de WireGuard

wireguard_network_name: "privada" # el nombre a usar para el archivo de configuración y wg-quick

wireguard_mtu: 1500 # Opcionalmente un MTU para establecer en el archivo wg-quick. No está establecido por defecto. También se puede establecer por host

debian_enable_backports: true # si se deben agregar los repositorios de backports en máquinas Debian

# Soporte para Raspberry Pi Zero
# Necesita encabezados del núcleo y compilación manual de WireGuard, optar por la opción, instalar la colección `community.general`
# Precaución: Puede provocar un reinicio.
allow_build_from_source: true

wireguard_sources_path: "/var/cache" # Ubicación para clonar las fuentes de WireGuard si se requiere una compilación manual

client_vpn_ip: "" # si se establece, se generará un archivo de configuración de WireGuard adicional en la ruta especificada en localhost
client_wireguard_path: "~/wg.conf" # ruta en localhost para escribir la configuración del cliente, si se establece client_vpn_ip

# una lista de pares adicionales que se agregarán a cada servidor
wireguard_additional_peers:
  - comment: martin
    ip: 10.2.3.4
    key: tu_clave_publica_wireguard
  - comment: otra_red
    ip: 10.32.0.0/16
    key: su_clave_publica_wireguard
    keepalive: 20 
    endpoint: some.endpoint:2230 

wireguard_post_up: "iptables ..." # Comando de gancho PostUp
wireguard_post_down: "iptables"   # Comando de gancho PostDown

Pruebas

Este rol tiene una pequeña configuración de prueba que se crea utilizando molecule. Para ejecutar las pruebas, sigue la guía de instalación, asegúrate de que un demonio de Docker esté en ejecución en tu máquina y ejecuta molecule test.

Contribuciones

Siéntete libre de abrir problemas o MRs si encuentras problemas o tienes ideas para mejoras. Estoy especialmente abierto a MRs que agreguen soporte para sistemas operativos adicionales y más pruebas.

Acerca del proyecto

Build your own multi server private network using wireguard and ansible

Instalar
ansible-galaxy install mawalu.wireguard_private_networking
Licencia
mit
Descargas
12.7k
Propietario
Webdev, DevOps & Security. Btw I use Arch and Nix