Frage Heuristik zum Auffinden der Hauptschnittstelle


Ich versuche, ein paar VM-Netzwerkkonfiguration und Consul usw. zu konfigurieren. Ich benutze vagrant und konfiguriert die VMs, ein privates Netzwerk zu verwenden. Dadurch wird zusätzlich zur NAT-Verbindung zum Host auf eth0 eine Schnittstelle eth1 erstellt. Consul verwendet standardmäßig die erste Schnittstelle eth0. Natürlich wird dadurch alles vermasselt, weil sich beide VMs mit der gleichen IP-Adresse anmelden, die nicht aus dem privaten Netzwerk stammt, sondern aus der Host-Verbindung.

So weit, ist es gut. Ich kann den IP-Konsul ändern, aber das hat mich neugierig gemacht:

Gibt es eine bessere Heuristik für die Suche nach der "Haupt" -Schnittstelle als die "Erste verwenden"? 

Da dies ein Versuch ist, Netzwerkkonfiguration und DNS zu automatisieren, möchte ich eine Art allgemeine Lösung, aber ich bin mir nicht sicher, wie das geht. Idealerweise würde dies der Ort sein, an dem die anderen Konsulagenten leben. Je heterogener ein solcher Cluster ist, desto unwahrscheinlicher ist es, dass die Schnittstelle für alle Clusterknoten gleich ist.

Grundsätzlich suche ich nach "do-was-i-mean (X)" zum Netzwerken. ;-)


-1
2018-06-12 08:16


Ursprung


normalerweise, wenn Sie vermeiden möchten, dass das Betriebssystem virtuelle Schnittstellen vermischt, können Sie ihm sagen, dass er sie anhand seiner MAC-Adresse erkennt. In Red Hat Linux, / Centos gibt es eine "HWADDR" -Direktive in /etc/sysconfig/networking-scripts/ifcfg-ethX.cfg - mveroone


Antworten:


Sie können konsistente Namen über Neustarts hinweg erzwingen udev. Eigentlich war dies einer der Hauptgründe (nicht der einzige) hinter der Entwicklung von udev.

Angenommen, Sie haben zwei Ethernet-Schnittstellen, eine mit MAC aa: bb: cc: dd: ee: ff, die Sie wan0 anrufen möchten, die andere mit mac-Adresse 00: 11: 22: 33: 44: 55, die Sie anrufen möchten local1.

Dann können Sie die Datei bearbeiten /etc/udev/rules.d/70-persistent-net.rules, eine Zeile wie folgt lokalisieren:

 # PCI device 0x8086:0x1502 (e1000e)
 SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="aa:bb:cc:dd:ee:ff", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

Diese Regel gibt das PCI-Gerät mit dem Herstellercode 8086 und dem Produktcode 1502 und der MAC-Adresse aa: bb: cc: dd: ee: ff, der Name eth0. Veränderung eth0 zu wan0und du hast eine Regel, die es wird immer Gib dieser NIC den gleichen Namen. Ebenso für die andere Schnittstelle.

Stellvertretend für aa: bb: cc: dd: ee: ff über die MAC-Adresse passend zur Schnittstelle im Gespräch mit dem Host und bis 00: 11: 22: 33: 44: 55 die MAC-Adresse der NIC im Gespräch mit den anderen Gästen und du bist fertig.


1
2018-06-12 10:40