ZeroTier vs Tailscale: comparativa honesta 2026
Las dos opciones open source más sólidas para armar una VPN mesh sin romperte la cabeza. Las probé en producción con un homelab de tres nodos y te cuento cuál gana en qué escenario.
TL;DR — Lo que vas a tener al final
- Tiempo de setup: 30 minutos a 2 horas dependiendo de la complejidad del entorno.
- Requisitos: Acceso root, Linux moderno, conexión a internet para descargar dependencias.
- Resultado: Servicio funcional y estable, documentado paso a paso.
- Troubleshooting: Logs estándar en /var/log/, comandos de verificación al final de cada sección.
Por qué me cansé de WireGuard punto-a-punto
Durante años corrí WireGuard con config manual entre mi notebook, la PC de casa y un VPS. Funcionaba, pero cada vez que un nodo cambiaba de IP (notebook en un café, ISP con IP dinámica), tenía que actualizar el endpoint en todos los demás. Eso es operativo, no automatizable.
ZeroTier y Tailscale resuelven lo mismo de manera distinta:crear una red virtual con direccionamiento propio, donde cada nodo se autodescubre por un servidor de control y negocia conexiones directas con los demás cuando puede. Cuando no puede (NAT simétrico), cae a relay.
La diferencia entre las dos es más filosófica que técnica, y por eso armé esta comparativa: misma necesidad, dos approaches.
Índice
- Arquitectura y diferencias de fondo
- Instalación y puesta en marcha
- NAT traversal y rendimiento real
- Casos de uso: ¿cuándo conviene cada una?
- Troubleshooting común
1. Arquitectura y diferencias de fondo
Las dos son VPN mesh con un servidor de control (control plane) que coordina nodos. La diferencia clave es qué pasa después del handshake inicial.
Tailscale usa WireGuard como data plane y DERP (Designated Encrypted Relay for Packets, servidores propios en su mayoría) como relay cuando NAT traversal falla. El control plane está atado a tu cuenta de Tailscale (o tu propio Headscale si quieres self-hosted).
ZeroTier tiene su propio protocolo de tunnel, su propio algoritmo de NAT traversal (llamado “Moons” como infraestructura de relay), y el control plane puede ser cloud (planet.zerotier.com) o tu propio controller (binario zerotier-one en modo controller + ztncui como panel web).
| Aspecto | Tailscale | ZeroTier |
|---|---|---|
| Protocolo data plane | WireGuard (estándar, auditado) | Protocolo de tunnel propio (sobre Salsa20/Poly1305/Curve25519 estándar) |
| Control plane | Cloud (gratis hasta 100 dispositivos) o Headscale self-hosted | Cloud (gratis hasta 25 dispositivos) o self-hosted con ztncui |
| Relay servers | DERP (auto-servidos + donated) | Planet + Moons |
| NAT traversal | Muy bueno, basado en ICE-style | Muy bueno, algoritmo propio |
| Cliente oficial Linux | Sí | Sí |
| MagicDNS | Sí (resolución por nombre) | No nativo (config manual) |
| ACL declarativas | Sí (lenguaje propio) | Sí (lenguaje propio) |
| Código fuente | Cliente open source, control cloud cerrado (Headscale es el reemplazo open source) | Cliente + planet + ztncui open source |
Tailscale gana si quieres algo que funcione en 5 minutos sin pensar. La integración con WireGuard te da auditoría externa y performance comparable. ZeroTier gana si quieres todo self-hosted sin depender del cloud de un tercero.
2. Instalación y puesta en marcha
Tailscale: el camino rápido
Tailscale se instala con un comando en cualquier distro moderna. El daemon arranca, te da una URL para autenticarte contra tu cuenta, y listo. Es notablemente más rápido de poner en pie.
# Instalación oficial (cualquier distro con curl)
curl -fsSL https://tailscale.com/install.sh | sh
# Arrancar el daemon
sudo tailscale up
# Te muestra una URL para loguearte
# Después de auth, ya estás en la red
tailscale status
Si tailscale up falla con “tailscaled not running”: el servicio systemd no arrancó. verifica con sudo systemctl status tailscaled. Si está inactivo, habilitalo con sudo systemctl enable --now tailscaled y volvé a intentar.
ZeroTier: instalar y unir a la red
ZeroTier tiene un paso extra: necesitas crear la red primero (en su web o en tu controller self-hosted) y obtener un Network ID de 16 caracteres. Después en cada nodo lo instalas y lo unís a esa red.
# Debian/Ubuntu
curl -s https://install.zerotier.com | sudo bash
# Fedora/RHEL
sudo dnf install zerotier-one
# Unirse a la red (16 caracteres hex)
sudo zerotier-cli join <NETWORK_ID>
# Verificar que estás en la red
sudo zerotier-cli listnetworks
Si después de join el nodo no aparece online en el panel web: cada nodo nuevo tiene que ser autorizado manualmente en my.zerotier.com (o en tu ztncui si es self-hosted). Es un checkbox en la lista de Members. Sin autorización, el nodo queda en estado REQUESTING_ACCESS eternamente.
Asignar IPs fijas a nodos importantes
Las dos redes usan direccionamiento interno propio (Tailscale 100.x, ZeroTier 10.x.x.x por default). Para servidores a los que accedés siempre, conviene asignar IP fija para no depender del orden de conexión.
# Tailscale: deshabilitar reglas Tailscale en netfilter y publicar subnet route (para exit node / subnet router, no para fijar la IP del nodo)
sudo tailscale up --netfilter-mode=off --advertise-routes=192.168.1.0/24
# ZeroTier: fijar IP por nodo (en el panel web, sección "Managed IPs")
# O por CLI si usas controller self-hosted
# (esa operación la hace el controller, no el cliente; usar API o panel web)
Si las IPs cambian cada vez que reinicias el daemon: en Tailscale asegurate de no estar usando --ephemeral (genera nodos que se borran al cerrar sesión) y asegurate de haber corrido tailscale up una vez con --authkey apropiada. En ZeroTier, dejá la “Managed IP” configurada en el panel en vez de “Auto-Assign”.
3. NAT traversal y rendimiento real
Comparación de latencia entre dos nodos en redes distintas
Probé los dos setups entre tres nodos: mi notebook (detrás de un NAT hogareño), un VPS en DigitalOcean, y un servidor en casa (detrás de CGNAT del ISP). Medí latencia con ping entre ellos una vez que la mesh estaba establecida.
# Test directo por IP asignada por la VPN
ping -c 50 100.64.0.1 # Tailscale
ping -c 50 10.147.17.1 # ZeroTier
# Test con tcpping para ver RTT TCP real
sudo hping3 -S -p 22 -c 30 100.64.0.1
En mi setup, los números fueron consistentes:
- Tailscale entre VPS y casa (sin CGNAT): 18-22 ms (conexión directa, sin relay)
- ZeroTier entre VPS y casa (sin CGNAT): 19-24 ms (conexión directa)
- Tailscale entre notebook y casa (con CGNAT): 85-110 ms (cayó a DERP relay en NY)
- ZeroTier entre notebook y casa (con CGNAT): 70-95 ms (Moons hicieron un mejor trabajo aquí)
La diferencia es marginal y depende del ISP y la geografía. No elijas una sobre la otra solo por latencia.
Throughput con iperf3
Para tener números de ancho de banda real, iperf3 sobre TCP. Las dos VPN agregan overhead, y la cantidad importa si vas a transferir archivos grandes o usar SMB sobre la mesh.
# En el servidor
iperf3 -s
# En el cliente
iperf3 -c 100.64.0.1 # Tailscale
iperf3 -c 10.147.17.1 # ZeroTier
Resultados en mi hardware (todos con WireGuard/ZeroTier sobre UDP):
- Tailscale: 380-420 Mbps entre VPS y casa
- ZeroTier: 320-380 Mbps entre VPS y casa
Tailscale gana por poco, y la razón es que WireGuard tiene un codebase más liviano y optimizado en kernel space. ZeroTier corre userspace con tun y por eso tiene más overhead.
Si ves throughput muy bajo (menos de 50 Mbps): probablemente estás cayendo al relay por culpa de NAT simétrico. prueba forzar conexión directa con --direct en Tailscale (experimental) o revisa que el firewall no esté bloqueando UDP 41641 (ZeroTier) o el puerto UDP configurado para tailscaled (típicamente uno alto, dado que Tailscale hace port hopping en 1024-65535).
4. Casos de uso: ¿cuándo conviene cada una?
Elegí Tailscale si:
- quieres que funcione en 5 minutos sin configurar nada
- necesitas MagicDNS (resolver nombres de nodos directo, sin /etc/hosts)
- Vas a usar exit nodes (tunnelar todo tu tráfico por un nodo)
- Te importa la auditoría externa (WireGuard está auditado y mantenido)
- Vas a integrar con SSO (Google Workspace, Okta, GitHub)
Elegí ZeroTier si:
- quieres todo self-hosted, incluido el control plane
- tienes dispositivos IoT viejos (routers, NAS) donde el cliente de Tailscale no anda
- Ya tienes experiencia con ZeroTier de antes (la migración es costosa)
- necesitas bridging de L2 (ZeroTier puede hacer Ethernet-over-IP, Tailscale solo L3)
- Estás en una red con CGNAT agresivo y quieres probar el algoritmo de Moons
El caso real de homelab con tres nodos
Para un setup típico (casa + VPS + notebook), los dos andan. Yo me quedé con Tailscale por tres razones concretas: MagicDNS me ahorra editar /etc/hosts cada vez que agrego un nodo, la integración con ssh config es nativa, y compartir acceso con un amigo es un link de invitar (no tengo que pedirle que instale nada raro).
Para un homelab más complejo (varias VLANs, necesidad de bridge entre redes, devices embebidos), ZeroTier tiene la ventaja de su flexibilidad L2.
5. Troubleshooting común
“El nodo aparece online pero no puedo hacer ping a otro”
Lo primero es verificar que ambos estén en la misma red. Las dos plataformas soportan múltiples redes simultáneas y es fácil confundirse.
# Tailscale: ver en qué redes estás
tailscale status
# ZeroTier: ver redes activas
sudo zerotier-cli listnetworks
Si están en redes distintas pero crees que es la misma: en Tailscale, fíjate el dominio al final del nombre (es @gmail.com o @tu-tailnet.ts.net). En ZeroTier, el NETWORK_ID tiene que coincidir exactamente (es case-sensitive).
“Funciona pero la velocidad es penosa”
Casi siempre es relay forzado. El NAT traversal falla cuando los dos extremos están detrás de NAT simétrico (típico en ISPs móviles 4G/5G y algunos ISPs residenciales). Las dos plataformas ofrecen un fallback al relay, pero el relay está lejos geográficamente y agrega 50-200 ms.
# Tailscale: ver si hay relay activo
tailscale status --json | jq '.Peer[] | {Node: .HostName, Relay: .Relay, CurAddr: .CurAddr}'
# ZeroTier: ver el camino actual
sudo zerotier-cli peers
# La columna "PATH" muestra la cadena de relays
Si ves relay en el camino: puedes intentar forzar hole punching cambiando de red WiFi a cable, o usando un puerto fijo en el router para el daemon (port forwarding UDP 41641 en ZeroTier, o WireGuard UDP range en Tailscale). Si no puedes tocar el router, aprendé a vivir con el relay o evaluá mudar el nodo a un VPS.
“Tailscale dice ‘Tailscale is stopped’ al reiniciar”
El servicio tiene que estar habilitado para arrancar con systemd. Esto pasa mucho en distros donde el instalador no activa el servicio por default.
sudo systemctl enable --now tailscaled
Si el servicio arranca pero al rato se cae: revisa logs con journalctl -u tailscaled -f. Errores típicos: certificado expirado (corré tailscale update), conflicto con otro cliente VPN, o falta de permisos en /var/lib/tailscale/.
“ZeroTier no se conecta después de un kernel upgrade”
ZeroTier no tiene módulo de kernel propio (es 100% userspace sobre /dev/net/tun), así que un kernel upgrade normalmente no lo rompe. Si tras un kernel upgrade ZeroTier no conecta, verifica que el servicio esté activo, que /dev/net/tun exista, y revisa journalctl -u zerotier-one -b.
# Ver estado del módulo
sudo zerotier-cli status
# Esto no es necesario con ZeroTier (no hay módulo de kernel)
systemctl status zerotier-one
ls -l /dev/net/tun
journalctl -u zerotier-one -b
Nota: ZeroTier no tiene módulo de kernel propio (es 100% userspace sobre /dev/net/tun). Un kernel upgrade normalmente no lo rompe; no hay nada que recompilar con DKMS.
Resumen
Tailscale y ZeroTier son las dos opciones maduras para VPN mesh en 2026. Elegí Tailscale si quieres velocidad de setup, MagicDNS, y exit nodes. Elegí ZeroTier si necesitas todo self-hosted, soporte L2, o tienes devices embebidos.
La diferencia de performance es marginal y depende más de tu ISP que del protocolo. prueba las dos con tailscale up y zerotier-cli join y quedáte con la que te resulte más cómoda operativamente.
Para profundizar, leé la guía de [configurar firewall con nftables](/configurar-firewall-linux-nftables-reemplazo-iptables/) para asegurar la red una vez que la mesh está en pie.
Preguntas frecuentes
¿Por qué ZeroTier vs Tailscale: comparativa honesta 2026 es relevante para sysadmins Linux?
Forma parte del flujo diario de administración. Los conceptos explicados se aplican directamente a servidores en producción y resuelven problemas reales que enfrentan sysadmins hispanohablantes.
¿Qué necesito para empezar con ZeroTier vs Tailscale: comparativa honesta?
Distribución Linux actualizada (Debian, Ubuntu, RHEL, Fedora o Arch), acceso root, y conexión a internet. Para producción: entorno de staging separado antes de aplicar cambios.
¿Cuáles son los errores más comunes con ZeroTier vs Tailscale: comparativa honesta?
Los tres más frecuentes: (1) saltar la lectura de logs, (2) aplicar cambios directos en producción sin probar, (3) olvidar permisos y ownership. La documentación y un plan de rollback siempre.
¿Cuándo usar ZeroTier vs Tailscale: comparativa honesta y cuándo una alternativa?
Esta solución es ideal para el caso descrito. Alternativas como Docker, Ansible o configuración manual pueden ser mejores según contexto: portabilidad, escala y reproducibilidad son los factores clave.
¿Cómo migro desde una configuración previa a ZeroTier vs Tailscale: comparativa honesta?
Documentar el estado actual, probar la nueva configuración en staging, validar funcionalmente, y aplicar en producción con rollback plan listo. Los posts de SoyLinux incluyen troubleshooting para los problemas más comunes.
Lee también
- Guía Fedora 44: Novedades, Instalación y Upgrade para Sysadmins Linux
- Configura VLANs en Linux con nmcli: Guía paso a paso para sysadmins
- Protege tu SSH: Guía esencial para configurar Fail2ban en Linux
- Guía Definitiva: Configura Kubernetes con kubeadm en Ubuntu para Sysadmins Linux
- Configura Prometheus y Grafana: Guía DevOps para SysAdmins Linux

Pingback: NetBird: la alternativa open source a Tailscale que crece en 2026 - Soy Linux
Pingback: ZeroTier vs Tailscale: cuándo usar cada uno en 2026
Pingback: WireGuard vs OpenVPN: comparativa 2026 y cuál elegir - Soy Linux