Estou tentando configurar vários contêineres LXC em um host, cada um com seus próprios IPs estáticos públicos.
Meu host está executando o Ubuntu mais recente. Ele tem uma única interface de rede chamada eth0. Os IPs estáticos são pingáveis da Internet e são nomeados eth0: 210, eth0: 211 ... Os números após os dois pontos são o byte menos significativo dos endereços. Além dessas interfaces, tenho a configuração br0 no IP público do host. Existem também as interfaces lo, veth2LPP9A e lxcbr0. O lxcbr0 tem o endereço de um IP privado.
O host / etc / network / interfaces se parece com:
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
[...]
Até agora, eu usei várias fontes online, incluindo Bridging LXC containers para hospedar eth0, para que eles possam ter um IP público para me ajudar a configurar isso.
O arquivo de configuração do contêiner possui:
lxc.network.type = veth
lxc.network.link = br0
Eu removi a configuração estática do lxc.network.ipv4 deste arquivo, pois causava problemas. Quando executei lxc-ls --fancy com essa configuração, veria o mesmo IP público duas vezes na saída. Além disso, interferiria na configuração de sub-rede das interfaces / etc / network / do contêiner.
Falando no arquivo de interfaces do contêiner, ele se parece um pouco com:
auto eth0
iface eth0 inet static
address [...]
netmask 255.255.255.255
#gateway [...]
dns-nameservers 8.8.8.8
post-up route add [...] dev eth0
post-up route add default gw [...]
post-down route del [...] dev eth0
post-down route del default gw [...]
Eu tive que comentar o gateway e adicionar os comandos route add neste arquivo. Caso contrário, o contêiner levaria alguns minutos para inicializar.
Os arquivos / proc / sys / net / bridge / bridge-nf- * no host estão todos definidos como 0. O valor / proc / sys / net / ipv4 / ip_forward é 1.
O problema é que, embora a "rota-n" do contêiner pareça como deveria, não consigo executar ping no contêiner. SSHing para o que deveria ser o IP do contêiner, me conecta ao host.
EDIT: Remover o IP estático do contêiner do host ajudou, mas agora estou recebendo um novo erro. Tentar executar ping no contêiner do host resulta em Redirect HostFrom, New nexthop. Os pacotes estão apenas indo do gateway para o host, repetidamente. A execução de um traceroute a partir do host mostra que a primeira parada está no gateway. Todas as outras rotas são * * *. Eu recebo o mesmo problema, independentemente de o contêiner estar online ou não.
fonte
Desde que você está bridging, você precisa definir os endereços IP no recipiente única , e não no host. O host deve ter apenas seu próprio endereço IP.
fonte
Eu fiz isso outro dia com o Ubuntu 14.04. É simples Você só precisa editar o
/etc/network/interfaces
arquivo dentro do seu contêiner e definir isso:Substitua todas as variáveis pelo valor desejado.
Você não precisa fazer mais nada!
PS: Observe o espaço antes de algumas linhas. É obrigatório.
fonte
A melhor maneira de encontrar e o mais rápido é usar os perfis lxc
lxc profile list
- comande a lista de todos os perfis que você temlxc profile copy default minecraft
(este é o nome do seu novo perfil)Então
lxc profile edit minecraft
Isso vai aparecer
então salve
Em seguida, atribua o perfil ao seu contêiner LXC como este
basta reiniciar o contêiner e seu novo endereço IP é definido para esse contêiner
fonte
Eu poderia configurar corretamente meus contêineres lxc depois de seguir a resposta da @Enrique Moreno Tent, então explicarei o que fazer com mais detalhes, caso você não saiba como configurar os outros itens.
1. Acesse seu contêiner LXC via
lxc-attach
comandoComando:
$ lxc-attach -n YOUR-CONTAINER-NAME
2. Veja suas configurações atuais com
ifconfig
Comando
`` ``
3. Obtendo endereço, máscara de rede e gateway
Vendo o resultado do
ifconfig
comando acima, vemos então:Endereço é o endereço que você deseja, você pode alterá-lo para 10.0.3.166.
A máscara de rede está lá: 255.255.255.0
Gateway : para o gateway em que você usa o endereço de broadcast, aqui é 10.0.3.255
Como você pode ver acima, atualmente você tem todas as informações necessárias para preencher seu convidado (contêiner)
/etc/network/interfaces
.4. Obtendo
dns-nameservers
valor.Emita o comando:
cat /etc/resolv.conf
Mas talvez seja melhor usar o Google DNS, que asre
8.8.8.8
e8.8.4.4
5. Edição
/etc/network/interfaces
DENTRO DO RECIPIENTEauto eth0 iface eth0 inet static address 10.0.3.166 netmask 255.255.255.0 gateway 10.0.3.255 dns-nameservers 8.8.8.8
fonte
ifconfig
foi substituído pelasip a
versões mais recentes do debian / ubuntu linuxconfig.org/…