Bienvenidos a la página personal de José Domingo Muñoz Rodríguez, aquí podrás encontrar…

Accede a las entradas de mi blog donde escribo de Informática y Educación.

Blog Pledin

Accede a los materiales de los cursos que he impartido.

Plataforma Pledin

Accede a los contenido de los módulos de FP que estoy impartiendo en la actualidad.

Módulos FP

Microblog

Nuevo editor Zed

En los últimos días estoy usando un nuevo editor de texto llamado ZED y la experiencia está siendo bastante interesante. ZED es un editor de código construido desde cero en Rust, lo que lo hace increíblemente rápido y ligero. Arranca en milisegundos y no consume apenas memoria, algo que se nota mucho si vienes de editores más pesados.

Algunas de las características que más me están gustando:

  • Alto rendimiento..
  • Colaboración en tiempo real.
  • IA integrada.
  • Minimalista pero potente.
  • Extensiones para aportar más funcionalidades.

Página web

Detalle

Próximo curso de Kubernetes

Quinta edición del curso: Introducción a Kubernetes para profesores de la Junta de Andalucía. Más información

Detalle

NoSubscription.org: Herramientas propias, no alquiladas

NoSubscription.org es un directorio y manifiesto para profesionales que rechazan el modelo de suscripción mensual. Su objetivo es ayudar a freelancers y empresas a recuperar la propiedad de su flujo de trabajo.

  • ¿Para qué sirve?: Para localizar software profesional sin cuotas recurrentes, eliminando costes fijos y el control de las grandes corporaciones SaaS.
  • ¿Qué encontrarás?: Un catálogo verificado de herramientas divididas en:

    • One-time purchase: Pago único con licencia perpetua.
    • Open source: Código abierto y soberanía técnica.
    • Free tools: Alternativas gratuitas de alta calidad.

El Manifiesto: “Creemos que las personas deben ser dueñas de sus herramientas, no alquilarlas. Las suscripciones agotan los recursos de los profesionales.”

Detalle

Blog

Seguridad y control de acceso en una VPN tailscale/headscale: ACLs y Tags

vpn

Hasta ahora, nuestra red mesh ha funcionado bajo una confianza total: cualquier dispositivo que uníamos a nuestra red podía comunicarse con los demás. Sin embargo, en entornos educativos o profesionales, necesitamos aplicar el principio de mínimo privilegio. En este artículo aprenderemos a usar las ACLs y los Tags para crear una red donde los alumnos puedan acceder a los recursos del aula, pero estén aislados entre sí.

Conceptos claves: ACLs y Tags

  • Las ACLs (Listas de Control de Acceso) son un conjunto de reglas en formato JSON (o HuJSON) que definen quién puede hablar con quién. Si no hay una regla que permita la conexión, Headscale la denegará por defecto.
  • Los Tags (etiquetas) nos permiten agrupar dispositivos por su función en lugar de por su nombre o usuario. Por ejemplo, podemos etiquetar un equipo como tag:servidor y otros como tag:alumno. Cuando un dispositivo se registra con un Tag, deja de “pertenecer” al usuario que lo registró y pasa a ser propiedad del sistema, lo que facilita la gestión de permisos globales.

Caso práctico: El Aula Aislada

Para entender los conceptos de seguridad usando ACLs y Tags vamos a ver un ejemplo concreto. en este ejemplo vamos a estudiar dos aproximaciones distintas para tener un conjunto de clientes (en nuestro caso alumnos) que acceden a una red local (en nuestro caso una red de un aula). Los objetivos a cumplir son los siguientes:

  1. Los alumnos se conectan a la VPN.
  2. Existe un Router que anuncia la red local del aula (192.168.100.0/24).
  3. Los alumnos pueden acceder a los equipos de la red local.
  4. Los alumnos NO pueden verse ni hacerse ping entre ellos.

Para conseguir dichos objetivos, vamos a estudiar dos aproximaciones distintas:

  • Estrategia 1: Red Unificada con Control por Etiquetas (Tags)
  • Estrategia 2: Segmentación por Usuarios (Namespaces Aislados)
Seguir leyendo...

Configuración del enrutamiento y DNS en una VPN tailscale/headscale

vpn

En el post anterior, Construcción de VPN mesh con tailscale/headscale, logramos conectar varios dispositivos mediante una VPN mesh.

En este artículo, profundizaremos en tres capacidades críticas que transforman una red privada virtual en una solución de conectividad integral:

  • Subnet Routers: Implementaremos el concepto de VPN Site-to-Site, permitiendo que nodos específicos actúen como gateways para exponer subredes completas (LAN) a la malla, integrando así dispositivos sin capacidad de instalar software (como impresoras, servidores NAS,…).
  • Exit Nodes: Configuraremos nodos de salida para centralizar el tráfico de internet de la red mesh, permitiendo una navegación segura y controlada a través de un punto de confianza (similar a una VPN de acceso remoto tradicional).
  • Split DNS y Global Nameservers: Optimizaremos la resolución de nombres dentro de la red mediante la integración de DNS internos, facilitando el acceso a servicios mediante FQDNs en lugar de direcciones IP estáticas.

Subnet Router

Un Subnet Router es un nodo de nuestra red que actúa como pasarela, permitiendo que el resto de los dispositivos de la VPN “salten” a una red local física (por ejemplo, la red de tu oficina o de tu casa). Cualquier nodo Linux en el que ya tengas Tailscale funcionando puede servir como Subnet Router.

El escenario desde el que partimos es el siguiente:

docker exec headscale headscale nodes list
ID | Hostname | Name    | MachineKey | NodeKey | User | Tags | IP addresses                  | Ephemeral | Last seen           | Expiration          | Connected | Expired
1  |  nodo1   | nodo1   | [qatKd]    | [fMe1N] | vpn1 |      | 100.64.0.1, fd7a:115c:a1e0::1 | false     | 2026-02-13 18:09:45 | N/A                 | online    | no     
2  |  nodo2   | nodo2   | [G1VUT]    | [9wBm+] | vpn1 |      | 100.64.0.2, fd7a:115c:a1e0::2 | false     | 2026-02-13 18:30:17 | 0001-01-01 00:00:00 | online    | no     
3  |  nodo3   | nodo3   | [asFdw]    | [8qDba] | vpn1 |      | 100.64.0.3, fd7a:115c:a1e0::3 | false     | 2026-02-13 18:35:17 | 0001-01-01 00:00:00 | online    | no     
Seguir leyendo...

Construcción de VPN mesh con tailscale/headscale

vpn

Tailscale es una VPN de red en malla (mesh) basada en el protocolo WireGuard. A diferencia de las VPN tradicionales (donde todo el tráfico pasa por un servidor central), en una red mesh los dispositivos establecen conexiones directas punto a punto () entre sí. Para lograr esto, utiliza técnicas de NAT Traversal, permitiendo que los nodos se comuniquen aunque estén detrás de firewalls o routers sin necesidad de abrir puertos manualmente.

La arquitectura de Tailscale se divide en dos capas:

  • Control Plane: Es el “cerebro” de la red. No toca tus datos; su función es autenticar usuarios, intercambiar las llaves públicas de cifrado y distribuir la tabla de rutas a todos los nodos.
  • Data Plane: Es el tráfico real cifrado que fluye directamente entre los dispositivos una vez que el Control Plane los ha “presentado”.

Tailscale opera bajo un modelo Open Core: el software del cliente (lo que instalas en tus dispositivos) es de código abierto, pero el servidor de coordinación (Control Plane) es software propietario alojado en su nube.

Headscale es la alternativa libre y autoalojable (self-hosted) al Control Plane oficial. Es un proyecto de código abierto que implementa las mismas APIs, permitiéndote:

  1. Mantener la soberanía total sobre tus metadatos y la gestión de la red.
  2. Utilizar los clientes oficiales de Tailscale simplemente apuntándolos a tu propia instancia.
  3. Eliminar los límites de usuarios o dispositivos de los planes comerciales.

Instalación de Headscale

Para que Headscale pueda coordinar las conexiones entre todos tus dispositivos, necesitamos alojarlo en una máquina que actúe como punto de encuentro permanente. A diferencia de los nodos de la VPN, que pueden entrar y salir de la red o cambiar de ubicación, el servidor de Headscale debe ser el ancla de la infraestructura.

Características de la máquina

El servidor donde instales Headscale (normalmente un VPS o un servidor dedicado) debe cumplir con tres condiciones fundamentales para garantizar la estabilidad de la red:

  • Accesibilidad Global: La máquina debe tener una IP pública estática o un nombre de dominio (FQDN) asociado. Esto permite que cualquier nodo, esté donde esté, pueda localizar el Control Plane para solicitar instrucciones de conexión.
  • Seguridad mediante HTTPS: Es obligatorio que el tráfico entre los clientes y Headscale viaje cifrado. Necesitarás un certificado SSL (puedes usar Let’s Encrypt) para que la comunicación se realice de forma segura a través del puerto 443.
  • Disponibilidad (Uptime): Si el servidor de Headscale se apaga, los nodos nuevos no podrán unirse y los existentes no podrán actualizar sus tablas de rutas si hay cambios en la red.

Para una configuración básica y funcional, no es necesario complicar el firewall. Según la documentación oficial de requisitos de Headscale, solo necesitas asegurar la apertura de los siguientes puertos:

  • 443/tcp:Tráfico de control (API) y autenticación mediante HTTPS.
  • 80/tcp: Generalmente usado para la validación de certificados (Let’s Encrypt).

Headscale es extremadamente ligero. Para una red pequeña o mediana, una máquina con 1 vCPU y 1 GB de RAM es más que suficiente para gestionar el panel de control.

Seguir leyendo...
cc

Licencia

Licencia: Puedes copiar y modificar todos los contenidos, pero siempre respetando los términos de la licencia CC-BY-SA.

Ver

Mastodon