Actividad 6: Puentes y contenedores

per Victor Carceler darrera modificació 2020-03-25T16:26:13+02:00

En esta actividad se va a demostrar el uso de un dispositivo puente, utilizando contenedores LXC/LXD para recrear máquinas que se comunicarán mediante dicho puente. Por ello conviene tener instalado y configurado LXD.

  1. Comenzaremos lanzando un contenedor para observar los detalles de la configuración de red. En este casso vamos a lanzar un contenedor con Ubuntu 16.04LTS que tendrá por nombre h1.
    vcarceler@mir:~$ lxc launch ubuntu:16.04 h1
  2. Una vez lanzado, conviene fijarse en:
  • En el contenedor h1: La interfaz de red que ve el contenedor.
  • En el equipo anfitrión: La interfaz de red que en el equipo anfitrión representa la interfaz del contenedor y el puente del que forma parte.
  • Tome nota del nombre de las interfaces de red, del puente, y de las direcciones de red utilizadas. Compruebe que el contenedor puede acceder a la LAN del aula. Pasos:
    1. En el equipo anfitrión: Utilice el comando ifconfig para listar las interfaces de red, indique para cada una de ellas si se trata de una interfaz física, virtual o de un puente. Si la interfaz tiene dirección IP tome nota.
    2. En el equipo anfitrión: Utilice el comando brctl show para listar los puentes que están definidos.
    3. En el contenedor h1: Utilice el comando ifconfig para determinar la interfaz de red y su IP.
    4. En el contenedor h1: Utilice el comando ping para comprobar que puede comunicarse con la dirección 192.168.<AULA>.10
  • Lance un nuevo contenedor con el nombre h2. Compruebe que en el ordenador anfitrión ha aparecido una nueva interfaz de red que forma parte del mismo puente que h1.
  • Utilice el comando ping para comprobar que los contenedores h1 y h2 se pueden comunicar. Deje el ping en funcionamiento y, utilizando el comando ifconfig, observe en el anfitrión cómo aumentan los contadores de tráfico de las interfaces veth* que representan a los contenedores.
  • En el ordenador anfitrión. ¿Cómo puede utilizar tcpdump para ver la comunicación entre ambos contenedores? ¿Es posible utilizar tcpdump en las interfaces veth*? ¿Y en el puente del que forman parte?
  • Anfitrión: Utilice el comando brctl para definir el puente puente1. Quite la interfaz veth correspondiente a h1 del puente del que forma parte y añádala a puente1. ¿Qué ha sucedido con el ping entre ambas máquinas?
  • Anfitrión: Repita el paso anterior con la intefaz veth correspondiente a h2. No olvide que debe levantar puente1 utilizando el comando ifconfig puente1 up. ¿Qué ha sucedido con el ping entre ambas máquinas?
  • Inicialmente tanto h1 como h2 podían hacer ping al proxy del aula (192.168.<AULA>.10). ¿Ahora pueden hacer ping? ¿A qué se debe?
  • Anfitrion: Ejecute el comando iptables como se muestra a continuación. ¿Cómo interpreta la salida? ¿Qué indican las líneas MASQUERADE?
    root@mir:~# iptables -t nat -L
    Chain PREROUTING (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain POSTROUTING (policy ACCEPT)
    target     prot opt source               destination         
    RETURN     all  --  192.168.122.0/24     base-address.mcast.net/24 
    RETURN     all  --  192.168.122.0/24     255.255.255.255     
    MASQUERADE  tcp  --  192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
    MASQUERADE  udp  --  192.168.122.0/24    !192.168.122.0/24     masq ports: 1024-65535
    MASQUERADE  all  --  192.168.122.0/24    !192.168.122.0/24    
    MASQUERADE all -- 10.0.3.0/24 !10.0.3.0/24         
    root@mir:~#
  • Anfitrión: Ejecute los siguientes comandos y observe si h1 y h2 pueden hacer pings al proxy del aula. ¿Qué función tienen estos comandos?
    root@mir:~# ifconfig lxcbr0 down
    root@mir:~# ifconfig puente1 10.0.3.1 up