Por que o / etc / network / interfaces é ignorado?

10

Estive pesquisando na Internet nas últimas 2 horas e não consigo encontrar uma solução para o seguinte problema.

Acabei de instalar o Xen em um novo Xubuntu 13.04 e, para configurar a rede, tive que remover o network_manager. Portanto, toda a configuração de rede é feita através de / etc / network / interfaces. Pelo menos, é o que deveria acontecer. No entanto, parece que o que eu inseri está sendo ignorado: minha interface xenbr0 não recebe um endereço IPv4 atribuído, não há gateway padrão e nenhum servidor de nomes está configurado.

Aqui está o que está no arquivo / etc / network / interfaces:

auto lo
iface lo inet loopback

# There are no IP configurations for eth0, it’s all defined under xenbr0:
#auto eth0

# Static configuration
auto xenbr0
iface xenbr0 inet static
  bridge_ports    eth0
  address         192.168.1.200 # the IP address of the Ethernet port
  broadcast       192.168.1.255
  netmask         255.255.255.0
  gateway         192.168.1.1   # the address of the router
  bridge_stp      off           # disable Spanning Tree Protocol - optional
  bridge_waitport 0             # no delay before a port becomes available - optional, comment out if this gives you troubles
  bridge_fd       0             # no forwarding delay - optional
  dns-nameservers 192.168.1.1

Para corrigir minha conexão de rede, eu executo um pequeno script de "correção":

#!/bin/bash
ifconfig xenbr0 192.168.1.200 netmask 255.255.255.0 up
route add default gw 192.168.1.1 xenbr0

Eu gostaria de corrigir o núcleo embora. No momento, a inicialização leva pelo menos 1 minuto a mais, porque o sistema aguarda uma conexão de rede em funcionamento.

Edit : Eu também tive que adicionar o seguinte ao /etc/resolvconf/resolv.conf.d/base e executar sudo resolvconf -u:

nameserver 192.168.1.1

Sem isso, posso apenas executar ping nos endereços IP, nenhuma solicitação de DNS é passada. Isso é o que realmente me convenceu de que o arquivo de interfaces é completamente ignorado.

Edit 2 : Fazendo sudo restart networkingou sudo /etc/init.d/networking restartnão faz nada.

Edit 3 : Algumas informações extras. Aqui está como ifconfigdeve ser a saída (rede de trabalho / conexão à Internet):

eth0      Link encap:Ethernet  HWaddr 00:1c:c0:77:09:9d  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3346 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2903 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2931429 (2.9 MB)  TX bytes:661616 (661.6 KB)
          Interrupt:20 Memory:e3200000-e3220000 

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:65536  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1720 (1.7 KB)  TX bytes:1720 (1.7 KB)

xenbr0    Link encap:Ethernet  HWaddr 00:1c:c0:77:09:9d  
          inet addr:192.168.1.200  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21c:c0ff:fe77:99d/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3329 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2875 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:2870029 (2.8 MB)  TX bytes:647394 (647.3 KB)

Aqui está o que parece logo após a inicialização. A única coisa que falta é o endereço IPv4 xenbr0 (e os dados de roteamento / DNS, mas você não pode ver isso na saída do ifconfig):

eth0      Link encap:Ethernet  HWaddr 00:1c:c0:77:09:9d  
          UP BROADCAST RUNNING 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 B)  TX bytes:0 (0 B)

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:65536  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0 B)  TX bytes:0 (0 B)

xenbr0    Link encap:Ethernet  HWaddr 00:1c:c0:77:09:9d  
          inet6 addr: fe80::21c:c0ff:fe77:99d/64 Scope:Link
          UP BROADCAST RUNNING 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 B)  TX bytes:0 (0 B)
Darhuuk
fonte
Verifique init.d e os outros scripts de inicialização para obter as informações de inicialização da interface de rede ausentes. Deixe-nos saber o que você encontrou.
RGS
Quando você digita /etc/init.d/networking restart, você obtém a configuração do arquivo de interfaces?
ortang
Tente com auto eth0e iface eth0 inet manual.
Eric Carvalho
Quando você executa ifconfiglogo após a inicialização, existe alguma interface?
Eric Carvalho
@ortang: Não, eu tentei isso também, nada acontece.
Darhuuk

Respostas:

16

Você tem:

address         192.168.1.200 # the IP address of the Ethernet port

e relate que essa é a linha que não está funcionando. Você sabe, pelas interfaces (5), que:

   Lines starting with `#' are ignored. Note  that  end-of-line  comments
   are NOT supported, comments must be on a line of their own.

Você adicionou os comentários de fim de linha para a pergunta ou os possui no seu /etc/network/intefacesarquivo? Nesse caso, tente removê-los.

Robie Basak
fonte
@Darhuuk Robie está certo. Eu acho que isso está errado no seu arquivo de interfaces.
Eric Carvalho
Ah, boa descoberta. Esses comentários foram adicionados pelo Xen e são instalados no final da linha. Não comentar auto eth0parece ter resolvido o meu problema, mesmo que os comentários ainda estejam lá.
Darhuuk
Comentários embutidos também não são suportados em / etc / network / interfaces, ao que parece. Obrigado, isso permitiu que minha segunda interface de rede funcionasse no meu VPS.
Escher
3

Talvez, apesar de ter removido o pacote do gerenciador de rede, você ainda tenha o arquivo que /etc/NetworkManager/NetworkManager.confcontém

[ifupdown]
managed=true

o que faz com que ifupnão surjam automaticamente interfaces.

Se essa é a causa do problema, sugiro uma dpkg --purge network-managerconfiguração ou managed=false.

Eu enviei um relatório de bug sobre isso: https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1187693

jdthood
fonte
Vou verificar isso hoje à noite quando chegar em casa. No entanto, as interfaces estão ativadas após a inicialização, mas não configuradas corretamente. A execução manual sudo restart networkingtambém não resolve o problema.
Darhuuk
@jdthood, você não quer dizer que ifupdown já pode estar definido como managed=false, e que ele precisa configurá-lo truepara que comece a usar as configurações /etc/network/interfaces?
Alaa Ali
@ Laaa, não, eu não quis dizer o que você sugere. No Ubuntu, ifupna verdade , procura /etc/NetworkManager/NetworkManager.confe evita interfaces de atualização automática se o NM estiver configurado para configurar essas interfaces como " [ifupdown] managed=true".
Jdthood
Eu apenas tentei com ambos gerenciados true & false (era para isso que foi definido), nenhum deles funcionou. Então fiz um dpkg --purge, que também não ajudou, minhas / etc / network / interfaces ainda não são levadas em consideração.
Darhuuk
3

Consegui resolver o meu problema alterando 2 arquivos. Primeiro de tudo, como sugerido por Eric Carvalho, I uncommented auto eth0no /etc/networking/interfaces. (Observe que isso é bastante estranho, vários tutoriais online parecem sugerir que isso não deve ser necessário para o Xen.)

Isso por si só não corrigiu a inicialização lenta. Parece que na inicialização ainda demorou alguns segundos para as interfaces surgirem e, enquanto isso, o Ubuntu já estava preso em uma espera inativa de 60 segundos. Isso foi corrigido modificando o tempo de atraso /etc/init/failsafe.confde 60 segundos para 1 segundo. (Descobri esse arquivo pelo Google, não faço ideia de qual era exatamente.)

Darhuuk
fonte