Gerenciando contêineres LXC no EC2

3

Eu tenho uma instância do EC2 em execução dentro de um VPC. Preciso executar um serviço dentro de um contêiner LXC iniciado nessa instância e disponibilizar o serviço para o mundo externo.

Por isso, criei uma ponte ( br0 ) e usei o seguinte arquivo /etc/network/interfaces para obter o endereço IP fornecido pelo EC2 ( 10.0.3.1 ) associado à ponte:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet manual

auto br0
iface br0 inet dhcp
  netmask 255.255.0.0
  bridge_ports eth1
  bridge_stp off
  bridge_maxwait 0
  post-up brctl setfd br0 0

Isso é o que recebo de ifconfig :

br0       Link encap:Ethernet  HWaddr 16:2b:ae:07:29:82  
          inet addr:10.0.3.1  Bcast:10.0.255.255  Mask:255.255.0.0
          inet6 addr: fe80::142b:aeff:fe07:2982/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1026 (1.0 KB)  TX bytes:1238 (1.2 KB)

eth0      Link encap:Ethernet  HWaddr 16:2b:ae:0a:db:b6  
          inet addr:10.0.67.62  Bcast:10.0.255.255  Mask:255.255.0.0
          inet6 addr: fe80::142b:aeff:fe0a:dbb6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:229 errors:0 dropped:0 overruns:0 frame:0
          TX packets:217 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:25889 (25.8 KB)  TX bytes:23330 (23.3 KB)
          Interrupt:27 

eth1      Link encap:Ethernet  HWaddr 16:2b:ae:07:29:82  
          inet6 addr: fe80::142b:aeff:fe07:2982/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:17 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1222 (1.2 KB)  TX bytes:1798 (1.7 KB)
          Interrupt:28 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

O problema aqui é que não consigo acessar o contêiner LXC, que tem o endereço IP 10.0.3.2 :

user@ip-10-0-67-62:~$ ping 10.0.3.2
PING 10.0.3.2 (10.0.3.2) 56(84) bytes of data.
From 10.0.67.62 icmp_seq=1 Destination Host Unreachable
...

Qualquer dica ou sugestão sobre como depurar isso seria muito apreciada.

UPDATE: saída de ip route :

$ ip route
default via 10.0.0.1 dev eth0  metric 100 
10.0.0.0/16 dev eth0  proto kernel  scope link  src 10.0.67.62
10.0.0.0/16 dev br0  proto kernel  scope link  src 10.0.3.1

UPDATE: saída de iptables -nvL :

$ iptables -nvL
Chain INPUT (policy DROP 13 packets, 416 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
 2195  129K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8
88029  130M ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 26680 packets, 1669K bytes)
 pkts bytes target     prot opt in     out     source               destination   
    
por Roberto Aloi 15.03.2013 / 16:07

1 resposta

1

Esta ponte conecta o contêiner lxc com os hosts do servidor, mas não tem saída de rede.

Assim, você pode encaminhar o formulário de tráfego eth0 para br0 com iptables ou túneis.

os ips que você mostra são o host, o sistema convidado tem outro ip que você precisa configurar, O container é outro host, com outra interface de rede conectada a uma rede privada virtual.

internet < ------ > eth0 (host) br0 < --- rede privada virtual > --- < eth0 (container)

    
por 15.03.2013 / 20:35