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.
Accede a los materiales de los cursos que he impartido.
Accede a los contenido de los módulos de FP que estoy impartiendo en la actualidad.
Microblog
Historia de Linux
Habilitar IP Forwarding en Debian 13
En Debian 13 (Trixie) el IP forwarding ya no se configura en /etc/sysctl.conf, sino en un archivo bajo /etc/sysctl.d/.
-
Crea
/etc/sysctl.d/99-forward.confcon:net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 -
Aplica y reinicia servicios:
sudo sysctl --system sudo systemctl restart systemd-sysctl
Con esto el reenvío queda habilitado de forma persistente.
DetallePublicado Debian 13 Trixie
Hoy, 9 de agosto, se ha publicado la última versión de mi distribución favorita: Debian 13 Trixie. Habrá que pensar en ir actualizando. Os dejo las Notas de publicación.

Blog
Construcción de VPN mesh con tailscale/headscale

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:
- Mantener la soberanía total sobre tus metadatos y la gestión de la red.
- Utilizar los clientes oficiales de Tailscale simplemente apuntándolos a tu propia instancia.
- 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...Cursos de virtualziación con KVM/libvirt

Este año también he tenido la oportunidad de desarrollar y publicar en OpenWebinars dos cursos centrados en la virtualización con KVM y libvirt, abordando tanto una introducción accesible para principiantes como una profundización orientada a un uso más avanzado y profesional.
Ambos cursos forman parte de un itinerario pensado para entender la virtualización en sistemas Linux desde una perspectiva práctica, progresiva y alineada con el uso real en servidores y entornos de producción.
¿Qué es la virtualización con KVM y libvirt?
KVM (Kernel-based Virtual Machine) es la tecnología de virtualización integrada en el kernel de Linux que permite convertirlo en un hipervisor de tipo 1. Gracias a KVM, un sistema Linux puede ejecutar máquinas virtuales con un rendimiento muy cercano al nativo, aprovechando las extensiones de virtualización por hardware (Intel VT-x / AMD-V).
Por su parte, libvirt es una capa de abstracción que facilita la gestión de máquinas virtuales y otros recursos de virtualización. Proporciona una API unificada y herramientas tanto gráficas como de línea de comandos para administrar hipervisores como KVM de forma coherente y segura.
En conjunto, KVM + libvirt constituyen una de las soluciones de virtualización más utilizadas en entornos Linux, tanto en laboratorios como en infraestructuras profesionales.
Cursos publicados
Para cubrir distintos niveles de experiencia, he preparado dos cursos complementarios, publicados en OpenWebinars y acompañados de material práctico en GitHub.
Curso 1: Introducción a la virtualización con KVM/libvirt usando virt-manager
- Repositorio del curso: https://github.com/josedom24/curso_kvm_ow/blob/main/curso1
Este primer curso está orientado a principiantes que desean iniciarse en la virtualización sobre Linux sin necesidad de conocimientos previos avanzados.
Características principales del curso:
- Introducción a los conceptos básicos de virtualización
- Instalación y configuración de KVM y libvirt
- Uso de virt-manager como herramienta gráfica
- Creación y gestión básica de máquinas virtuales
- Redes y almacenamiento a nivel introductorio
Es un curso ideal para romper la barrera de entrada y comenzar a trabajar con máquinas virtuales de forma visual e intuitiva.
Curso 2: Profundización en la virtualización con KVM/libvirt
- Repositorio del curso: https://github.com/josedom24/curso_kvm_ow/blob/main/curso2
El segundo curso está pensado para quienes ya conocen los fundamentos y desean profundizar en la virtualización usando herramientas de línea de comandos.
En este curso se trabaja, entre otros aspectos:
- Gestión avanzada de máquinas virtuales con
virsh - Definición y modificación de dominios mediante XML
- Redes virtuales avanzadas
- Gestión de almacenamiento con libvirt
- Automatización y administración más cercana a entornos de servidor
Este enfoque resulta especialmente útil para administradores de sistemas, laboratorios avanzados o escenarios donde no se dispone de entorno gráfico.
Seguir leyendo...Cursos de preparación para obtener las certificaciones Python PCEP y PCAP

Este año he tenido la oportunidad de preparar y publicar dos cursos orientados a la obtención de certificaciones oficiales de Python, pensados tanto para personas que se inician en el lenguaje como para quienes desean consolidar sus conocimientos y dar un paso más en su formación.
Siguiendo la misma filosofía que en otros cursos que he desarrollado, el objetivo principal ha sido ofrecer un itinerario claro, progresivo y muy práctico, alineado con los contenidos oficiales de los exámenes y acompañado de abundantes ejemplos y ejercicios.
Certificaciones PCEP y PCAP
Las certificaciones PCEP y PCAP forman parte del itinerario oficial de certificación en Python y están ampliamente reconocidas como una forma sólida de validar conocimientos en este lenguaje.
PCEP – Certified Entry-Level Python Programmer
La certificación PCEP está orientada a personas que comienzan a programar en Python. Evalúa los fundamentos del lenguaje, tales como:
- Sintaxis básica y semántica
- Tipos de datos fundamentales
- Variables y operadores
- Control de flujo (
if, bucles) - Funciones básicas
- Manejo elemental de errores
Es una excelente puerta de entrada para quien quiere demostrar que domina los conceptos esenciales de Python y que está preparado para seguir avanzando.
PCAP – Certified Associate Python Programmer
La certificación PCAP da un paso más y está dirigida a programadores con cierta experiencia previa en Python. En este nivel se profundiza en aspectos como:
- Programación estructurada y modular
- Colecciones y estructuras de datos avanzadas
- Manejo de excepciones
- Programación orientada a objetos
- Uso más avanzado de funciones y módulos
- Buenas prácticas en Python
Superar esta certificación demuestra una comprensión sólida y práctica del lenguaje, adecuada para entornos profesionales o académicos más exigentes.
Cursos publicados
Para cubrir ambos niveles he desarrollado dos cursos completos de preparación, con contenidos teóricos, ejemplos explicados paso a paso y ejercicios específicos orientados al examen.
Curso de preparación para el examen PCEP
- Repositorio del curso: https://github.com/josedom24/python_pcep_pcap/tree/main/PCEP
- Repositorio de ejercicios: https://github.com/josedom24/ejercicios_python_pcep
- Curso en OpenWebinars: https://openwebinars.net/cursos/certificacion-python-pcep/
Este curso está pensado para quienes se inician en Python y quieren una preparación guiada, clara y práctica para afrontar el examen PCEP con garantías.
Curso de preparación para el examen PCAP
- Repositorio del curso: https://github.com/josedom24/python_pcep_pcap/tree/main/PCAP
- Repositorio de ejercicios: https://github.com/josedom24/ejercicios_python_pcap
- Curso en OpenWebinars: https://openwebinars.net/cursos/certificacion-python-pcap/
En este segundo curso se profundiza en Python, con un enfoque más cercano al uso real del lenguaje y a los requisitos del examen PCAP.
Seguir leyendo...Más posts en el Blog...
- Contenedores Docker para la creación de páginas web estáticas usando Jekyll (01-10-2025)
- Creación de un box para vagrant (20-09-2025)
- El problema del enrutamiento asimétrico (11-06-2025)
- Despliegue automatizado de máquinas virtuales en KVM/libvirt usando cloud-init (21-05-2025)
- Docker Routing: Práctica routing y nating con docker (07-05-2025)
- Configuración de red en sistemas Linux - Netplan (03-04-2025)
Más post en el Microblog...
- Mi última camiseta... (01-06-2025)
- Me ha encantado... muchas gracias (25-05-2025)
- Eloquente JavaScript (09-03-2025)
- Correos de notificación de Lets Encrypt (04-02-2025)
- Listar imágenes Docker que no tienen contenedor asociado (29-01-2025)
- Hoja de trucos sobre Git (15-01-2025)
Licencia
Licencia: Puedes copiar y modificar todos los contenidos, pero siempre respetando los términos de la licencia CC-BY-SA.
