Linux

Introducción a los Namespaces en Linux

Los Namespaces de Linux es una característica del kernel de linux que nos permiten aislar procesos del sistema principal. Los Namespaces son un aspecto fundamental de los contenedores (dockers) . El conocimiento de el funcionamiento de los Namespaces nos va a permitir conocer el funcionamiento interno de los dockers. Existen varios Namespaces(Process,Network,IPC,etc ) y algunos mas que se iran añadiendo al kernel. Aquí vamos a ver una introducción al Network Namespace. Cada namespace va a tener :

      • Tabla de enrutamiento
  • Tabla ARP
  • Dispositivos
  • Iptables
Para añadir un namespace de red ejecutamos:     Este ns prueba va a terner su propio stack de red. Podemos verlo accediendo al ns:

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00[/su_note]

Vamos a ver un ejemplo de configuración creando un interface ethernet vitual. Los veth siempre van en pares . Seria como las dos terminaciones de un cable de red. Creamos un par veth:

25: veth-2@veth-1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 7e:b8:84:78:13:5c brd ff:ff:ff:ff:ff:ff 26: veth-1@veth-2: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN group default qlen 1000 link/ether 76:97:9b:0b:02:5a brd ff:ff:ff:ff:ff:ff[/su_note]

Movemos el veth-2 al ns prueba:   Configuramos la ip en ambos veth   El anterior ejemplo es una simple prueba de conexión del global namespace a un namespace creado por nosotros. Ahora vamos a ver una ejemplo de conexión entre Namespaces.   Vamos a crear 3 NS y conectarlos entre ellos.

gateway cliente servidor

En el NS gateway tenemos que activar le forward de paquetes: Añadimos los interfaces virtuales:

ip netns exec gateway ip link show 1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 12: svrgw-veth@if13: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 32:37:51:0b:e5:50 brd ff:ff:ff:ff:ff:ff link-netnsid 0 14: cligw-veth@if15: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether e2:9a:3a:df:28:48 brd ff:ff:ff:ff:ff:ff link-netnsid 2

 

ip netns exec cliente ip link show 1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 15: cli-veth@if14: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether 76:e5:4a:65:b8:3c brd ff:ff:ff:ff:ff:ff link-netnsid 0

ip netns exec servidor ip link show 1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 13: svr-veth@if12: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether f2:fa:c4:09:42:8b brd ff:ff:ff:ff:ff:ff link-netnsid 1[/su_note]

Añadimos las IP’s de los interfaces virtuales Creamos las rutas

Author


Avatar