Routerkonfiguration: 100 auf einen Streich!

Zu meinem Job gehört die Tätigkeit, (DSL-)Router und Modems zu evaluieren, zu testen und Konfigurationsvorlagen zu erstellen, um später vorkonfigurierte Geräte in großer Stückzahl ausliefern zu können.

Daraus ergibt sich die Notwendigkeit, täglich mehrere Geräte verschiedener Hersteller (Cisco, OneAccess, …) vollautomatisiert mit unterschiedlichen Konfigurationen zu betanken. Dazu gehört natürlich noch jeweils eine passende Firmware und ggf. weitere Dateien, die auf den Router kopiert werden müssen – viel zu aufwändig und zu komplex, um das in Handarbeit durchführen zu können. Wie stellt man das an, ohne das Rad komplett neu zu erfinden?

Zuerst untersuche ich, ob die Hersteller bei „leeren“ (d.h. unkonfigurierten) Geräten eine Möglichkeit der automatischen Konfiguration vorgesehen haben: Bei Cisco ist das in engen Grenzen der Fall, bei OneAccess leider gar nicht, weitere Hersteller habe ich mir gar nicht erst angeschaut. Somit scheidet diese Möglichkeit aus und es bleibt nur das Scripten der Befehlszeile (CLI). Nur womit?

Offen ist auch die Frage nach einem passenden Windows-Fileserver, um Firmware und Konfiguration zum Abruf zur Verfügung zu stellen. Ältere Geräte unterstützen kein HTTP, so dass auch TFTP (laaaaangsam und  – je nach Server – problematisch bei größeren Dateien!) und FTP als Fallback zur Verfügung stehen müssen. Welche Server-Tools bieten das mit möglichst wenig Ressourcenbedarf? Ich will ja keine vollständige Website ausliefern, sondern nur einzelne Dateien, und die Konfigurationsarbeitsplätze sind auch keine hypermodernen Workstations, sondern eher behäbige Geräte älteren Semesters.

Nach einigen Versuchen mit verschiedenen Applikationen habe ich mich auf die folgenden Tools festgelegt, die praktischer Weise alle Freeware sind bzw. zur freien Verwendung zur Verfügung stehen:

  • TeraTerm (Aktuelle Version 4.78)
    TeraTerm bietet eine umfangreiche Makrosprache, mit der sich die komplette Kommunikation mit den Geräten (seriell oder per Telnet verbunden) scripten lässt. Manchmal ist das ganze etwas fummelig (aus Hochsprachen gewohnten Komfort sollte man nicht erwarten…), aber bislang kann ich alle Herausforderungen hiermit meistern. Etwas Geduld beim Debuggen gehört aber dazu…
  • 3Com Daemon (v2.0 rev 10)
    Zwar schon etwas älter, aber absolut stabil und zuverlässig: Der 3Com Daemon dient als TFTP- und FTP-Server. Leider gibt es offenbar keine offizielle Download-Möglichkeit bei 3Com bzw. HP mehr, aber über eine Suchmaschine lassen sich leicht noch Quellen finden.
  • Aidex Mini-Webserver (v1.4)
    Eigentlich eher für den privaten PC entwickelt, aber auch im täglichen Einsatz absolut zuverlässig: Der Aidex Mini-Webserver dient als HTTP-Server.

Wie knotet man dies nun alles zusammen?

  • TFTP-, HTTP- und FTP-Server werden derart konfiguriert, dass sie alle das gleiche Datenverzeichnis nutzen, in dem Firmware und Konfigurationen abgelegt werden.
  • TeraTerm wird über ein Makro gestartet. Je Routerhersteller gibt es ein Makro (ein Script), das auf die Befehlszeile des jeweiligen Herstellers ausgelegt ist und die Konfiguration und Firmware auf die Router kopiert, Informationen vom Router einsammelt, Reboots durchführt usw. In einem Logfile wird der ganze Vorgang nachvollziehbar festgehalten.

In meinem Anwendungsfall steuere ich das ganze dann über eine selbstgebaute Delphi-Applikation, die die Routerkonfigurationen aus einem zentralen System abruft und dann je nach Routerhersteller das passende TeraTerm-Makro aufruft, um die eigentliche Konfiguration durchzuführen. Zum Schluss signalisiert eine Ampel Erfolg oder Misserfolg.

Eine Herausforderung dabei ist die Status-Rückmeldung aus dem laufenden TeraTerm Makro zurück zur Delphi Applikation. TeraTerm sieht dazu keine speziellen Befehle vor und kann auch keine Windows Messages versenden, so dass eine direkte Kommunikation zwischen den Applikationen unmöglich scheint. Schließlich hat sich aber auch hier ein Weg gefunden: Eine Named Pipe. Dabei handelt es sich um eine virtuelle Datei, die von der Delphi-Applikation „erstellt“ und vom TeraTerm Makro mit regulären Datei-Befehlen geöffnet und beschrieben wird (Beispiel). Alle Schreibzugriffe landen aber nicht auf der Festplatte, sondern werden vom Betriebssystem direkt an die Delphi-Applikation durchgereicht und von dort wiederum wie aus einer regulären Datei eingelesen. Und voilà: TeraTerm schreibt fortlaufend Statusmeldungen in die Named Pipe, und die Delphi Applikation liest diese direkt wieder aus und kann entsprechend reagieren. Bestens!

Hand in Hand konfigurieren diese Tools mittlerweile mehrere 100 Router im Monat, und wenn sich Änderungen im Ablauf ergeben (neue Firmware – neue Bootmeldungen 🙁 ), sind die schnell implementiert. Die herstellerspezifischen TeraTerm-Makros haben teilweise eine Größe von 30 kB, entsprechend umfangreich sind die Tätigkeiten, die diese Scripte ausführen. Nennenswerte Probleme gibt es bislang nicht. Was will man mehr?

Doch, einen Wunsch hätte ich: Ein herstellerübergreifendes, einheitliches und einfaches Protokoll zum initialen Provisioning von Endgeräten. Ich fürchte aber, dieser Wunsch wird niemals in Erfüllung gehen…

5 Gedanken zu „Routerkonfiguration: 100 auf einen Streich!

  1. Hallo Jens,

    nach also etwas über 10 Jahren finde ich diesen Post hier 😀
    Es hat wirklich Spaß gemacht, mit Deinem Tool zu arbeiten, es hat uns den Workflow erheblich vereinfacht!

    Viele liebe Grüße,
    Rainer

    • Haha, den Post hatte ich auch schon lange vergessen 🙂 Und es läuft und läuft und läuft… dabei würde ich da echt gerne drauf verzichten…

      PS: Du fehlst dort auch heute noch!!

  2. Hallo, ich habe einen o2-Anschluss mit dem o2 „classic“ Router.
    Ich bin privat Person, und suche einen Router „ohne W-LAN“ = Kabelgebunden Router. Sind Sie so freundlich mir einen Router zu empfehlen ? Besonders wichtig ist mir eine Möglichkeit tr069 zu, oder gleich ganz ohne tr-69. volle kontrolle über meine Hardware ist mir wichtig.

    danke.

    • Besonders wichtig ist mir eine Möglichkeit tr069 zu deaktivieren, oder gleich ganz ohne das tr-69 Protokoll. Volle Kontrolle über meine Hardware ist mir wichtig.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert