Como iniciar a rede em uma interface com fio antes do logon no Ubuntu Desktop Edition

17

Problema

O Ubuntu 9.10 Desktop Edition (e possivelmente as versões anteriores também, ainda não as testei) não possui conexões de rede após a inicialização até que pelo menos 1 usuário efetue login. Isso significa que qualquer serviço que exija rede (por exemplo, openssh-server) não estará disponível até alguém efetua login localmente via gdm, kdm ou um TTY.

fundo

O Ubuntu 9.10 Desktop Edition usa o serviço NetworkManager para receber comandos do nm-applet no Gnome (ou equivalente no KDE). Pelo que entendi, enquanto o NetworkManager está sendo executado na inicialização, não é emitido nenhum comando para conectar-se até que você faça o login pela primeira vez porque o nm-applet não está sendo executado até que você faça o login e sua sessão do Gnome seja iniciada (ou similar para o KDE). Não sei ao certo o que solicita que o NetworkManager se conecte à rede quando você faz login através de um TTY.

Existem várias variáveis ​​relevantes envolvidas na inicialização das conexões de rede, incluindo:

  • Wired vs Wireless (e os drivers, SSID, senhas e prioridades resultantes)
  • Estático vs DHCP
  • Múltiplas interfaces

Restrições

  • Suporte Ubuntu 9.10 Karmic Koala (pontos de bônus para versões adicionais suportadas)
  • Suporte a interface eth0 com fio
  • Receba um endereço IP via DHCP
  • Receber informações de DNS via DHCP (obviamente, o servidor DHCP deve fornecer essas informações)
  • Habilite a rede no momento adequado (por exemplo, algum tempo após o carregamento dos sistemas de arquivos, mas antes dos serviços de rede, como o ssh start)
  • Trocar distros ou versões (por exemplo, para Server Edition) não é uma solução aceitável
  • Mudar para uma configuração de IP estático não é uma solução aceitável

Questão

  • Como iniciar a rede em uma interface com fio antes do logon no Ubuntu Desktop Edition?

Veja também

Referências

Corpulento
fonte

Respostas:

9

Para que sua interface de rede seja configurada automaticamente via DHCP na inicialização, adicione as seguintes linhas a /etc/network/interfaces:

auto eth0
iface eth0 inet dhcp

Isso deve ativar sua interface mesmo sem o NetworkManager em execução. Você pode até remover o pacote gerenciador de rede, se desejar.

goedson
fonte
Ahh, isso foi apenas um erro de digitação quando fiz a pergunta, mas foi isso que tentei. Dito isto, ao reiniciar o /etc/init.d/networking, você obtém: "* Reconfigurando as interfaces de rede ...", mas a interface não é exibida, e muito menos obtém um IP. A reinicialização não abre a interface com essas configurações.
Burly
Suponho que o: em auth eth0 vez de: auto eth0 no seu post ainda é um erro de digitação que você fez apenas no post, certo?
goedson
Acabei de fazer uma nova instalação do Ubuntu 9.10, editada / etc / network / interfaces conforme observado acima, e a emissão sudo /etc/init.d/networking restartconseguiu o eth0 e foi configurado via DHCP.
goedson
Oh meu, mega-falha! : facepalm: Eu não tive o erro de digitação original que você mencionou, mas eu tenho o 'auth' em vez de 'auto' na primeira linha. Acredito que você precise modificar sua resposta para que eu mude meu voto, porque já faz muito tempo (wth?). Eu removi a seção "O que eu tentei" da pergunta para evitar confusão desde que eu digitei muito. Talvez adicione algo como: "Adicione o seguinte ao /etc/network/interfacespara impedir que o NetworkManager gerencie a interface e abra-a via dhcp" Eu tenho que verificar e ver se essa correção o abrirá na inicialização com o NM instalado ...
2011
Eu mudei a resposta para ficar claro qual é a solução.
goedson
1

O Debian / Ubuntu possui seu próprio programa para gerenciar servidores no momento da inicialização.

Experimentar update-rc.d STARTUP-SCRIPT defaults

Procure o script específico para eth0 e ative-o com isso.

Você sempre pode criar seu próprio script, colocá-lo no init.d e executar o comando anterior fará com que ele seja carregado no momento da inicialização.

ou apenas coloque esses comandos (ifconfig up, dhcpcd) em /etc/rc.local (esse arquivo é lido todas as vezes no momento da inicialização)

Sunlight Rider
fonte
Eu usei update-rc.d antes, mas o problema está localizando o STARTUP-SCRIPT específico para eth0. Pelo menos no Ubuntu 9.10 DE, não há nenhum. Existe apenas o script /etc/init.d/networking, que realmente está chamando um trabalho inicial (/ lib / init / update-job networking start é o que chama especificamente). Como observado acima, chamar /etc/init.d/networking start, / lib / init / update-job networking start e / ou service network start / restart não traz a interface e muito menos obtém um IP. Eu poderia escrever meu próprio roteiro, mas esperava uma solução mais elegante.
quer
Colocar o dhclient eth0 em rc.local pode ser minha única opção. Eu preciso tentar isso para ver se funciona. O problema de colocá-lo aqui é que outros serviços de inicialização não podem realmente depender dele (como ssh) porque o rc.local não é executado até que todos os serviços do sistema tenham sido iniciados.
quer
1
SOLUÇÃO: A adição dhclient eth0ao /etc/rc.local exibe adequadamente a interface eth0 na inicialização e obtém um IP via DHCP. Pelo menos para mim, o SSH também está disponível antes que alguém faça login localmente agora, já que o openssh-server está definido para iniciar nos níveis de execução 234. Não sei se Todos os serviços habilitados para rede funcionarão com sucesso, com a interface ativada no rc.local ( por exemplo, ntpdate) no entanto, porque o rc.local é executado após os serviços do sistema.
quer