Como configuro uma ponte xen?

5

Eu tenho lido várias páginas sobre como configurar a rede para o xen. Infelizmente, nenhum deles realmente tem um exemplo completo de configuração. Eles mostram claramente como deve ser a seção xenbr0, mas não como você deve mudar a eth0 depois de mencionar:

  

Nota! A configuração IP do dispositivo de ponte deve substituir a configuração de IP da interface subjacente, ou seja, remover as configurações de IP da eth0 e movê-las para a interface de ponte. O eth0 funcionará puramente como o uplink físico da bridge, então não pode ter configurações de IP (L3) nele!

Eu tentei muitas configurações que falharam (depois de executar o /etc/init.d/networking restart, não há acesso normal à rede e não é possível usar o ssh dentro ou fora).

Aqui está minha configuração atual:

auto lo
iface lo inet loopback

auto xenbr0
iface xenbr0 inet static
    bridge_ports eth0
    address 10.0.0.3
    netmask 255.0.0.0
    broadcast 10.255.255.255
    gateway 10.0.0.1

auto eth0
iface eth0 inet manual

Talvez isso esteja correto e eu só precise configurar algumas regras de encaminhamento do iptables? Tentei executar o comando sudo iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT , mas recebi uma mensagem de erro dizendo que --physdev-is-bridged não é uma opção reconhecida.

A saída de depuração da reinicialização da rede fornece a seguinte saída:

Reconfiguring network interfaces...
Waiting for xenbr0 to get ready (MAXWAIT is 32 seconds).
RTNETLINK answers: No such process
Failed to bring up xenbr0
ssh stop/waiting
ssh start/running, process 3775

Eu verifiquei que o xenbr0 já existe porque quando eu tento criar uma ponte com esse nome, o brctl me diz que ele não pode criar como já existe.

    
por Programster 15.01.2013 / 16:27

2 respostas

3

No final acabei criando apenas uma interface e encaminhando pacotes através dela com algumas regras do iptables, o que parece estar funcionando para mim. Isso NÃO usa a opção 'bridge' que todos os tutoriais parecem sugerir, então eu não sei se existe uma falha fatal?

auto lo
iface lo inet loopback


auto xenbr0
iface xenbr0 inet static
        bridge_ports none
        address 192.168.2.1
        netmask 255.255.255.0
        network 192.168.2.0
        broadcast 192.168.2.255
        gateway 10.0.0.3


# The primary network interface
auto eth0
iface eth0 inet static
        address 10.0.0.3
        netmask 255.0.0.0
        network 10.0.0.0
        broadcast 10.255.255.255
        gateway 10.0.0.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 8.8.8.8

Você precisa editar o /etc/sysctl.conf e descomentar a seguinte linha:

net.ipv4.ip_forward=1 

Então você precisa criar um script para editar o iptables para encaminhar pacotes:

sudo /sbin/iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
sudo /sbin/iptables --append FORWARD --in-interface xenbr0 -j ACCEPT
return 0

Então você precisa ter certeza de que o script é chamado pelo arquivo rc.local:

sudo vi /etc/rc.local

Adicione a seguinte linha:

/bin/sh <path-to-script-you-just-created-here>

Em seguida, reinicialize para que todas as configurações entrem em vigor.

Como você pode perceber, eu o configurei para que as máquinas virtuais usem uma sub-rede de endereço 192.168.2.x enquanto a lan externa está em 10.xxx, o que é provavelmente diferente do que a maioria das pessoas vai querer, então você terá que edite-os de acordo com suas necessidades pessoais.

Atualizar
Mais tarde, percebi que a falta de ponte significava que eu não conseguia acessar minhas máquinas virtuais de fora da rede (ou seja, eu não conseguia acessá-las diretamente de casa ou executar um site delas, etc.)

Usando uma configuração de rede como assim funcionou:

# The loopback network interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto xenbr0
iface xenbr0 inet static
        address 23.29.115.142
        netmask 255.255.255.248
        network 23.29.115.136
        broadcast 23.29.115.143
        gateway 23.29.115.137
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

(copiado daqui)

Eu estou supondo que essas opções extras de bridge fizeram funcionar, ou talvez a ordem em que as interfaces foram listadas no arquivo (eth0 antes da bridge desta vez)

    
por Programster 16.01.2013 / 13:44
2

Defina eth0 primeiro, sem configurar um gateway e um IP. (Caso contrário, você terá "RTNETLINK responde: Arquivo existe" erros quando o sistema tenta criar uma rota para a interface, desde que a ponte tentará criar uma rota com a mesma prioridade e gateway e não é inteligente o suficiente para perceber que eles ' re idêntico de qualquer maneira.)

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto xenbr0
iface xenbr0 inet static
    address 192.168.1.10
    netmask 255.255.255.0
    gateway 192.168.1.1
    bridge_ports eth0
    #allow-hotplug xenbr0 #Uncomment if using vSwitches

Como alternativa, sua ponte pode usar o DHCP:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto xenbr0
iface xenbr0 inet dhcp
    bridge_ports eth0
    #allow-hotplug xenbr0 #Uncomment if using vSwitches

Quando terminar, reinicie. Caso contrário, como você está alterando eth0 , mas não definindo um novo IP, sua ponte pode não aparecer corretamente, mesmo se você usar a rede ifup command / restart. Isso ocorre porque eth0 pode manter acidentalmente seu endereço IP.

Por fim, configure as interfaces de rede do sistema operacional convidado como se fosse qualquer outro host físico em sua rede. (Com o exemplo 1, você poderia usar 192.168.1.11.) Neste ponto, outros dispositivos em sua rede devem ser capazes de alcançar o convidado.

ping 192.168.1.11 

Nenhum iptables ou encaminhamento de IP (sysctl.conf) é necessário. O STP é necessário somente se a sua rede suportar STP e você precisar evitar loops de rede da Camada 2 e não quiser manipular isso manualmente. (por exemplo, redes pequenas não precisarão de bridge_stp, bridge_fd ou bridge_maxwait.)

    
por Courtney Schwartz 05.11.2013 / 16:34