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:
| Caracteristica | Tailscale | VPN Tradicional (OpenVPN/IPsec) | WireGuard Manual |
|---|---|---|---|
| Topologia | Mesh (peer-to-peer) | Hub-and-spoke (servidor central) | Punto a punto o hub |
| Configuracion | Zero-config | Configuracion compleja servidor + cliente | Intercambio manual de claves |
| Traversal de NAT | Automatico | Requiere redireccion de puertos | Requiere redireccion de puertos |
| Gestion de claves | Automatica via servidor de coordinacion | PKI manual o claves precompartidas | Pares de claves manuales |
| Identidad | SSO (Google, Microsoft, GitHub) | Certificados o credenciales | Claves precompartidas |
| Rendimiento | Peer-to-peer directo, baja latencia | Todo el trafico por servidor central | Directo, pero configuracion manual |
| Escalabilidad | Agregar dispositivo en segundos | Reconfigurar servidor por cada cliente | Editar configs en todos los peers |
| Soporte movil | Apps nativas (iOS, Android) | Clientes de terceros | Clientes 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
- Descarga el instalador desde tailscale.com/download/windows
- Ejecuta el instalador
.msi - Tailscale aparece en la bandeja del sistema despues de la instalacion
- Haz clic en el icono de Tailscale y selecciona Iniciar sesion
- 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:
- Ve a la consola de administracion de Tailscale
- Encuentra la maquina router de subred
- Haz clic en el menu de tres puntos y selecciona Editar configuracion de rutas
- 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:
- Ve a la consola de administracion de Tailscale
- Navega a DNS
- 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
- Ve a la consola de administracion de Tailscale
- Encuentra la maquina que quieres compartir
- Haz clic en el menu de tres puntos y selecciona Compartir
- 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:
- Tener una cuenta de Tailscale
- Aceptar la invitacion de compartir
- 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
| Comando | Descripcion |
|---|---|
tailscale up | Conectarse a tu tailnet y autenticarse |
tailscale down | Desconectarse del tailnet |
tailscale status | Mostrar dispositivos conectados y sus IPs |
tailscale ping <host> | Hacer ping a un dispositivo y mostrar la ruta de conexion |
tailscale netcheck | Ejecutar un diagnostico de red |
tailscale ip | Mostrar tus direcciones IP de Tailscale |
tailscale dns status | Mostrar 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 logout | Cerrar sesion y eliminar dispositivo del tailnet |
tailscale up --advertise-routes=<CIDR> | Anunciar rutas de subred |
tailscale up --advertise-exit-node | Anunciarse 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=false | Deshabilitar MagicDNS en este dispositivo |
tailscale bugreport | Generar 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.