En la página de Tailscale "Regístrese con su proveedor de identidad", inicie sesión con una cuenta de proveedor de identidad de inicio de sesión único (SSO).
como habilitar acceso remoto a un servidor local (FreeBSD 14.3), que está detrás de un NAT (una red doméstica donde el ISP no permite abrir puertos), sin necesidad de un dominio publico.
Tailscale, un servicio P2P basado en wireguard que implementa NAT traversal para crear una red VPN segura y privada. Permite conectar dispositivos de forma directa (P2P) cuando es posible, o a través de relays (DEP servers) si el NAT es estricto. No expone puertos públicos ni requiere configuraciones complejas en routers. Tailscale es gratuito para uso personal (hasta 3 usuarios y 100 dispositivos).
Tailscale no necesita dominio público porque el acceso se realiza a través de IPs privadas de Tailscale (en el rango 100.64.0.0/10 conocidas como CGNAT) o nombre de host automáticos en tu "tailnet" (red privada de Tailscale).
Instalación, configuración, NAT traversal y acceso a servicios locales. Asumido que tiene acceso root en el servidor FreeBSD 14.3 y que el sistema está actualizado (pkg update && pkg upgrade).
Wireguard es el protocolo subyacente, un VPN moderno, ligero y seguro que usa criptografía de curva elíptica para túneles cifrados.
Nat Travesal. Tailscale utiliza técnicas como STUN (para descubrir IPs públicas y puertos), ICE (para negociar conexiones P2P) y relays DERP (servidores de Tailscale que actúan como intermediariso si el P2P falla debido a NAT simétrico o firewalls estrictos).
Tailnet. Su red privada virtual. Todos los dispositivos autenticados en su cuenta forman parte de ella.
Servicios locales. Para acceder a un servicio en el servidor (por ejemplo web en 80), el cliente se conecta a la IP de Tailscale + puerto, como si estuvieran en la misma LAN.
Dispositivo cliente (PC, teléfono móvil, etc.) desde donde se accederá instalando Tailscale (disponible para Windows, macOS, FreeBSD, iOS, Android, Linux).
Firewall en FreeBSD. Si usa PF (Packet Filter), asegurarse de que permita tráfico saliente (por defecto lo hace). No necesita reglas entrantes especiales para Tailscale, ya que utiliza la interfaz tailscale0.
Instalar Tailscale en el servidor local (FreeBSD 14.3)
pkg install tailscale
Esto instala tailscaled (el demonio) y tailscale (la CLI). Dependencias como Wireguard se instalan automáticamente.
Habilitar el servicio para que inicie al inicio
sysrc tailscaled_enable="YES"
Iniciar el servicio
service tailscaled start
Comprobar el estado
service tailscaled status
Autenticar el servidor en tu tailnet
tailscale up
Esto genera un URL de autenticación (ej. https://login.tailscale.com/a/65831eb3ddff0). Copiar y pegar en un navegador en cualquier dispositivo. Iniciar sesión con su cuenta de Tailscale para aprobar el dispositivo. Una vez aprobado, el comando completará y el servidor se unirá a su tailnet.
tailscale status 100.115.10.68 tormenta nombreusuario@ freebsd
Se muestra el servidor con una IP de Tailscale y estado online
ifconfig tailscale0 para la interfaz VPN.
ifconfig tailscale0 tailscale0: flags=1008043< <UP,BROADCAST,RUNNING,MULTICAST,LOWER_UP> metric 0 mtu 1280 options=4080000< <LINKSTATE,MEXTPG> inet 100.115.10.68 netmask 0xffffffff broadcast 100.115.10.68 inet6 fd7a:115c:a1e0::cd01:687 prefixlen 48 groups: tun nd6 options=101 <PERFORMNUD,NO_DAD> Opened by PID 27732
You are about to connect the device tormenta to the nombreususario@gmail.com tailnet. Public key nodekey:af18fa705771d20c28856057767cafc... Hostname tormenta Operating system freebsd (14.3-RELEASE-p7) Tailscale version 1.94.1 tormenta 100.115.10.68
No es necesario configurar nada extra en su router o firewall.
Exponer Servicios Locales
Por defecto, Tailscale permite acceso a cualquer puerto en la IP de Tailscale del servidor, siempre que el servicio escuche en 0.0.0.0 o la interfaz tailscale0
Ejemplo para un servidor web (por ejemplo, Nginx en el puerto 80) se configura para escuchar en 0.0.0.0:80
Archivo de configuración /usr/local/etc/nginx/nginx.conf
---
server {
listen 8000; #poudriere
server_name localhost;
root /usr/local/share/poudriere/html;
location /data {
alias /usr/local/poudriere/data/logs/bulk;
autoindex on;
}
location /packages {
root /usr/local/poudriere/data;
autoindex on;
}
location / {
index index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
}
# Servidor web principal en el puerto 80
server {
listen 0.0.0.0:80; #nginx
server_name localhost;
root /usr/local/www/nginx;
index index.html index.htm;
# Paginas de error para el servidor principal
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/local/www/nginx-dist;
}
}
}
---
Si se quiere acceder a toda la subred local (otros dispositivos en la red 192.168.88.0/24), se tiene que habilitar subnet routes:
tailscale up --advertise-routes=192.168.88.0/24. Posteriormenta se aprueba en el
admin console.
Seguridad adicional
Usar ACLs (Access Control Lists) en el admin console para restringir accesos (por ejemplo, solo ciertos usuarios pueden acceder al servidor).
Habilitar MagicDNS. En el admin console, ir a DNS > Enable MagicDNS. Para usar nombre como fsb143 en lugar de IPs.
Para headless (sin interacción): Usar pre-auth keys
Acceso desde Internet (lado cliente)
Instalar Tailscale en el dispositivo Ejecutar tailscale up y autenticar con el mismo URL/login utilizado para el servidor
(unirse al mismo tailnet)
Una vez conectado acceder al servidor
Web: abrir http://100.115.10.68:80 (reemplazar con la IP de Tailscale del servidorFreeBSD es genial!.
obtenida de tailscale status). Bienvenido al servidor FreeBSD nginx! Si ve esta pagina, el servidor web nginx se instalo correctamente y funciona
correctamente. Se requiere configuracion adicional. Para obtener documentacion y soporte en linea, consulte nginx.org. Gracias por usar nginx.
