Saltar a contenido

Tailscale: instalaci贸n y configuraci贸n b谩sica

Tailscale crea una red mesh segura basada en WireGuard y autenticaci贸n SSO.

Requisitos

  • Debian/Ubuntu o equivalente con curl y sudo
  • Acceso a https://login.tailscale.com

Instalaci贸n r谩pida

curl -fsSL https://tailscale.com/install.sh | sh

Verifica servicio y versi贸n:

tailscale version
sudo systemctl status tailscaled

Autenticaci贸n y alta del nodo

sudo tailscale up
  • Abre el enlace que aparece y autent铆cate
  • En admin.tailscale.com autoriza el dispositivo si es necesario

Comandos 煤tiles

# Estado y IPs
tailscale status
ip -4 addr show tailscale0

# Habilitar al arranque
sudo systemctl enable --now tailscaled

# Salir/Desconectar
sudo tailscale down

Hardening y opciones 煤tiles

  • ACLs (panel): define qui茅n puede hablar con qui茅n. Ejemplo m铆nimo (permitir a grupo admins todo):
{
  "acls": [
    {"action": "accept", "src": ["group:admins"], "dst": ["*"]}
  ]
}
  • DNS: habilita MagicDNS y define dominios de b煤squeda; para fuerza DNS corporativo:
sudo tailscale up --accept-dns=true
  • Subnet router (acceso a una LAN):

sudo tailscale up --advertise-routes=192.168.10.0/24
Autoriza la ruta en el panel.

Override de systemd (asegurar red arriba)

sudo systemctl edit tailscaled
Contenido:

[Unit]
After=network-online.target
Wants=network-online.target

Aplica y reinicia:

sudo systemctl daemon-reload
sudo systemctl restart tailscaled

Notas

  • Evita conflictos con otras VPN WireGuard
  • Revisa ACLs en el panel para controlar accesos

Ejemplos con contenedores (Docker)

Conectar tus contenedores a la VPN

  • Opci贸n 1 (userspace subnet router): expone puertos del contenedor Tailscale y usa --advertise-exit-node/--advertise-routes seg煤n necesidad.
  • Opci贸n 2 (namespace compartido/sidecar):
docker run -d --name tailscale \
  --cap-add NET_ADMIN --device /dev/net/tun \
  -v tailscale_state:/var/lib/tailscale \
  --network container:miapp \
  tailscale:latest
  • Opci贸n 3 (host networking): ejecutar Tailscale en el host o contenedor con --network host y el resto usa la red del host.