Instalación y Configuración de Tailscale VPN

Tailscale es una solución VPN de malla basada en WireGuard que permite conectar dispositivos de forma segura sin configuración compleja de red. Con soporte para NAT traversal automático, ACLs, MagicDNS y exit nodes, Tailscale simplifica drásticamente la gestión de redes privadas en Linux. En este artículo aprenderás a instalar y configurar Tailscale en tu servidor VPS o baremetal.

Requisitos Previos

  • Servidor con Ubuntu 20.04+, Debian 11+, CentOS 8+ o Rocky Linux 8+
  • Acceso root o sudo
  • Cuenta en tailscale.com (gratuita disponible)
  • Kernel Linux 4.1+ (para soporte de WireGuard)

Instalación de Tailscale

Tailscale proporciona un script de instalación oficial que detecta automáticamente la distribución:

# Instalar Tailscale usando el script oficial
curl -fsSL https://tailscale.com/install.sh | sh

Para instalación manual en Ubuntu/Debian:

# Agregar la clave GPG y el repositorio
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.gpg | sudo apt-key add -
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/focal.list | sudo tee /etc/apt/sources.list.d/tailscale.list

# Actualizar e instalar
sudo apt update
sudo apt install tailscale -y

Para CentOS/Rocky Linux:

# Agregar repositorio y instalar
sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/rhel/9/tailscale.repo
sudo dnf install tailscale -y

Habilitar e iniciar el servicio:

# Habilitar y arrancar el servicio tailscaled
sudo systemctl enable --now tailscaled

# Verificar el estado
sudo systemctl status tailscaled

Autorización del Dispositivo

Una vez instalado, autenticar el dispositivo en tu red Tailscale:

# Iniciar Tailscale y obtener enlace de autenticación
sudo tailscale up

# La salida mostrará una URL para autenticarse
# Visita la URL en tu navegador para autorizar el dispositivo

Para servidores sin interfaz gráfica, usar auth keys preconfiguradas:

# Autenticar con una auth key (generada en el panel de Tailscale)
sudo tailscale up --authkey=tskey-auth-XXXXXXXXX

# Auth key reutilizable para automatización
sudo tailscale up --authkey=tskey-auth-XXXXXXXXX --advertise-tags=tag:servidor

Verificar la conexión:

# Ver el estado de la red Tailscale
tailscale status

# Ver la IP asignada por Tailscale
tailscale ip -4

# Verificar conectividad con otro nodo
tailscale ping nombre-del-dispositivo

Configuración de Subnet Routing

Permite que otros dispositivos Tailscale accedan a subredes locales a través de este servidor:

# Habilitar IP forwarding (requerido para subnet routing)
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

# Anunciar la subred local (ejemplo: 192.168.1.0/24)
sudo tailscale up --advertise-routes=192.168.1.0/24

# Para múltiples subredes
sudo tailscale up --advertise-routes=192.168.1.0/24,10.0.0.0/24

En el panel de administración de Tailscale, aprobar las rutas anunciadas. Luego, en los dispositivos cliente:

# Habilitar las rutas de subred en el cliente
sudo tailscale up --accept-routes

Configuración de Exit Node

Configura este servidor como exit node para enrutar el tráfico de internet de otros dispositivos:

# Anunciar este nodo como exit node
sudo tailscale up --advertise-exit-node

# Combinar con subnet routing si es necesario
sudo tailscale up --advertise-routes=192.168.1.0/24 --advertise-exit-node

Aprobar el exit node en el panel de Tailscale, luego activarlo en el cliente:

# Usar el exit node en un dispositivo cliente
sudo tailscale up --exit-node=IP-DEL-EXIT-NODE

# Usar el exit node por nombre
sudo tailscale up --exit-node=nombre-del-servidor

# Desactivar el exit node
sudo tailscale up --exit-node=

Políticas ACL

Las ACLs se configuran en el panel de Tailscale bajo "Access Controls". Ejemplo de política:

{
  "tagOwners": {
    "tag:servidor": ["autogroup:admin"],
    "tag:cliente": ["autogroup:admin"]
  },
  "acls": [
    {
      "action": "accept",
      "src": ["tag:cliente"],
      "dst": ["tag:servidor:22,80,443"]
    },
    {
      "action": "accept",
      "src": ["autogroup:admin"],
      "dst": ["*:*"]
    }
  ]
}

Para aplicar tags al dispositivo actual:

# Asignar tags durante la autenticación
sudo tailscale up --authkey=tskey-auth-XXXX --advertise-tags=tag:servidor

# Re-autenticar con nuevos tags
sudo tailscale up --advertise-tags=tag:servidor,tag:web

MagicDNS y Nombres de Host

MagicDNS permite resolver dispositivos por nombre dentro de la red Tailscale. Se activa desde el panel bajo "DNS > Enable MagicDNS".

# Verificar la resolución de nombres (una vez activado MagicDNS)
ping nombre-del-dispositivo
ping nombre-del-dispositivo.dominio-tailnet.ts.net

# Ver el dominio asignado a tu tailnet
tailscale status | head -5

# Configurar resolvedores DNS adicionales en el panel
# Settings > DNS > Add nameserver

Para usar un dominio personalizado con Tailscale:

# Verificar la configuración DNS actual
resolvectl status

# Comprobar que tailscale controla la resolución DNS
cat /etc/resolv.conf

Acceso SSH por Tailscale

Tailscale SSH permite autenticación basada en la identidad de Tailscale sin gestionar claves SSH manualmente:

# Habilitar Tailscale SSH en el servidor
sudo tailscale up --ssh

# Verificar que el servicio SSH de Tailscale está activo
tailscale status

En la política ACL, permitir acceso SSH:

{
  "ssh": [
    {
      "action": "accept",
      "src": ["autogroup:admin"],
      "dst": ["autogroup:self"],
      "users": ["autogroup:nonroot", "root"]
    }
  ]
}

Conectarse al servidor:

# Conectar vía SSH usando el nombre Tailscale
ssh usuario@nombre-del-servidor

# O usando la IP de Tailscale
ssh [email protected]

Solución de Problemas

El dispositivo no se conecta:

# Verificar el estado del daemon
sudo systemctl status tailscaled
sudo journalctl -u tailscaled -f

# Reiniciar el servicio
sudo systemctl restart tailscaled

# Verificar conectividad con el servidor de Tailscale
curl -I https://login.tailscale.com

Problemas con subnet routing:

# Verificar que IP forwarding está activo
sysctl net.ipv4.ip_forward

# Comprobar las rutas anunciadas
tailscale status --peers

# Revisar reglas de iptables que puedan bloquear el tráfico
sudo iptables -L FORWARD -n

Problemas de latencia o conectividad P2P:

# Ver el tipo de conexión con cada peer (directo vs relay DERP)
tailscale status

# Forzar reconfiguración de red
sudo tailscale down && sudo tailscale up

# Ver logs detallados
sudo tailscale bugreport

Verificar la versión instalada:

tailscale version

Conclusión

Tailscale transforma la gestión de redes privadas virtuales en una tarea sencilla gracias a su integración con WireGuard y su arquitectura zero-config. Con subnet routing, exit nodes y ACLs granulares, es una solución completa tanto para entornos personales como empresariales en Linux.