Network Namespace
Información Básica
Un espacio de red es una característica del kernel de Linux que proporciona aislamiento de la pila de red, permitiendo que cada espacio de red tenga su propia configuración de red independiente, interfaces, direcciones IP, tablas de enrutamiento y reglas de firewall. Este aislamiento es útil en varios escenarios, como la contenerización, donde cada contenedor debe tener su propia configuración de red, independiente de otros contenedores y del sistema host.
Cómo funciona:
Cuando se crea un nuevo espacio de red, comienza con una pila de red completamente aislada, sin interfaces de red excepto la interfaz loopback (lo). Esto significa que los procesos que se ejecutan en el nuevo espacio de red no pueden comunicarse con procesos en otros espacios de nombres o en el sistema host de forma predeterminada.
Se pueden crear interfaces de red virtuales, como pares veth, y moverlas entre espacios de red. Esto permite establecer conectividad de red entre espacios de nombres o entre un espacio de nombres y el sistema host. Por ejemplo, un extremo de un par veth puede colocarse en el espacio de red de un contenedor, y el otro extremo puede conectarse a un puente u otra interfaz de red en el espacio de nombres del host, proporcionando conectividad de red al contenedor.
Las interfaces de red dentro de un espacio de nombres pueden tener sus propias direcciones IP, tablas de enrutamiento y reglas de firewall, independientes de otros espacios de nombres. Esto permite que los procesos en diferentes espacios de red tengan diferentes configuraciones de red y operen como si estuvieran en sistemas de red separados.
Los procesos pueden moverse entre espacios de nombres utilizando la llamada al sistema
setns()
, o crear nuevos espacios de nombres utilizando las llamadas al sistemaunshare()
oclone()
con la banderaCLONE_NEWNET
. Cuando un proceso se mueve a un nuevo espacio de nombres o crea uno, comenzará a utilizar la configuración de red e interfaces asociadas con ese espacio de nombres.
Laboratorio:
Crear diferentes Espacios de Nombres
CLI
Al montar una nueva instancia del sistema de archivos /proc
si se utiliza el parámetro --mount-proc
, se asegura de que el nuevo espacio de nombres de montaje tenga una vista precisa y aislada de la información de procesos específica de ese espacio de nombres.
Docker
Verificar en qué espacio de nombres está su proceso
Encontrar todos los espacios de nombres de red
Entrar dentro de un espacio de nombres de red
También, solo puedes entrar en otro espacio de nombres de proceso si eres root. Y no puedes entrar en otro espacio de nombres sin un descriptor que apunte a él (como /proc/self/ns/net
).
Referencias
Última actualización