Serieller Konsolen-Server

Remote Access auf die serielle Konsole von Netzwerkkomponenten

Motivation

Auch heute noch erfolgt die zumindest die initiale Konfiguration von Netzwerkkomponenten über eine serielle Schnittstelle. Das hat mehrere Nachteile:

  • Aktuelle Notebooks haben keine serielle Schnittstelle mehr. Man benötigt also einen zusätzlichen Adapter, üblicherweise von USB auf sieriell (RS-232). Deren Nutzung ist nicht immer unproblematisch: So muß man unter Windows manchmal noch Treiber installieren. Es kann auch passieren, daß keine Verbindung mit dem zu konfigurierenden Gerät aufgebaut wird. Daran kann der Typ des Adapters schuld sein, oder ganz allgemein Inkompatibilitäten.
  • Die zu konfigurierenden Netzwerkkomponenten befinden sich meist in einem ungemütlichen Rechenzentrum. Oft gibt es da in Reichweite der seriellen Kabel nicht einmal Tisch und Stuhl.

Es wäre also von Vorteil, wenn man eine universelle Lösung zum "Verlängern" der seriellen Ports hätte. Dazu dient die im Folgenden beschriebene Lösung.

Verwendete Komponenten

Software

Die Wahl fiel auf ConsolePi, einem "Serial Console Server" basierend auf einem Raspberry Pi. Damit ist die drahtlose Anbindung per WLAN und Bluetooth möglich, mittels Adapter auch der Zugriff über ein vorhandenes Ethernet.

Hardware

Für einen möglichst universellen Einsatz an den verschiedensten Netzwerkkomponenten wurde die folgende Hardware beschafft:

  • Raspberry Pi Zero 2 WH
    Ein Raspberry Pi ist Voraussetzung zur Nitzung von ConsolePi. Die Wahl viel auf den Raspberry Pi Zero 2 WH, weil dieser im Verleich zu den anderen Modellen die geringste Stromaufnahme hat. Somit kann er meist über einen an vielen Netzwerkkomponenten zusätzlich vorhandenen USB-Anschluß mit Strom versorgt werden. Die geringe Größe ist außerdem von Vorteil.
  • Gehäuse für Raspberry Pi Zero (eb5883)
    Das offizielle Gehäuse für Raspberry Pi Zero, rot/weiß.
  • MicroSD-Karte 32GB
    Es wurde die offizielle MicroSD-Karte für den RaspBerry Pi verwendet. Jede andere MicroSD-Karte sollte auch funktionieren, eine Kapazität vom 8GB würde auch genügen.
  • USB-Kabel: USB-A-Stecker -> micro-USB-Stecker, 0,5 m
    Zur Stromversorgung des Raspberry Pi über eine USB-A-Buchse oder ein Netzteil mit USB-A-Buchse
  • Sertronic USB-Hub mit Ethernet
    Dieser USB-Hub kann über seinen Micro-USB-Stecker direkt mit dem Raspberry Pi Zero verbunden werden und bietet neben 3 USB-Ports zum gleichzeitigen Anschluß von 3 zu konfigurierenden Netzwerkgeräten auch noch einen 100Mbit Ethernet-Port.
  • USB-Adapter: Micro-USB-Stecker -> USB-A-Buchse
    Zum Anschluß von USB-Kabeln bzw. -Adaptern mit USB-A-Steckern an den USB-Port des Raspberry Pi Zero.
  • USB-Kabel: USB-A-Stecker -> Mini-USB-Stecker
    Zum Anschluß an Netzwerkkomponenten mit Mini-USB-Port. Verbindung zum Raspberry Pi Zero mittels des o.g. USB-Hubs oder des Adapters Micro-USB-Stecker -> USB-A-Buchse.
  • USB-Seriell-Adapter
    USB Typ-A Stecker -> Seriell RS-232, RJ45, 1,8 m zum Anschluß an ein Netzwerkgerät mit seriellen RJ45-Port (wie z.B. bei Cisco üblich)
  • Adapter DB9 Buchse / RJ45 Buchse
    Montagesatz zur Herstellung eines Adapters zum Anschluß des USB-Seriell-Adapters an ein Netzwerkgerät mit seriellem 9poligem Sub-D-Port.

Installation

Von den zur Auswahl stehenden Installationsmöglichkeiten wurde der Weg über das offizielle Raspberry Pi OS und anschließender Installation von ConsolePi gewählt. Das geschieht in folgenden Schritten:

Raspberry Pi OS

  • Installation des Raspberry Pi Imagers
    Z.B. unter Debian mittels:
    cd /tmp
    curl -L https://downloads.raspberrypi.org/imager/imager_latest_amd64.deb -o imager_latest_amd64.deb
    sudo apt install ./imager_latest_amd64.deb
    
  • MicroSD-Karte am Computer anschließen (an SD-Card-Slot oder mit entsprechendem USB-Adapter)
  • rpi-imager starten
  • Auswahl treffen:
    • Raspberry Pi Modell: Raspberry Pi Zero 2 W
    • Betriebssystem (OS): Raspberry Pi OS (Other) / Raspberry Pi OS Lite (64-bit)
    • SD-Karte: die Micro-SD-Karte wählen
    • Einstellungen bearbeiten:
      • Allgemein:
        • hostname: cpi-1
        • Benutzername: <wie gewünscht>
        • Passwort: <wie gewünscht>
        • Wifi SSID: <wie gewünscht>
        • Wifi Passwort:
        • Wifi-Land: DE
        • Zeitzone: Europe/Berlin
        • Tastaturlayout: de
      • Dienste:
        • SSH aktivieren
        • Authentifizierung via Public-Key: SSH-Key eintragen
          (notfalls auch "Passwort zur Authentifizierung verwenden)
      • Optionen: alles abwählen
      • Speichern
      • Anpassungen anwenden: Ja
    • Sicherheitsabfrage bestätigen, OS wird installiert
  • MicroSD-Karte in Raspberry Pi einsetzen, Stromversorgung anschließen
  • Rasbberry Pi sollte sich mit dem WLAN verbinden
  • IP-Adresse am Accesspoint, WLAN-Controller oder DHCP-Server ermitteln
  • mit SSH auf Raspberry Pi zugreifen

Zum Zeitpunkt der Erstellung dieses Artikels gab es ein Problem beim Aufbau einer WLAN-Verbindung beim Raspberry Pi Zero 2 W mit aktuellem Raspberry OS. Abhilfe schaffen die folgenden Befehle:

sudo -i
echo "options brcmfmac feature_disable=0x2000" > /etc/modprobe.d/brcmfmac.conf
reboot

ConsolePi

Es wird entsprechend der "Automated Installation" verfahren:

  • Mit folgendem Befehl startet die Installation:
    wget -q https://raw.githubusercontent.com/Pack3tL0ss/ConsolePi/master/installer/install.sh -O /tmp/ConsolePi && sudo bash /tmp/ConsolePi && sudo rm -f /tmp/ConsolePi
    
  • Es wird der Benutzer "consolepi" angelegt, für diesen muß ein neues Paßwort eingegeben werden.
  • Die Frage nach dem Anlegen weiterer User wird verneint ("n").
  • Nach der Installation der benötigten Software kann weiter konfiguriert werden:
    • Continue in Interactive mode? (Y/N) [Y]: y
    • Configure ConsolePi to send notifications via PushBullet? (Y/N) [Y]: n
    • Enable Auto-Connect OpenVPN? (Y/N) [N]: n
    • Enable Automatic Fallback to HotSpot on wlan0? (Y/N) [Y]: y
    • What IP do you want to assign to ConsolePi when acting as HotSpot [10.110.0.1]: 10.110.0.1
    • What SSID do you want the HotSpot to Broadcast when in HotSpot mode [ConsolePi]: ConsolePi-1
    • Enter the psk used for the HotSpot SSID [ConsolePiR0cks!!]: ConsolePiR0cks!!
    • Enter the 2 character regulatory domain (country code) used for the HotSpot SSID [US]: DE
    • Do you want to run DHCP Server on eth0 (Fallback if no address as client)? (Y/N) [N]: n
    • Do you want to enable ConsolePi Cloud Sync with Gdrive? (Y/N) [N]: n
    • What user should remote ConsolePis use to connect to this ConsolePi [consolepi]: consolepi
    • Do you want to enable ConsolePi Power Outlet Control? (Y/N) [N]: n
    • Are Values Correct? (Y/N): y
    • Do you want to disable ipv6? (Y/N): n
    • Optional Packages/Tools: tftpd (evtl. auch noch cockpit, kann aber auch später nachgeholt werden)
    • Would you like to configure predictable serial port aliases now? (Y/N) [Y]: n (kann mit consolepi-addconsole nachgeholt werden)
    • A reboot is required, do you want to reboot now? (Y/N): y

Anwendung

Die zahlreichenden Anwendungsmöglichkeiten werden in der ConsolePi-Dokumentation ausführlich beschrieben. Die wichtigsten werden hier zu einem späteren Zeitpunkt vorgestellt.