Ersteinrichtung
Als Linux-Administrator haben Sie eine neue Linux-Box mit 6 NICs eth0 bis eth5 installiert. Die eth0-Schnittstelle ist korrekt konfiguriert und alle anderen Schnittstellen sind derzeit aktiv, jedoch ohne IP-Adresse. Die Netzwerk-Jungs haben einfach vier Kabel an diese Box angeschlossen. Zwei LAN-Kabel verbinden die Box mit dem Produktionsnetzwerk und zwei verbinden die Box mit einem privaten Netzwerk. Sie wissen nur, dass eth0 mit dem Produktionsnetz verbunden ist. Sie wissen jedoch nicht, welche andere Netzwerkkarte an den gleichen Switch angeschlossen ist, da es unterschiedliche Servergenerationen gibt und / oder die Netzwerkmitglieder die falschen Netzwerkkarten für ihre Verbindungen verwenden.
Aufgabe zur Hand
Da dieses Setup für Ihre Infrastruktur typisch ist, möchten Sie die Konfiguration von Bonding-Schnittstellen automatisieren. Jetzt müssen Sie feststellen, welche NICs überhaupt nicht verbunden sind und welche NICs mit demselben Switch verbunden sind, damit sie verbunden werden können. Sie haben nur Zugriff auf Linux-Boxen und können die Switches nicht abfragen.
Ideen
Das Erkennen des Verbindungsstatus ist einfach:
ethtool $device | grep 'Link detected' | cut -d ':' -f 2
Aber wie stimmen Sie die Geräte überein, die an denselben Switch angeschlossen sind?
In HP-UX gibt es dafür ein Tool namens Linkloop [1]. Das offizielle Linux-Tool fehlt (es gibt jedoch ein altes SourceForce-Projekt).
Mögliche Lösungen, die mir bereits in den Sinn gekommen sind, sind:
Lauschen Sie auf allen Schnittstellen mit tcpdump. Erstellen und senden Sie ein ICMP-Paket (Broadcast). Die Schnittstellen, die dieses Paket sehen, müssen mit demselben Switch verbunden sein. -> brauche Vorschläge von einfachen Werkzeugen, die dafür verwendet werden können. Ich würde gerne einfache Shell-Befehle oder Python für das Scripting verwenden.
Versuchen Sie, über ein einfaches Protokoll (HTTP?) Mit einer externen Box zu sprechen und festzustellen, ob eine Antwort vorliegt. -> Fehleranfällig und abhängig von einer externen Box.
Haben Sie weitere Ideen oder Vorschläge, wie Sie diese Aufgabe lösen können?
Vielen Dank im Voraus für alle Kommentare!