Problemas de interface de rede / dhcp ubuntu com kvm e ponte de rede

1

Eu tenho um sistema Ubuntu executando 12.10

Estou usando o KVM e configurei uma ponte para as máquinas virtuais, que está usando o encaminhamento nat. Eu estou tendo problemas com a conexão caindo periodicamente, por vezes, fica por alguns dias, por vezes, alguns minutos.

Eu desabilitei a bridge para resolver o problema mas ainda está acontecendo, tentei fazer um release manual do dhcp e renovar o que funciona as vezes, ele me pega um novo ip e estou im novamente mas notei que meu ip não está atualizado quando Eu corro ifconfig ou em configurações de conexão kvm.

/ etc / interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

#auto br0
#iface br0 inet dhcp
#    bridge_ports eth0
#    bridge_stp off
#    bridge_fd 0
#    bridge_maxwait 0

ifconfig

eth0      Link encap:Ethernet  HWaddr 38:60:77:aa:aa:aa  
      inet addr:10.0.0.137  Bcast:10.0.0.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:52068 errors:0 dropped:0 overruns:0 frame:0
      TX packets:10900 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:12322071 (12.3 MB)  TX bytes:2494188 (2.4 MB)

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:2651 errors:0 dropped:0 overruns:0 frame:0
      TX packets:2651 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:402096 (402.0 KB)  TX bytes:402096 (402.0 KB)

virbr0    Link encap:Ethernet  HWaddr f6:94:09:8f:7b:b5  
      inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
      UP BROADCAST MULTICAST  MTU:1500  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)

sudo dhcpclient -r -v

Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/virbr0/f6:94:09:8f:7b:b5
Sending on   LPF/virbr0/f6:94:09:8f:7b:b5
Listening on LPF/eth0/38:60:77:aa:aa:aa
Sending on   LPF/eth0/38:60:77:aa:aa:aa
Sending on   Socket/fallback
DHCPRELEASE on eth0 to 10.0.0.254 port 67

sudo dhcpclient -v

Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/virbr0/f6:94:09:8f:7b:b5
Sending on   LPF/virbr0/f6:94:09:8f:7b:b5
Sending on   Socket/fallback
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 3
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 5
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 9
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 15

No momento, a única maneira de recuperar esse estado é desligando o cabo de rede e reiniciando

UPDATE

Quando a conexão é interrompida, tive algum sucesso executando sudo dhclient -v sem eliminar o endereço primeiro.

dhclient -v

Internet Systems Consortium DHCP Client 4.2.4
Copyright 2004-2012 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/virbr0/96:a2:d6:f5:30:fc
Sending on   LPF/virbr0/96:a2:d6:f5:30:fc
Listening on LPF/eth0/38:60:77:aa:aa:aa
Sending on   LPF/eth0/38:60:77:aa:aa:aa
Sending on   Socket/fallback
DHCPDISCOVER on virbr0 to 255.255.255.255 port 67 interval 3
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 3
DHCPREQUEST of 10.0.0.129 on eth0 to 255.255.255.255 port 67
DHCPOFFER of 10.0.0.129 from 10.0.0.254
DHCPACK of 10.0.0.129 from 10.0.0.254
bound to 10.0.0.129 -- renewal in 5716 seconds.

aqui eu posso ver que estou sendo alugado 10.0.0.129 mas ifconfig ainda exibe 10.0.0.137

eth0      Link encap:Ethernet  HWaddr 38:60:77:82:a8:61  
      inet addr:10.0.0.137  Bcast:10.0.0.255  Mask:255.255.255.0
      UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
      RX packets:312183 errors:0 dropped:0 overruns:0 frame:0
      TX packets:85529 errors:0 dropped:1 overruns:0 carrier:0
      collisions:0 txqueuelen:1000 
      RX bytes:80808972 (80.8 MB)  TX bytes:20479979 (20.4 MB)

lo        Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0
      UP LOOPBACK RUNNING  MTU:16436  Metric:1
      RX packets:3910 errors:0 dropped:0 overruns:0 frame:0
      TX packets:3910 errors:0 dropped:0 overruns:0 carrier:0
      collisions:0 txqueuelen:0 
      RX bytes:461047 (461.0 KB)  TX bytes:461047 (461.0 KB)

virbr0    Link encap:Ethernet  HWaddr 96:a2:d6:f5:30:fc  
      inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
      UP BROADCAST MULTICAST  MTU:1500  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)
    
por Alex Edwards 18.03.2013 / 20:41

4 respostas

1

Estou genuinamente surpreso que ninguém tenha mencionado a resposta óbvia -

Descarte o DHCP e use o endereçamento IP estático. Você pode continuar com o NAT ETC, mas não atribua os IPs do pool DHCP, mas na mesma sub-rede e tudo deve funcionar de maneira confiável e previsível.

Tudo o que você precisa fazer para ativar o endereçamento IP estático é alterar

auto eth0
iface eth0 inet dhcp

para

auto eth0
address X.X.X.X
iface eth0 inet static
netmask 255.255.255.0  
gateway X.X.X.Y

Certificar-se de que o gateway seja o endereço atribuído pelo KVM (se você fizer um / sbin / route -n, ele mostrará o gateway padrão - esse é o endereço IP a ser usado).

    
por 28.03.2013 / 08:28
0

Filmado no escuro:

O ethX não deve ter nada de DHCP.

De uma máquina baseada em Proxmox, o resultado ifconfig (com vmbr0 bridging para eth1 (o único NIC real, conectado, porque é gbit)) é:

eth0      Link encap:Ethernet  HWaddr 00:30:67:4f:48:57  
          UP BROADCAST MULTICAST  MTU:1500  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:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:27 Base address:0x4000 

eth1      Link encap:Ethernet  HWaddr 54:e6:fc:80:06:9b  
          inet6 addr: fe80::56e6:fcff:fe80:69b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:209503 errors:0 dropped:0 overruns:0 frame:0
          TX packets:22361 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:46807271 (44.6 MiB)  TX bytes:1558940 (1.4 MiB)
          Interrupt:16 Base address:0x8000 

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:24031 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24031 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2462584 (2.3 MiB)  TX bytes:2462584 (2.3 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:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:3 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

vmbr0     Link encap:Ethernet  HWaddr 54:e6:fc:80:06:9b  
          inet addr:192.168.1.4  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::56e6:fcff:fe80:69b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:196981 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10585 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:43275844 (41.2 MiB)  TX bytes:784636 (766.2 KiB)

Melhor que eu tenho até agora.

    
por 22.03.2013 / 05:57
0

Outro tiro no escuro:

você pode tentar desativar o controle IPv6 no Networkmanager: configure-o de Method: "Automatic" para Método "Ignore"

que resolveu esse tipo de problema para mim uma vez.

se isso não funcionar, você deve examinar a saída de

tail -f /var/log/syslog

enquanto a conexão é perdida e reconectada

outra sugestão pode ser obtida ao examinar um tcpdump do networkmanager

    
por 25.03.2013 / 18:45
0

Se você estiver usando uma ponte para conectar suas VMs à mesma rede que a eth0, geralmente não será necessário fazer nenhum NAT. Você só precisa executar as cinco etapas a seguir:

  • Configure seu hipervisor para usar a interface de ponte apropriada. O KVM é apenas algo fornecido pelo kernel. Um hipervisor pode usar isso para implementar uma máquina virtual. Se o hipervisor estiver configurado para usar virbr0 , mas você configurou br0 , obviamente terá problemas. Parece que virbr0 é o que seu hipervisor configurou automaticamente, portanto, neste ponto, você só precisa garantir que suas VMs usem essa interface (suponho que já esteja pronto) e que eth0 tenha sido adicionado a ela (ou seja, , sudo brctl addif virbr0 eth0 )
  • Verifique se todos os links relevantes estão ativos (por exemplo, sudo ip link set dev eth0 up; sudo ip link set dev virbr0 up ). Prefira ip do pacote iproute2 ; ifconfig do pacote net-tools está muito obsoleto, embora deva funcionar ainda para algo tão básico.
  • Ativar o encaminhamento de IP no kernel (por exemplo, sysctl net.ipv4.ip_forward=1 )
  • Defina seu firewall para permitir o tráfego em ponte. Se você não é particularmente exigente ou está preocupado com as pessoas que enviam tráfego arbitrário para suas VMs, basta fazer o seguinte para permitir qualquer tráfego:

    • Se o tráfego em ponte estiver visível para o iptables (por exemplo, net.bridge.bridge-nf-call-iptables = 1):
      • Limpe a iptables FORWARD chain ( iptables -F FORWARD ) no filtro de tabela.
      • Defina sua política como ACCEPT ( iptables -P FORWARD ACCEPT ).
      • Verifique se você não está filtrando em nenhuma outra tabela (o que você não deveria, pois não é seu propósito).
    • Se o tráfego de ponte estiver visível para arptables (ou seja, net.bridge.bridge-nf-call-arptables = 1), você precisará fazer algo semelhante ao acima para as cadeias IN e OUT na tabela filter (a única tabela na verdade).
    • Novamente, faça algo semelhante para ebtables . Não há necessidade de verificar se um determinado sysctl está definido, é sempre relevante para o tráfego em ponte.

    Eu omiti os detalhes para os dois últimos, pois é bem improvável que o seu sistema tenha alguma configuração lá. Você pode até não tê-los instalado em seu sistema, caso em que você pode pular essas etapas.

  • Verifique se você não está proxy ARP . Você provavelmente não precisa disso (por exemplo, para algo completamente não relacionado a esta pergunta) e provavelmente não está fazendo isso, então apenas sudo sysctl net.ipv4.conf.all.proxy_arp=0 . Se você está fazendo uma ponte, você não deve fazer proxy de ARP para um exemplo tão simples.

No meu conhecimento, não existe algo como "encaminhamento de NAT". Você apenas quis dizer encaminhamento de IP simples (não é a mesma coisa que ponte Ethernet)? Você quis dizer encaminhamento de porta? Apenas o encaminhamento das portas bootps (67) e bootpc (68) (usadas pelo servidor e cliente DHCP, respectivamente) e NATing todo o resto é uma configuração muito estranha e tornará a depuração difícil.

    
por 25.03.2013 / 23:32