Como configurar uma ponte de rede em um laptop para uso do LXC?

1

Estou em um laptop usando o libvirt para executar alguns contêineres.

Por padrão, ele usa a rede default fornecida pela libvirt e os contêineres possuem uma rede 192.168.122.0/24.

O que estou tentando realizar é que o contêiner pode estar na mesma rede do meu laptop (ou seja, 192.168.0.1/24).

Isso é o que eu fiz:

#> ip link add type veth        // create a pair of veth
#> iw dev wlan0 set 4addr on    // allow WDS mode on my wifi
#> ifconfig veth0 up            // up veth0 interface
#> brctl addbr br0              // create br0
#> brctl addif br0 wlan0        // insert wlan0 in the bridge
#> brctl addif br0 veth0        // insert veth0 in the bridge
#> ifconfig br0 192.168.0.4/24  // assign the bridge the approriate ip
#> ifconfig wlan0 0.0.0.0       // free wlan0 ip

Quando eu aplico isso, acabo sem Internet no meu laptop; parece que não é possível obter um endereço IP.

OS: Fedora 18
Cartão WiFi: Intel® Centrino® Advanced-N 6235
Driver de Wifi: iwlwifi e modinfo iwlwifi output é aqui .

O que estou perdendo para que wlan0 acabe sem um endereço IP e, portanto, sem conectividade?

    
por Spredzy 07.07.2013 / 01:13

2 respostas

0

Eu não tinha visto essa mensagem originalmente. Existe uma solução para isso.

Primeiro de tudo, deixe-me dizer que eu não desejo usar comandos obsoletos: o pacote iproute2 contém comandos para tudo isso, incluindo a configuração de interfaces virtuais (algo para o qual uma vez tivemos que use openvpn ou tunctl ou uml-utilities) e criando pontes. Se você não sabe como configurar uma ponte com ip , aqui vamos nós:

  ip tuntap add tap0 mode tap user root 

  ip link set tap0 up

  ip link add br0 type bridge

  ip link set tap0 master br0

  ip link set eth0 master br0

  ip addr add 10.173.10.1/24  dev br0

  ip link set br0 up

Com este conjunto de comandos, criamos uma interface virtual chamada tap0 , em seguida, uma ponte chamada br0 e, em seguida, escravizamos eth0 e tap0 para a bridge, para a qual nós atribuímos um endereço IP de 10.173.10.1, e depois trazemos tudo para cima. As três instâncias separadas de trazer as interfaces para cima (para tap0, eth0 e br0) são necessárias.

Quanto ao seu problema. O truque para fazer isso funcionar é usar proxy-arp, que permite que seu pc ( não seu namespace de rede / contêiner VM / Linux) responda a consultas ARP no lugar deles .

Em outras palavras, usando o encaminhamento IPv4 entre sua interface de hardware e sua interface virtual, você acha que pode conectar seu VM / LXC / NNS à sua LAN como se fosse uma interface física, mas isso não é verdade: você está esquecendo o tráfego ARP absolutamente fundamental, que é o que realmente permite que a LAN opere. Portanto, o problema é: se eu encaminhar corretamente o tráfego IPv4, como também posso encaminhar o tráfego ARP para que meu VM / LXC / NNS funcione? O truque é usar proxy-arp.

A resposta completa para isso está no blog de Bohdi Zazen , com o título revelador: Bridge wireless cards . Ele usa um pacote obsoleto, uml-utilities , para criar uma interface virtual por meio do comando tunctl : este é o único comando para o qual ele usa uml- utilitários , para que você possa negligenciar com segurança o download do pacote e usar o comando que escrevi acima para criar uma interface tap ou tun , o que você quiser, modifique o comando de acordo. então crie um par de veth para o seu LXC, e agora crie uma ponte entre tap0 e veth0. Essa ponte, chamada br0, é o que você deve proxy-arp , em vez da simples interface tap0 descrita por Bohdi Zazen.

    
por 27.05.2014 / 17:23
0

Eu escrevi um guia para usar um nat bridge com lxc que é uma solução superior & funciona com openvpn & dhcp .

Eu também escrevi um guia para uma ponte hospedeira com wireless & lxc . É um pouco da nota do Bodhizazen s + Debian Wiki notes . Esta ponte de host funciona desde que você não esteja usando openvpn .

    
por 12.09.2015 / 18:41