Atribuindo IPs a contêineres do OpenVZ

3

Eu comprei recentemente um servidor físico e estou tentando criar contêineres que teriam seus IPs.

A máquina física possui endereços IPv4 e IPv6. Tenho acesso a outro IPv4 e alguns outros endereços IPv6 que gostaria de atribuir ao contêiner. Consegui atribuir os endereços da seguinte forma:

# vzctl set 101 --ipadd 144.76.195.252 --save

Eu posso pingar para a máquina a partir da máquina física, mas não do mundo exterior. Isso também se aplica ao IPv6 que eu designei também.

Este é o ifconfig da máquina física:

eth0      Link encap:Ethernet  HWaddr d4:3d:7e:ec:e0:04
          inet addr:144.76.195.232  Bcast:144.76.195.255  Mask:255.255.255.224
          inet6 addr: 2a01:4f8:200:71e7::2/64 Scope:Global
          inet6 addr: fe80::d63d:7eff:feec:e004/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:217895 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16779 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:322481419 (307.5 MiB)  TX bytes:1672628 (1.5 MiB)

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet6 addr: fe80::1/128 Scope:Link
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:3 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1108 (1.0 KiB)  TX bytes:1108 (1.0 KiB)

Este é o ifconfig do contêiner OpenVZ:

# ifconfig

venet0    Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:127.0.0.2  P-t-P:127.0.0.2  Bcast:0.0.0.0  Mask:255.255.255.255
          inet6 addr: 2a01:4f8:200:71e7::3/64 Scope:Global
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:1108 (1.0 KiB)  TX bytes:1108 (1.0 KiB)

venet0:0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:144.76.195.252  P-t-P:144.76.195.252  Bcast:144.76.195.252  Mask:255.255.255.255
          UP BROADCAST POINTOPOINT RUNNING NOARP  MTU:1500  Metric:1

O que preciso fazer para ter o contêiner acessível do mundo externo? O que eu poderia ter esquecido?

Obrigado.

    
por Vojtěch 04.11.2013 / 13:35

1 resposta

4

A decisão sobre roteamento ou ponte é mais funcional do que técnica; Há prós e contras e é uma escolha. Eu prefiro o roteamento se eu tiver apenas uma interface, pois dessa forma eu tenho um único ponto de controle (o HN) e nele, eu posso colocar alguns iptables ou proteção extra para o container que não são acessíveis por padrão pela Internet. Se você preferir o roteamento, você precisa ter certeza do valor de net.ipv4.conf.all.forwarding = 1 (execute o comando sysctl -a | grep forward). Se não, echo 1 > / proc / sys / net / ipv4 / ip_forward; (mas não sobreviverá a uma reinicialização) ou adicione a linha

net.ipv4.conf.all.forwarding = 1

em /etc/sysctl.conf e execute sysctl -P depois. Normalmente, uma rota em vez de bridging porque permite NAT, o que ajuda quando falta de endereços IP4, mas este não é o seu caso, você tem pelo menos dois deles.

Por outro lado, o bridging coloca seu HN e seu VPS igual a igual. Você pode fazer isso diretamente na Internet porque parece ter endereços IP suficientes. Você pode precisar de proteção extra em cada contêiner (iptables em cada contêiner e no host, por exemplo).

Para voltar ao seu problema (de roteamento), se configurar ip_forward como 1 não ajuda; tente arp -an (veja se resolve neste momento) de HN e VPS e tcpdump para obter mais detalhes, quando os pacotes são perdidos? na camada 2 ou 3?

Sobre o IPv6, eu realmente não sei: /

    
por 04.11.2013 / 22:17