--- title: "Cómo instalar y configurar Tailscale en Ubuntu 24.04" description: "Instala Tailscale en Ubuntu 24.04 desde su repositorio oficial, une el servidor a tu tailnet y configura subnet router, exit node, ACL y Tailscale SSH." category: "Acceso Remoto" language: es source: https://cubepath.com/es/docs/acceso-remoto/instalacion-y-configuracion-de-tailscale-vpn updated: 2026-09-25 --- # Cómo instalar y configurar Tailscale en Ubuntu 24.04 Tailscale es una VPN de malla basada en WireGuard: cada dispositivo se conecta directamente con los demás y el servicio de coordinación de Tailscale solo reparte claves y rutas. En este tutorial instalarás Tailscale en un servidor Ubuntu 24.04, lo unirás a tu red privada (tailnet), lo convertirás en subnet router y exit node, y controlarás el acceso con ACL y Tailscale SSH. ## Requisitos previos Para seguir esta guía necesitas: - Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath. - Un usuario no root con privilegios `sudo`. - Una cuenta de Tailscale en [login.tailscale.com](https://login.tailscale.com) con permisos de administrador de la tailnet. - Al menos otro dispositivo (tu portátil, por ejemplo) con Tailscale instalado y conectado a la misma tailnet, para probar la conexión. Tailscale no necesita abrir puertos de entrada: atraviesa NAT y firewalls de forma automática. Si el tráfico directo no es posible, usa sus servidores de relay (DERP). ## Paso 1: Instalar Tailscale desde el repositorio oficial Tailscale publica paquetes para cada versión de Ubuntu. Añade su clave de firma y el repositorio para Ubuntu 24.04 (noble): ```bash curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.noarmor.gpg | sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg > /dev/null curl -fsSL https://pkgs.tailscale.com/stable/ubuntu/noble.tailscale-keyring.list | sudo tee /etc/apt/sources.list.d/tailscale.list ``` El archivo `.list` ya incluye la opción `signed-by` apuntando a la clave que acabas de descargar. Instala el paquete: ```bash sudo apt update sudo apt install tailscale ``` El paquete activa y arranca el servicio `tailscaled`. Compruébalo: ```bash systemctl status tailscaled tailscale version ``` ```output ● tailscaled.service - Tailscale node agent Loaded: loaded (/usr/lib/systemd/system/tailscaled.service; enabled; preset: enabled) Active: active (running) since ... ``` ## Paso 2: Unir el servidor a la tailnet Ejecuta `tailscale up` para registrar el servidor. Como un servidor no tiene navegador, el comando imprime una URL que debes abrir en tu equipo: ```bash sudo tailscale up ``` ```output To authenticate, visit: https://login.tailscale.com/a/1a2b3c4d5e6f ``` Abre la URL, inicia sesión y autoriza el dispositivo. El comando termina solo cuando se completa la autorización. Para desplegar servidores de forma automática, genera una clave de autenticación en la consola de administración (**Settings > Keys > Generate auth key**) y pásala al comando. Sustituye `tskey-auth-xxxx` por tu clave: ```bash sudo tailscale up --auth-key=tskey-auth-xxxx ``` > Consejo: las claves de nodo caducan por defecto cada 180 días y el servidor dejaría de estar conectado. Para servidores, desactiva la caducidad en la consola (**Machines**, menú del equipo, **Disable key expiry**) o usa etiquetas (paso 5), que no caducan. Comprueba la IP que Tailscale ha asignado al servidor (rango `100.64.0.0/10`) y los demás dispositivos de la tailnet: ```bash tailscale ip -4 tailscale status ``` ```output 100.101.102.103 100.101.102.103 vps-madrid your_user@ linux - 100.88.12.34 portatil your_user@ macOS - ``` Prueba la conectividad con otro dispositivo por su nombre. `tailscale ping` indica también si la conexión es directa o pasa por un relay DERP: ```bash tailscale ping portatil ``` ```output pong from portatil (100.88.12.34) via 203.0.113.25:41641 in 18ms ``` Si la respuesta dice `via DERP(mad)`, la conexión funciona, pero a través de un relay y con más latencia. ## Paso 3: Configurar el servidor como subnet router Un subnet router permite que los dispositivos de la tailnet lleguen a una red que no tiene Tailscale instalado, por ejemplo la red privada donde están tus otros servidores. Primero activa el reenvío de paquetes IPv4 e IPv6 de forma permanente: ```bash echo 'net.ipv4.ip_forward = 1' | sudo tee /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 ``` ```output net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 ``` Anuncia la subred. Sustituye `10.10.0.0/24` por el rango de tu red privada: ```bash sudo tailscale set --advertise-routes=10.10.0.0/24 ``` `tailscale set` cambia una opción sin tocar las demás, a diferencia de `tailscale up`, que exige repetir todas las opciones ya aplicadas. Después, en la consola de administración, abre el menú del servidor en **Machines**, entra en **Edit route settings** y aprueba la ruta. Los clientes Linux no aceptan rutas anunciadas por defecto. Actívalo en cada cliente Linux que deba usarlas (Windows, macOS, iOS y Android las aceptan sin configuración): ```bash sudo tailscale set --accept-routes ``` Desde un cliente, verifica que llegas a un equipo de la subred que no tiene Tailscale: ```bash ping -c 3 10.10.0.5 ``` ## Paso 4: Configurar el servidor como exit node Un exit node envía todo el tráfico de Internet de un cliente a través del servidor, útil en redes Wi-Fi públicas o para salir con la IP del servidor. Con el reenvío ya activado en el paso anterior, anuncia el servidor como exit node: ```bash sudo tailscale set --advertise-exit-node ``` Aprueba la opción **Use as exit node** en **Edit route settings** de la consola. Luego, en un cliente Linux, selecciona el servidor como salida. La segunda opción mantiene el acceso a la red local del cliente (impresoras, router): ```bash sudo tailscale set --exit-node=vps-madrid --exit-node-allow-lan-access=true ``` En Windows, macOS y móviles se elige desde el menú de la aplicación, en **Exit node**. Comprueba desde el cliente que tu IP pública es ahora la del servidor: ```bash curl -4 https://ifconfig.me ``` Para dejar de usarlo: ```bash sudo tailscale set --exit-node= ``` ## Paso 5: Restringir el acceso con etiquetas y ACL Por defecto, todos los dispositivos de la tailnet pueden conectarse entre sí. La política de acceso, que editas en **Access controls** de la consola, define quién puede llegar a qué. Primero declara una etiqueta para los servidores y quién puede asignarla. Esta política permite a los administradores todo, y a los demás miembros solo SSH y HTTPS hacia los servidores etiquetados: ```json { "tagOwners": { "tag:servidor": ["autogroup:admin"] }, "acls": [ { "action": "accept", "src": ["autogroup:admin"], "dst": ["*:*"] }, { "action": "accept", "src": ["autogroup:member"], "dst": ["tag:servidor:22,443"] } ] } ``` Guarda la política y asigna la etiqueta al servidor. Las etiquetas se cambian con `tailscale up`, que exige repetir todas las opciones que ya no están en su valor por defecto, en este caso las rutas y el exit node de los pasos anteriores: ```bash sudo tailscale up --advertise-tags=tag:servidor --advertise-routes=10.10.0.0/24 --advertise-exit-node ``` Si olvidas alguna opción, el comando no aplica nada y muestra la línea completa que debes ejecutar. Un dispositivo etiquetado pasa a pertenecer a la tailnet en lugar de a tu usuario y su clave no caduca. Verifica que la etiqueta aparece junto al servidor en **Machines**. ## Paso 6: Activar Tailscale SSH Tailscale SSH autentica las conexiones SSH con la identidad de Tailscale, sin gestionar claves en cada servidor. Actívalo en el servidor: ```bash sudo tailscale set --ssh ``` Añade a la política de acceso una sección `ssh` que permita a los administradores entrar en los servidores etiquetados como usuarios sin privilegios o como root: ```json { "ssh": [ { "action": "accept", "src": ["autogroup:admin"], "dst": ["tag:servidor"], "users": ["autogroup:nonroot", "root"] } ] } ``` Esta sección va dentro del mismo objeto JSON que `tagOwners` y `acls`. Desde otro dispositivo de la tailnet, conéctate con el nombre del servidor: ```bash ssh your_user@vps-madrid ``` Tailscale SSH solo intercepta las conexiones que llegan por la interfaz de Tailscale. El SSH normal por la IP pública sigue funcionando igual. ## Paso 7: Cerrar SSH público con UFW (opcional) Si todo tu acceso va a ir por Tailscale, puedes permitir SSH solo por la interfaz `tailscale0`. Hazlo con una sesión ya abierta a través de Tailscale para no quedarte fuera: ```bash sudo ufw allow in on tailscale0 sudo ufw delete allow OpenSSH sudo ufw enable sudo ufw status ``` ```output Status: active To Action From -- ------ ---- Anywhere on tailscale0 ALLOW Anywhere Anywhere (v6) on tailscale0 ALLOW Anywhere (v6) ``` > Advertencia: si Tailscale falla, no podrás entrar por SSH. Asegúrate de tener un acceso alternativo, como la consola VNC del panel de CubePath. ## Solución de problemas **El servidor aparece desconectado.** Revisa el servicio y sus logs: ```bash sudo systemctl status tailscaled sudo journalctl -u tailscaled -n 50 ``` **La conexión siempre pasa por DERP.** Ejecuta un diagnóstico de red. Si `UDP: false`, algo bloquea el UDP saliente; permitir la entrada del puerto `41641/udp` en el firewall del servidor facilita las conexiones directas: ```bash tailscale netcheck ``` **Los clientes no llegan a la subred.** Comprueba que la ruta está aprobada en la consola, que `sysctl net.ipv4.ip_forward` devuelve `1` en el servidor y que el cliente Linux tiene `--accept-routes`. ## Conclusión Tu servidor Ubuntu 24.04 forma parte de una tailnet, publica una subred privada, puede actuar como exit node y solo acepta el acceso que define tu política. Como siguientes pasos, puedes activar MagicDNS en **DNS** para resolver los equipos por nombre en todos los clientes, usar grupos en la política para separar equipos de desarrollo y operaciones, o repetir la instalación con una clave etiquetada en tus demás servidores.