Question Est-il possible de forcer mon ordinateur Linux à toujours démarrer avec une adresse IP auto-assignée?


C’est peut-être une requête inhabituelle: j’essaie d’obtenir une machine Debian Linux toujours elle-même une adresse IP auto-assignée (c’est-à-dire 169.254.x.y) au démarrage. En particulier, je veux le faire même lorsqu'un serveur DHCP est présent sur le réseau local. C'est, il devrait ne pas demander une adresse IP au serveur DHCP.

D'après ce que je peux voir dans le texte "man interfaces", il existe une option pour "manuel" et une option pour "dhcp". L'affectation manuelle ne suffit pas, car plusieurs boîtes doivent fonctionner sur le même réseau local sans nécessiter de configuration manuelle ... et "dhcp" fait ce que je veux, mais uniquement s'il n'y a pas de serveur DHCP sur le réseau local. (Une exigence est que la fonctionnalité de ces boîtes ne soit pas affectée par la présence ou l'absence d'un serveur DHCP).

Existe-t-il une astuce que je peux utiliser pour obtenir ce comportement?

EDIT: Par "pas de configuration manuelle", je veux dire que je devrais être capable de transporter ce boîtier (sans tête) vers n’importe quel réseau local, de brancher le câble Ethernet et de le laisser faire son travail. Je ne devrais pas avoir à ssh à la boîte et éditer des fichiers pour le faire fonctionner chaque fois qu'il est déplacé vers un LAN différent.


7
2017-11-11 01:30


origine


Sérieusement, il existe des millions de sites dans le monde qui fonctionnent très bien avec les assignations DHCP ou statiques. Choisissez-en un et utilisez-le, vous passerez beaucoup plus de temps à essayer de trouver une idée nouvelle et novatrice qu'elle ne méritera jamais. De plus, les adresses IP attribuées automatiquement n'ont pas de routeur, pas de réglage DNS et ne seront pas routées vers d'autres réseaux. - Chris S
De par leur conception, il n’ya aucun moyen de choisir le serveur DHCP qui attribue une adresse IP à votre ordinateur (même s’il est lui-même). Lorsque vous allumez votre ordinateur, le client DHCP envoie un paquet sur l'interface broadcase (essentiellement tous les 1 de l'hôte) et le premier serveur DHCP à recevoir l'offre assigne l'adresse IP à l'ordinateur. Votre ordinateur est le dernier serveur contacté (car le port doit d'abord rebondir sur le réseau), ce qui explique pourquoi il ne fonctionne que s'il n'existe aucun autre serveur DHCP. - Theo
Votre meilleur choix est de travailler manuellement ou de laisser votre serveur DHCP configurer les réservations. Mettez votre question en contexte: quelle est la nécessité d'une adresse IP auto-assignée et comment sait-elle quelle adresse utiliser? - Theo
Regarder dans le avahi-* paquets. La réponse de Zanchey concernant avahi-autoipd est un endroit pour commencer. Il y a aussi Page Wiki Debian ZeroConf. - Steven Monday
Jed: J'ai besoin d'une boîte pouvant être branchée "sans tête" sur n'importe quel réseau local et communiquer avec les autres boîtes de ce réseau. Il n'a pas besoin de communiquer en dehors du réseau local, jamais. Son comportement doit être le même, qu’un serveur DHCP soit disponible ou non (c’est-à-dire qu’il ne peut s’arrêter de fonctionner ou fonctionne différemment si le serveur DHCP disparaît plus tard ou si un nouveau s’affiche) - Jeremy Friesner


Réponses:


Si vous installez le avahi-autoipd package, et exécutez-le avec le --force-bind option dans un script personnalisé init ou if-up.d, vous obtiendrez toujours une adresse de lien local.

Vous pouvez alors utiliser iface eth0 inet manual dans votre fichier interfaces (5), bien que vous deviez éditer /etc/network/if-up.d/avahi-autoipd ajouter manual aux lignes de méthode.

Il y a plus d'informations sur avahi-autoipd sur le wiki Avahi.

Personnellement, j'éditerais /etc/network/if-up.d/avahi-autoipd avec quelque chose comme:

--- avahi-autoipd       2010-08-04 04:26:49.000000000 +0800
+++ avahi-autoipd.1     2010-11-11 09:57:54.000000000 +0800
@@ -13,10 +13,13 @@
 esac

 case "$METHOD" in
-       static|dhcp|NetworkManager) ;;
+       static|dhcp|NetworkManager|linklocal) ;;
        *) exit 0
 esac

+if [ "$METHOD" == "linklocal" ]; then
+       /usr/sbin/avahi-autoipd --force-bind --daemonize --wait $IFACE 2> /dev/null
+fi

 if [ -x /bin/ip ]; then
        # route already present?

Vous pouvez ensuite lister les interfaces en tant que iface eth0 inet linklocal. Les modifications à apporter à la if-down.d Les scripts sont laissés comme un exercice au lecteur.


8
2017-11-11 01:48



Exigence de la question: "sans nécessiter de configuration manuelle" - Chris S
Je pense que vous voulez dire "sans nécessiter d'assignation manuelle", ce qui n'est pas la même chose. - Zanchey
Vous auriez probablement dû lire la question correctement au préalable. "L'affectation manuelle ne suffit pas, car plusieurs boîtes doivent fonctionner sur le même réseau local sans nécessiter de configuration manuelle" - Arenstar
Dites-vous quoi, champion, que diriez-vous de consulter la question mise à jour. - Zanchey
Pas complètement. Les boîtes peuvent diffuser et se découvrir en recevant des émissions. - Fahad Sadah


Vous avez peut-être manqué cela dans man interfaces:

The ipv4ll Method
   This method uses avahi-autoipd to configure an interface with an IPv4 Link-Layer address
   (169.254.0.0/16  family). This method is also known as "APIPA" or "IPAC", and often col‐
   loquially referred to as "Zeroconf address".

   Options

          (No options)

Donc, vous auriez un interfaces section en tant que telle:

auto eth0
iface eth0 inet ipv4ll

Installer avahi-autoipd, et cela devrait le faire.


4
2017-11-11 06:05



Cette solution semble bonne, mais je ne peux pas la faire fonctionner. :( Changer le fichier d'interface pour spécifier "iface eth0 inet ipv4ll" provoque simplement l'impression d'une erreur "de mode inconnu" lors de la séquence de démarrage, et l'interface n'est pas configurée. Avahi-autoipd est installé. ancienne version? - Jeremy Friesner
Peut-être? J'utilise Ubuntu 10.10 dans mon cas, je suppose que vous utilisez Lenny? Si tel est le cas, vous voudrez peut-être saisir le deb-src de squeeze et l’essayer. - Sam Halicke


Je pense que ce que vous cherchez, c'est zeroconf.


2
2017-11-11 01:54



Exigence de la question: "sans nécessiter de configuration manuelle" - Chris S
Exigence de la question: "sans nécessiter de configuration manuelle" - Arenstar
Oui, zeroconf est ce que je recherche. Plus précisément, j'aimerais activer zeroconf sans activer également DHCP. Y-a-t-il un moyen de faire ça? - Jeremy Friesner
Vous devrez écrire un script personnalisé pour exécuter zeroconf, puis définir votre interfaces(5) déposer dans iface eth0 inet manual, ou faire quelque chose comme le script ci-dessous. - Zanchey


Personne n'en a encore parlé, donc je ferai simplement remarquer que, si vous avez le contrôle sur le démarrage de la machine, vous pouvez modifier l'entrée par défaut dans le menu.lst de GRUB (ou le nom de cette semaine) pour ajouter un cheatcode "nodhcp". aux arguments donnés le noyau au démarrage. Cela devrait au moins empêcher la machine d'envoyer une demande IP initiale, bien que je ne sache pas combien de temps, je n'en ai vraiment besoin que pour tester des CD live (toutes les adresses IP RFC1918 statiques se trouvent sur mon réseau local).


0
2017-11-11 03:51



"sans nécessiter de configuration manuelle" va rendre cela difficile. - Chris S


Publier pour le bien des autres Googler pour cela:

Si vous utilisez NetworkManager. Depuis juillet 2008, il prend en charge avahi-autoipd. Il suffit de définir BOOTPROTO = autoip dans le fichier / etc / sysconfig / network-scripts / ifcfg- * de l'interface. NetworkManager ignore la configuration DHCP de l'interface et passe directement à l'adressage IPv4LL avec liaison locale via autoipd.


0
2017-08-22 15:57