Laboratorios prácticos para entender cómo funciona el networking en Linux desde los fundamentos: network namespaces, veth pairs, bridges, routing, y VXLAN overlay networks.
Estos labs te enseñan exactamente cómo funcionan las tecnologías que usan Docker, Kubernetes y las infraestructuras cloud modernas.
Construir una comprensión profunda del networking en Linux, no solo superficial. Cada lab te fuerza a:
- Configurar manualmente lo que herramientas como Docker hacen automáticamente
- Debuggear problemas reales con tcpdump, ip route, y otras herramientas de bajo nivel
- Entender el "por qué" detrás de cada decisión de diseño
Concepto: Aislamiento de red con network namespaces
- Crear dos namespaces aislados
- Conectarlos con un veth pair (cable virtual)
- Entender ARP y Layer 2 forwarding
Lo que aprendés:
- Cómo Docker y Kubernetes aíslan la red de cada contenedor
- Qué son los veth pairs y cómo funcionan
- Cómo el kernel resuelve direcciones MAC con ARP
Concepto: Switch virtual conectando múltiples namespaces
- Crear un bridge (switch virtual)
- Conectar 3 namespaces al bridge
- Observar MAC learning y broadcast
Lo que aprendés:
- Cómo funcionan los bridges de Linux (el
docker0que ves en Docker) - MAC learning y forwarding database (FDB)
- La diferencia entre un hub, un switch y un bridge
Concepto: Routing entre subnets diferentes (Layer 3)
- Crear un router que conecta dos subnets (10.0.1.0/24 y 10.0.3.0/24)
- Habilitar IP forwarding
- Observar cómo el TTL se decrementa
Lo que aprendés:
- La diferencia entre bridging (Layer 2) y routing (Layer 3)
- Por qué necesitás default gateways
- Cómo funciona el IP forwarding en el kernel
- Qué es el TTL y por qué se decrementa
Concepto: Extender una LAN sobre múltiples hosts (Layer 2 sobre Layer 3)
- Crear túneles VXLAN entre "hosts" simulados
- Configurar MTU correctamente (overhead de 50 bytes)
- Todos los pods en la misma subnet (10.10.0.0/24)
Lo que aprendés:
- Cómo funcionan las redes overlay (Flannel, Calico, Docker Swarm)
- Por qué el MTU importa en túneles
- Encapsulamiento UDP (ver paquetes dentro de paquetes)
- La diferencia entre underlay (red física) y overlay (red virtual)
- Por qué VXLAN es Layer 2, no Layer 3
Este es el lab más importante - es exactamente cómo funciona Kubernetes networking.
- Linux (Ubuntu 20.04+, Debian, Fedora, Arch)
- Permisos de root (
sudo) - Herramientas básicas (ya vienen instaladas en la mayoría de distros):
ip(iproute2)tcpdumpbridgesysctl
NO necesitás Docker ni Kubernetes - estos labs te enseñan los fundamentos que estas herramientas usan por debajo.
# Clonar el repo
git clone https://github.com/lbcristaldo/linux-network-labs.git
cd linux-network-labs
# Ir a cualquier lab
cd labs/05-vxlan-overlay
# Ejecutar setup
sudo ./setup.sh
# Probar
sudo ip netns exec ns-pod-a1 ping 10.10.0.21
# Limpiar
sudo ./cleanup.shCada lab tiene su propio README con:
- Explicación conceptual detallada
- Diagramas (Mermaid)
- Paso a paso manual
- Experimentos de debugging
- Preguntas de comprensión
- Troubleshooting
Lab 01 → Lab 02 → Lab 03 → Lab 05
↓ ↓ ↓ ↓
veth bridge router VXLAN
pairs L3 overlay
Cada lab construye sobre conceptos del anterior, pero si ya tenés experiencia podés saltar al que te interese.
Al completar estos labs, vas a poder:
- Crear y configurar network namespaces manualmente
- Debuggear problemas de conectividad con tcpdump, ip route, ip neigh
- Explicar cómo Docker y Kubernetes implementan networking
- Entender el flujo completo de un paquete desde una aplicación hasta el wire
- Distinguir entre Layer 2 (bridging) y Layer 3 (routing)
- Configurar redes overlay con VXLAN
- Comprender el overhead de encapsulamiento y su impacto en MTU
Más importante: Vas a desarrollar el modelo mental correcto para razonar sobre problemas de red. En vez de googlear ciegamente, vas a poder formular hipótesis y verificarlas sistemáticamente.
Estos labs NO usan abstracciones de alto nivel. Todo se hace con comandos básicos del kernel (ip, bridge, sysctl).
Por qué:
- Las abstracciones ocultan complejidad
- Cuando algo falla en producción, necesitás entender lo que pasa debajo
- Las herramientas cambian (Docker, Kubernetes, CNI plugins), pero los fundamentos del kernel permanecen
Ejemplo: En vez de hacer docker network create, ejecutás 15 comandos ip link add, ip netns add, bridge fdb append, etc. Es más trabajo, pero entendés qué está pasando.
Si encontrás errores, tenés sugerencias, o querés agregar más labs, las contribuciones son bienvenidas. Abrí un issue o enviá un pull request.
- Lab 04: NAT con iptables (permitir que pods accedan a Internet)
- Lab 06: eBPF para observability de red
- Lab 07: Cilium CNI con Network Policies de Layer 7
Estos labs están inspirados en y complementan:
- The Linux Programming Interface - Michael Kerrisk
- Understanding Linux Network Internals - Christian Benvenuti
- Linux Kernel Networking - Documentación oficial
MIT License - Sentite libre de usar este material para aprender, enseñar, o como base para tus propios proyectos.