Comment démarrer la mise en réseau sur une interface filaire avant la connexion dans Ubuntu Desktop Edition

17

Problème

Ubuntu 9.10 Desktop Edition (et peut-être les versions précédentes également, je ne les ai pas testées) n'a pas de connexion réseau après le démarrage jusqu'à ce qu'au moins 1 utilisateur se connecte. Cela signifie que tous les services nécessitant une mise en réseau (par exemple, openssh-server) ne sont pas disponibles avant quelqu'un se connecte localement via gdm, kdm ou un ATS.

Contexte

Ubuntu 9.10 Desktop Edition utilise le service NetworkManager pour prendre les commandes de l'applet nm dans Gnome (ou son équivalent dans KDE). Si je comprends bien, alors que NetworkManager est en cours d'exécution au démarrage, aucune commande ne se connecte jusqu'à ce que vous vous connectiez pour la première fois car nm-applet ne fonctionne pas tant que vous ne vous êtes pas connecté et que votre session Gnome ne démarre (ou similaire pour KDE). Je ne sais pas ce qui invite NetworkManager à se connecter au réseau lorsque vous vous connectez via un ATS.

Il existe plusieurs variables pertinentes impliquées dans le démarrage des connexions réseau, notamment:

  • Filaire vs sans fil (et les pilotes, SSID, mots de passe et priorités résultants)
  • Statique vs DHCP
  • Interfaces multiples

Contraintes

  • Prise en charge d'Ubuntu 9.10 Karmic Koala (points bonus pour les versions supplémentaires prises en charge)
  • Prise en charge de l'interface filaire eth0
  • Recevez une adresse IP via DHCP
  • Recevoir des informations DNS via DHCP (évidemment le serveur DHCP doit fournir ces informations)
  • Activer la mise en réseau au bon moment (par exemple, un certain temps après le chargement des systèmes de fichiers mais avant les services réseau comme le démarrage de ssh)
  • Le changement de distributions ou de versions (par exemple vers Server Edition) n'est pas une solution acceptable
  • Le passage à une configuration IP statique n'est pas une solution acceptable

Question

  • Comment démarrer la mise en réseau sur une interface filaire avant la connexion dans Ubuntu Desktop Edition?

Voir également

Les références

Costaud
la source

Réponses:

9

Pour que votre interface réseau soit automatiquement configurée via DHCP au démarrage, ajoutez les lignes suivantes à /etc/network/interfaces:

auto eth0
iface eth0 inet dhcp

Cela devrait faire monter votre interface même sans que NetworkManager ne soit en cours d'exécution. Vous pouvez même supprimer le package network-manager, si vous le souhaitez.

goedson
la source
Ahh, ce n'était qu'une faute de frappe lorsque j'ai posé la question, mais c'est ce que j'ai essayé. Cela dit, faire /etc/init.d/networking restart donne: "* Reconfiguration des interfaces réseau ..." mais l'interface n'est pas affichée, encore moins obtenir une IP. Faire un redémarrage ne fait pas apparaître l'interface non plus avec ces paramètres.
Burly du
Je suppose que le: auth eth0 au lieu de: auto eth0 dans votre message est toujours une faute de frappe que vous avez fait uniquement dans le message, non?
goedson
Je viens de faire une nouvelle installation d'Ubuntu 9.10, édité / etc / network / interfaces comme indiqué ci-dessus, et l'émission sudo /etc/init.d/networking restarta obtenu eth0 et configuré via DHCP.
goedson
Oh mon, méga-échec! : facepalm: Je n'avais pas la faute de frappe originale que vous avez mentionnée, mais j'ai vraiment 'auth' au lieu de 'auto' sur la première ligne. Je crois que vous devez modifier votre réponse pour que je puisse changer mon vote car cela fait trop longtemps (wth?). J'ai supprimé la section "Ce que j'ai essayé" de la question pour éviter toute confusion depuis que j'ai fait une faute de frappe. Ajoutez peut-être quelque chose comme: "Ajoutez ce qui suit dans /etc/network/interfacespour empêcher NetworkManager de gérer l'interface et de la faire apparaître via DHCP" Je dois vérifier et voir si ce correctif le fera apparaître au démarrage avec NM installé ...
Burly
J'ai changé la réponse, il est donc clair quelle est la solution.
goedson
1

Debian / Ubuntu a son propre programme pour gérer les serveurs au démarrage.

Essayer update-rc.d STARTUP-SCRIPT defaults

Recherchez le script spécifique pour eth0 et activez-le avec cela.

Vous pouvez toujours créer votre propre script, le placer dans init.d et exécuter la commande précédente le chargera au démarrage.

ou mettez simplement ces commandes (ifconfig up, dhcpcd) dans /etc/rc.local (ce fichier est lu à chaque fois au démarrage)

Sunlight Rider
la source
J'ai déjà utilisé update-rc.d mais le problème est de localiser le STARTUP-SCRIPT spécifique à eth0. Au moins dans Ubuntu 9.10 DE, il n'y en a pas. Il n'y a que le script /etc/init.d/networking, qui n'appelle vraiment qu'un travail parvenu (/ lib / init / update-job networking start est ce qu'il appelle spécifiquement). Comme indiqué ci-dessus, appeler /etc/init.d/networking start, / lib / init / update-job networking start et / ou service networking start / restart ne font pas apparaître l'interface et encore moins obtenir une IP. Je pourrais écrire mon propre script, mais j'espérais une solution plus élégante.
Burly
Mettre dhclient eth0 dans rc.local peut être ma seule option. Je dois essayer ceci pour voir si cela fonctionne même. Le problème de le mettre ici est que d'autres services de démarrage ne peuvent pas vraiment en dépendre (comme ssh) car rc.local n'est exécuté qu'après le démarrage de tous les services système.
Burly
1
SOLUTION: l'ajout dhclient eth0à /etc/rc.local fait correctement apparaître l'interface eth0 au démarrage et obtient une IP via DHCP. Au moins pour moi, SSH est également disponible avant que quiconque ne se connecte localement maintenant, car openssh-server est configuré pour démarrer au niveau d'exécution 234. Je ne sais pas si tous les services activés en réseau fonctionneront correctement si l'interface est mise en place dans rc.local ( par exemple, ntpdate), car rc.local est exécuté après les services système.
Burly