Mesh VPN con tailscale

Guía sobre como desplegar una red VPN desplegrada gestionada por tailscale.

Planificación y diseño

Necesidades:

Un gran candidato para este proyecto sería wireguard, que es una VPN moderna. El problema es que es muy difícil de escalar, ya que la cantidad de conexiones que hay que gestionar escala de acuerdo a esta ecuación "(n-1)*n".

Tailscale es una solución gratis y de software libre que nos permite gestionar esto intercambiando las claves públicas entre nodos de manera automática. Además agrega funcionalidades como listas de acceso, DNS para dominios concretos y más.

Creación del tailnet

El primer paso será crear una cuenta en https://tailscale.com. Tras crearlo, sólo tendremos que descargar e instalar el programa y agregarlo a la red. Deberíamos ver el equipo en la interfaz web.

Acceso remoto a servicios

Ahora vamos a realizar el mismo proceso en un servidor alpine para garantizar acceso a todos los equipos en la red a estos servicios

curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

Para que este nodo nos dé acceso a toda la red, es necesario configurarlo como subnet router y aprobar la ruta en la interfaz web, así como el propio dispositivo.

echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf
sudo tailscale set --advertise-routes=tu.red.local/cidr

Acceso remoto a servicios

Ahora podemos acceder a los servicios de la red local de manera segura y sencilla desde cualquier lugar. Además, la gestión de usuarios y dispositivos es muy sencilla desde la interfaz web.

Este sistema es fácilmente escalable, ya que sólo tenemos que agregar nuevos dispositivos a la red y configurar las rutas necesarias. Además, Tailscale se encarga de gestionar las claves y conexiones de manera automática.