ARQUITECTURA VPN MESH TAILSCALE Laptop 100.64.0.1 WireGuard Conectado Servidor Linux 100.64.0.2 Router de Subred Conectado Telefono 100.64.0.3 WireGuard Conectado Coordinacion Tailscale Solo Intercambio de Claves Tuneles WireGuard directos peer-to-peer — sin relay central de trafico

Configurar una VPN segura ha requerido tradicionalmente experiencia profunda en redes, redireccion de puertos, gestion de claves y mantenimiento constante. Tailscale cambia eso por completo. Construido sobre WireGuard, Tailscale crea una VPN mesh — llamada tailnet — donde cada dispositivo se conecta directamente a todos los demas a traves de tuneles cifrados peer-to-peer. No hay cuello de botella en un servidor central, no hay puertos que abrir y no hay certificados que gestionar. Instalas el cliente, te autenticas y tus dispositivos pueden comunicarse de forma segura sin importar si estan detras de NAT, firewalls o en diferentes continentes.

Esta guia cubre todo, desde la instalacion en Linux, Windows y macOS hasta funciones avanzadas como enrutamiento de subredes, nodos de salida, Listas de Control de Acceso (ACLs) y MagicDNS.

Que es Tailscale?

Tailscale es una VPN mesh de configuracion cero que utiliza WireGuard internamente. En lugar de configurar un servidor VPN central por el que fluye todo el trafico, Tailscale establece tuneles WireGuard directos y cifrados entre tus dispositivos. El servidor de coordinacion de Tailscale solo maneja el intercambio de claves y la autenticacion de dispositivos — nunca ve tu trafico real.

Caracteristicas principales de Tailscale:

  • Topologia mesh: Cada dispositivo se conecta directamente a todos los demas. El trafico entre tu laptop y tu servidor no pasa por un punto central.
  • Basado en WireGuard: Usa el protocolo WireGuard para cifrado, proporcionando criptografia moderna (ChaCha20, Curve25519) con minima sobrecarga.
  • Traversal de NAT: Tailscale atraviesa firewalls y NAT automaticamente usando STUN, servidores relay DERP y otras tecnicas. No necesitas redireccion de puertos.
  • Basado en identidad: La autenticacion esta vinculada a tu proveedor de identidad existente (Google, Microsoft, GitHub), no a certificados o claves precompartidas gestionadas manualmente.
  • Direcciones 100.x.y.z: Cada dispositivo recibe una IP estable de Tailscale en el rango 100.64.0.0/10 (espacio CGNAT) que no cambia sin importar en que red fisica se encuentre.

Tailscale vs VPNs Tradicionales

Entender como Tailscale difiere de las configuraciones VPN tradicionales te ayuda a apreciar cuando y por que usarlo:

CaracteristicaTailscaleVPN Tradicional (OpenVPN/IPsec)WireGuard Manual
TopologiaMesh (peer-to-peer)Hub-and-spoke (servidor central)Punto a punto o hub
ConfiguracionZero-configConfiguracion compleja servidor + clienteIntercambio manual de claves
Traversal de NATAutomaticoRequiere redireccion de puertosRequiere redireccion de puertos
Gestion de clavesAutomatica via servidor de coordinacionPKI manual o claves precompartidasPares de claves manuales
IdentidadSSO (Google, Microsoft, GitHub)Certificados o credencialesClaves precompartidas
RendimientoPeer-to-peer directo, baja latenciaTodo el trafico por servidor centralDirecto, pero configuracion manual
EscalabilidadAgregar dispositivo en segundosReconfigurar servidor por cada clienteEditar configs en todos los peers
Soporte movilApps nativas (iOS, Android)Clientes de tercerosClientes de terceros

Cuando elegir Tailscale: Cuando quieres una VPN que conecte todos tus dispositivos con minimo esfuerzo, especialmente a traves de diferentes redes y entornos NAT. Es ideal para acceso remoto a laboratorios caseros, conectar equipos distribuidos o crear una red privada superpuesta entre instancias en la nube.

Cuando mantener WireGuard manual: Cuando necesitas control total sobre cada aspecto de la VPN, operas en un entorno sin conexion a internet, o tienes requisitos de cumplimiento que prohiben usar un servicio de coordinacion de terceros.

Requisitos Previos

Antes de comenzar, asegurate de tener:

  • Una cuenta de Tailscale (nivel gratuito disponible en tailscale.com)
  • Al menos dos dispositivos que quieras conectar (Linux, Windows, macOS, iOS o Android)
  • Acceso root o sudo en servidores Linux
  • Acceso de administrador en Windows (para la instalacion)
  • Familiaridad basica con la linea de comandos

Instalacion de Tailscale en Linux

Tailscale proporciona paquetes oficiales para todas las distribuciones principales de Linux. El metodo recomendado usa el script de instalacion oficial.

Ubuntu / Debian

# Agregar la clave de firma y repositorio de Tailscale
curl -fsSL https://tailscale.com/install.sh | sh

Si prefieres agregar el repositorio manualmente:

# Agregar la clave GPG de Tailscale
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null

# Agregar el repositorio de Tailscale
curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/jammy.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list

# Instalar Tailscale
sudo apt update
sudo apt install -y tailscale

Fedora / RHEL / CentOS

# Agregar el repositorio de Tailscale
sudo dnf config-manager --add-repo https://pkgs.tailscale.com/stable/fedora/tailscale.repo

# Instalar Tailscale
sudo dnf install -y tailscale

# Habilitar e iniciar el daemon
sudo systemctl enable --now tailscaled

Arch Linux

sudo pacman -S tailscale
sudo systemctl enable --now tailscaled

Verificar la Instalacion

Despues de instalar en cualquier distribucion, verifica que el daemon de Tailscale este ejecutandose:

# Verificar el estado del servicio tailscaled
sudo systemctl status tailscaled

# Verificar que el CLI de Tailscale esta disponible
tailscale version

Deberias ver una salida similar a:

1.62.0
  tailscale commit: abcdef1234567890
  other commit: abcdef1234567890
  go version: go1.22.0

Instalacion en Windows y macOS

Windows

  1. Descarga el instalador desde tailscale.com/download/windows
  2. Ejecuta el instalador .msi
  3. Tailscale aparece en la bandeja del sistema despues de la instalacion
  4. Haz clic en el icono de Tailscale y selecciona Iniciar sesion
  5. Autenticate con tu proveedor de identidad en el navegador

Alternativamente, instala via la linea de comandos con winget:

winget install Tailscale.Tailscale

macOS

Instala desde la Mac App Store o usando Homebrew:

# Instalar via Homebrew
brew install --cask tailscale

O descarga directamente desde tailscale.com/download/mac. Despues de la instalacion, abre Tailscale desde la carpeta Aplicaciones y aparecera en la barra de menus.

Docker

Para entornos containerizados, Tailscale proporciona una imagen Docker oficial:

docker run -d \
  --name=tailscale \
  --hostname=my-container \
  --cap-add=NET_ADMIN \
  --cap-add=NET_RAW \
  -v /dev/net/tun:/dev/net/tun \
  -v tailscale-state:/var/lib/tailscale \
  -e TS_AUTHKEY=tskey-auth-xxxxxxxxxxxx \
  -e TS_STATE_DIR=/var/lib/tailscale \
  tailscale/tailscale:latest

Consejo: Usa una clave de autenticacion preautorizada (TS_AUTHKEY) para evitar el paso de inicio de sesion manual en entornos sin interfaz grafica. Genera claves de autenticacion en la consola de administracion de Tailscale en Configuracion > Claves.

Conectar Dispositivos a tu Tailnet

Una vez que Tailscale esta instalado, conecta cada dispositivo a tu tailnet:

Autenticar tu Primer Dispositivo

# Iniciar Tailscale y autenticarse
sudo tailscale up

Este comando imprime una URL. Abrela en tu navegador, inicia sesion con tu proveedor de identidad y autoriza el dispositivo. Despues de la autenticacion, el dispositivo se une a tu tailnet y recibe una direccion IP de Tailscale.

Verificar el Estado de tu Conexion

# Ver tu IP de Tailscale y estado de conexion
tailscale status

Ejemplo de salida:

100.64.0.1   laptop           user@example.com  linux   -
100.64.0.2   server           user@example.com  linux   -
100.64.0.3   phone            user@example.com  iOS     -

Probar la Conectividad

Una vez que dos o mas dispositivos estan conectados, prueba la conectividad:

# Hacer ping a otro dispositivo por su IP de Tailscale
tailscale ping 100.64.0.2

# O por su nombre MagicDNS
tailscale ping server

El primer tailscale ping puede mostrar trafico enrutado a traves de un relay DERP. Los pings posteriores tipicamente establecen una conexion directa peer-to-peer:

pong from server (100.64.0.2) via DERP(nyc) in 45ms
pong from server (100.64.0.2) via 203.0.113.50:41641 in 12ms
pong from server (100.64.0.2) via 203.0.113.50:41641 in 11ms

Nota: El relay DERP se usa solo cuando no se puede establecer una conexion directa (poco comun). DERP significa Designated Encrypted Relay for Packets, y es un respaldo, no la ruta predeterminada.

Enrutamiento de Subredes

El enrutamiento de subredes permite que un nodo Tailscale actue como puerta de enlace, dando a otros nodos en tu tailnet acceso a dispositivos en una red local que no tienen Tailscale instalado.

Por que Usar Enrutamiento de Subredes?

  • Acceder a impresoras, dispositivos NAS, dispositivos IoT u otros equipos que no pueden ejecutar Tailscale
  • Alcanzar una LAN completa de oficina o casa desde cualquier dispositivo en tu tailnet
  • Evitar instalar Tailscale en cada dispositivo individual de una red

Habilitar el Enrutamiento de Subredes

En la maquina Linux que servira como router de subred:

# Habilitar el reenvio de IP (requerido para enrutamiento)
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

# Anunciar la subred local
sudo tailscale up --advertise-routes=192.168.1.0/24

Si tienes multiples subredes:

sudo tailscale up --advertise-routes=192.168.1.0/24,10.0.0.0/24

Aprobar la Ruta en la Consola de Administracion

Las rutas de subred no estan activas hasta que un administrador las aprueba:

  1. Ve a la consola de administracion de Tailscale
  2. Encuentra la maquina router de subred
  3. Haz clic en el menu de tres puntos y selecciona Editar configuracion de rutas
  4. Habilita las rutas anunciadas

Verificar el Acceso a la Subred

Desde cualquier otro dispositivo en tu tailnet:

# Hacer ping a un dispositivo en la LAN remota (ej. un NAS en 192.168.1.100)
ping 192.168.1.100

# SSH a un dispositivo en la LAN remota
ssh admin@192.168.1.50

Nodos de Salida

Un nodo de salida enruta todo el trafico de internet desde un dispositivo a traves de otro dispositivo en tu tailnet. Esto es util para:

  • Enrutar trafico a traves de un dispositivo en una ubicacion geografica especifica
  • Usar la conexion a internet de una red confiable cuando estas en Wi-Fi no confiable
  • Acceder a contenido con restriccion geografica desde la IP de tu hogar

Configurar un Nodo de Salida

En el dispositivo que servira como nodo de salida:

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

Aprueba el nodo de salida en la consola de administracion de Tailscale, igual que las rutas de subred.

Usar un Nodo de Salida

En el dispositivo que debe enrutar el trafico a traves del nodo de salida:

# Enrutar todo el trafico a traves de un nodo de salida especifico
sudo tailscale up --exit-node=server

# O usar la IP de Tailscale
sudo tailscale up --exit-node=100.64.0.2

Para dejar de usar el nodo de salida:

sudo tailscale up --exit-node=

Verificar que el Nodo de Salida Funciona

# Verificar tu IP publica -- debe coincidir con la IP publica del nodo de salida
curl -s https://ifconfig.me

# Verificar el estado de Tailscale para info del nodo de salida
tailscale status

Importante: Cuando usas un nodo de salida, todas las consultas DNS tambien se enrutan a traves de ese nodo por defecto. Esto previene fugas de DNS pero significa que la velocidad de resolucion DNS depende de la configuracion DNS del nodo de salida.

Listas de Control de Acceso (ACLs)

Las ACLs de Tailscale definen que dispositivos y usuarios pueden comunicarse entre si. Por defecto, todos los dispositivos en un tailnet pueden alcanzar a todos los demas. Las ACLs te permiten restringir esto.

Entendiendo la Sintaxis de ACL

Las ACLs se definen en la consola de administracion de Tailscale en Controles de Acceso. El archivo de politicas usa una sintaxis tipo JSON llamada HuJSON (Human JSON) que soporta comentarios:

{
  // Permitir a todos los usuarios acceso completo (politica predeterminada)
  "acls": [
    {
      "action": "accept",
      "src": ["*"],
      "dst": ["*:*"]
    }
  ]
}

Ejemplo de ACL Restrictiva

Una politica mas practica que segmenta el acceso por rol:

{
  "groups": {
    "group:admin": ["user@example.com"],
    "group:developers": ["dev1@example.com", "dev2@example.com"]
  },
  "tagOwners": {
    "tag:server": ["group:admin"],
    "tag:database": ["group:admin"]
  },
  "acls": [
    // Los administradores pueden acceder a todo
    {
      "action": "accept",
      "src": ["group:admin"],
      "dst": ["*:*"]
    },
    // Los desarrolladores pueden acceder a servidores en puertos especificos
    {
      "action": "accept",
      "src": ["group:developers"],
      "dst": ["tag:server:80,443,22"]
    },
    // Solo los administradores pueden acceder a las bases de datos
    {
      "action": "accept",
      "src": ["group:admin"],
      "dst": ["tag:database:5432,3306"]
    },
    // Todos los usuarios pueden hacer ping a todos los dispositivos
    {
      "action": "accept",
      "src": ["*"],
      "dst": ["*:*"],
      "proto": "icmp"
    }
  ]
}

Aplicar Etiquetas a Dispositivos

Las etiquetas se aplican al iniciar un dispositivo:

# Etiquetar un dispositivo como servidor
sudo tailscale up --advertise-tags=tag:server

# Etiquetar un dispositivo con multiples etiquetas
sudo tailscale up --advertise-tags=tag:server,tag:database

Nota: Los dispositivos etiquetados son propiedad de la etiqueta, no de un usuario. Esto significa que no pueden usarse para inicios de sesion interactivos y son ideales para nodos de infraestructura.

MagicDNS y DNS Personalizado

MagicDNS asigna automaticamente nombres DNS a tus dispositivos Tailscale, para que puedas referirte a ellos por nombre en lugar de direccion IP.

Habilitar MagicDNS

MagicDNS esta habilitado por defecto en tailnets nuevos. Si no esta habilitado:

  1. Ve a la consola de administracion de Tailscale
  2. Navega a DNS
  3. Habilita MagicDNS

Con MagicDNS habilitado, puedes usar nombres de dispositivos directamente:

# En lugar de:
ssh user@100.64.0.2

# Puedes usar:
ssh user@server

# O el nombre completamente calificado:
ssh user@server.tailnet-name.ts.net

Agregar Servidores DNS Personalizados

Puedes configurar DNS global o dividido en la consola de administracion:

# Servidores de nombres globales (usados para todas las consultas DNS)
# Configurar en la consola de admin en DNS > Servidores de nombres

# DNS dividido (enrutar dominios especificos a servidores DNS especificos)
# Ejemplo: Enrutar *.corp.example.com a tu DNS corporativo
# Configurar en la consola de admin en DNS > Servidores de nombres > Agregar DNS Dividido

El DNS dividido es especialmente util cuando se combina con enrutamiento de subredes. Por ejemplo, si anuncias una ruta a tu LAN de oficina, tambien puedes configurar DNS dividido para que las consultas *.office.local se resuelvan a traves del servidor DNS de la oficina.

Anular DNS Local

Para forzar todas las consultas DNS a traves de los servidores de nombres configurados de Tailscale:

sudo tailscale up --accept-dns=true

Para deshabilitar MagicDNS en un dispositivo especifico:

sudo tailscale up --accept-dns=false

Compartir Nodos con Otros Usuarios

Tailscale te permite compartir dispositivos especificos con usuarios fuera de tu tailnet. Esto es util para dar a un contratista acceso a un servidor especifico sin agregarlo a toda tu red.

Compartir un Nodo

  1. Ve a la consola de administracion de Tailscale
  2. Encuentra la maquina que quieres compartir
  3. Haz clic en el menu de tres puntos y selecciona Compartir
  4. Ingresa la direccion de correo electronico del usuario externo

El nodo compartido aparece en el tailnet del usuario externo, pero solo puede acceder a ese dispositivo especifico — no a toda tu red.

Acceso del Usuario Externo

El usuario externo debe:

  1. Tener una cuenta de Tailscale
  2. Aceptar la invitacion de compartir
  3. El dispositivo compartido aparece en su salida de tailscale status
# El usuario externo ve el dispositivo compartido
tailscale status
# 100.64.0.50   shared-server    shared by user@example.com  linux

Consejo: Combina el compartir nodos con ACLs para restringir a que puertos puede acceder el usuario externo en el dispositivo compartido. Por ejemplo, permite solo SSH (puerto 22) y HTTP (puerto 80).

Referencia de Comandos de Tailscale

ComandoDescripcion
tailscale upConectarse a tu tailnet y autenticarse
tailscale downDesconectarse del tailnet
tailscale statusMostrar dispositivos conectados y sus IPs
tailscale ping <host>Hacer ping a un dispositivo y mostrar la ruta de conexion
tailscale netcheckEjecutar un diagnostico de red
tailscale ipMostrar tus direcciones IP de Tailscale
tailscale dns statusMostrar configuracion DNS actual
tailscale file send <archivo> <host>Enviar un archivo a otro dispositivo usando Taildrop
tailscale file get <directorio>Recibir archivos enviados via Taildrop
tailscale ssh <usuario>@<host>SSH a un dispositivo usando Tailscale SSH
tailscale cert <dominio>Obtener un certificado TLS para un dominio Tailscale
tailscale logoutCerrar sesion y eliminar dispositivo del tailnet
tailscale up --advertise-routes=<CIDR>Anunciar rutas de subred
tailscale up --advertise-exit-nodeAnunciarse como nodo de salida
tailscale up --exit-node=<host>Usar un nodo de salida especifico
tailscale up --advertise-tags=<tags>Aplicar etiquetas ACL al dispositivo
tailscale up --accept-dns=falseDeshabilitar MagicDNS en este dispositivo
tailscale bugreportGenerar un informe de errores para solucion de problemas

Solucion de Problemas

El Dispositivo No Aparece en la Consola de Administracion

# Verificar que el daemon esta ejecutandose
sudo systemctl status tailscaled

# Revisar errores de autenticacion en los logs
sudo journalctl -u tailscaled --since "10 minutes ago"

# Forzar re-autenticacion
sudo tailscale up --force-reauth

No se Puede Alcanzar Otros Dispositivos

# Ejecutar un diagnostico de red
tailscale netcheck

# Verificar si la conexion es directa o a traves de relay
tailscale ping <nombre-dispositivo>

# Verificar que el firewall no esta bloqueando Tailscale
sudo iptables -L -n | grep -i tailscale

# Verificar si el puerto UDP 41641 es alcanzable (usado para conexiones directas)
sudo ss -ulnp | grep tailscaled

Conexiones Lentas (Trafico a traves de Relay)

Si tailscale ping muestra trafico pasando por un relay DERP en lugar de una conexion directa:

# Ejecutar netcheck para ver tipo de NAT y conectividad
tailscale netcheck

# Ejemplo de salida mostrando problemas potenciales:
#   UDP: true
#   IPv4: yes, 203.0.113.50:41641
#   MappingVariesByDestAddr: false
#   PortMapping: UPnP
#   Nearest DERP: New York City

Causas comunes de conexiones a traves de relay:

  • NAT simetrico en uno o ambos lados (MappingVariesByDestAddr: true)
  • Firewall bloqueando UDP en el puerto 41641
  • Firewalls corporativos realizando inspeccion profunda de paquetes

Soluciones:

# En Linux, asegurate de que UDP no este bloqueado
sudo ufw allow 41641/udp

# Si estas detras de un firewall corporativo estricto, Tailscale usara el relay DERP
# DERP esta cifrado y es funcional, solo ligeramente mas lento

Las Rutas de Subred No Funcionan

# Verificar que el reenvio de IP esta habilitado
sysctl net.ipv4.ip_forward
# Debe retornar: net.ipv4.ip_forward = 1

# Verificar que las rutas estan anunciadas
tailscale status --json | grep -A5 "AllowedIPs"

# Verificar que las rutas estan aprobadas en la consola de administracion
# Las rutas no aprobadas no funcionaran

MagicDNS No Resuelve

# Verificar estado de DNS
tailscale dns status

# Verificar que resolv.conf esta gestionado por Tailscale
cat /etc/resolv.conf

# Si usas systemd-resolved, verificar su configuracion
resolvectl status

# Forzar actualizacion de DNS
sudo tailscale down && sudo tailscale up

Resumen

Tailscale transforma la complejidad de la configuracion VPN en una experiencia de configuracion casi nula. Al construir sobre las bases criptograficas de WireGuard y agregar traversal automatico de NAT, autenticacion basada en identidad y una topologia mesh, Tailscale te permite conectar todos tus dispositivos de forma segura en minutos en lugar de horas.

Puntos clave de esta guia:

  • La instalacion es trivial: Un comando para instalar, un comando para conectar
  • La red mesh elimina cuellos de botella: Los dispositivos se comunican directamente sin un servidor central
  • El enrutamiento de subredes extiende el alcance: Accede a dispositivos que no pueden ejecutar Tailscale a traves de un router de subred
  • Los nodos de salida proporcionan enrutamiento flexible de trafico: Enruta todo el trafico a traves de cualquier dispositivo en tu tailnet
  • Las ACLs aplican acceso de minimo privilegio: Controla quien puede alcanzar que a un nivel granular
  • MagicDNS simplifica el direccionamiento: Usa nombres de dispositivos en lugar de direcciones IP

Para guias relacionadas de seguridad y redes, consulta nuestros articulos sobre configurar un servidor VPN WireGuard en Ubuntu para configuracion manual de WireGuard, y fortalecimiento de SSH para servidores Linux para asegurar las conexiones SSH a tus servidores conectados con Tailscale.