mawalu.wireguard_private_networking
Red privada de servidor a servidor con Ansible y WireGuard
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.
Build your own multi server private network using wireguard and ansible
ansible-galaxy install mawalu.wireguard_private_networking