{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreieuccxokpzdaiqxvhbbxvvveqf6clfhag6i5kxlz2fqzhls6fbiyi",
"uri": "at://did:plc:nkxz2ojdvmieg2nhphvputvp/app.bsky.feed.post/3mmc4qgng52n2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreie5iv2u422dngd4oeex2ldy7bppr5zc3s6wot5rzfr6suwfwyrijq"
},
"mimeType": "image/png",
"size": 1040273
},
"description": "Wir haben 2026. Alles wandert in die Cloud. Trotzdem will ich heute über serielle Konsolen schreiben. Klingt retro, ist es aber nicht. Wenn ein Switch sich verkonfiguriert hat und das Netzwerk weg ist, hilft kein Ansible und kein Dashboard in der Cloud. Dann hilft nur noch der serielle Konsolenport. Out-of-Band Management ist nicht tot. Es wurde nur teuer verpackt.\n\nKommerzielle Konsolenserver kosten gerne vierstellig. Oder man nimmt einen Raspberry Pi der noch herum liegt und auf eine neue […]",
"path": "/2026/03/08/raspberry-pi-als-serieller-konsolenserver/",
"publishedAt": "2026-05-20T14:32:55.000Z",
"site": "https://www.kernel-error.de",
"tags": [
"Hardware",
"Linux",
"Netzwerk",
"RaspberryPi",
"USB",
"ser2net",
"stunnel",
"conserver",
"Kontaktseite",
"DHT22 am Raspberry Pi"
],
"textContent": "Wir haben 2026. Alles wandert in die Cloud. Trotzdem will ich heute über serielle Konsolen schreiben. Klingt retro, ist es aber nicht. Wenn ein Switch sich verkonfiguriert hat und das Netzwerk weg ist, hilft kein Ansible und kein Dashboard in der Cloud. Dann hilft nur noch der serielle Konsolenport. Out-of-Band Management ist nicht tot. Es wurde nur teuer verpackt.\n\nKommerzielle Konsolenserver kosten gerne vierstellig. Oder man nimmt einen Raspberry Pi der noch herum liegt und auf eine neue Aufgabe wartet (ich habe hier ein paar Pi1 oder 2 herum liegen). Zusammen mit zwei USB Serial Adaptern hat man für unter 50 Euro einen Konsolenserver mit acht Ports. Das reicht für die meisten Setups locker aus.\n\n### Wofür ein Konsolenserver\n\nDer klassische Fall: Ein paar Switches im Rack, jedes Gerät hat einen seriellen Konsolenport. Im Normalbetrieb konfiguriert man über das Netzwerk. Aber wenn mal eine falsche Route das Management Interface unerreichbar macht oder ein VLAN Umbau schiefgeht, steht man vor dem Gerät und steckt ein Kabel rein. Wenn das im DC in Frankfurt ist, oder vielleicht irgendwo in China, dann kann das spannend werden.\n\nOder man hat vorgebaut.\n\nEin Konsolenserver hängt permanent an den seriellen Ports der Netzwerkgeräte. Man kommt per SSH auf den Konsolenserver und von dort auf die serielle Konsole des Zielgeräts. Ob das Netzwerk funktioniert oder nicht, spielt keine Rolle mehr. Öhm also ja, so grob. Der Pi sollte dann ja schon noch erreichbar sein. Aber man hat ja in einem entfernten DC auch eine Dailin Line oder ähnliches, richtig? Richtig?\n\n### Hardware\n\n**Ein Raspberry Pi.** Es muss kein aktuelles Modell sein. Selbst ein alter Pi 2 reicht völlig aus. Das Ding muss `ser2net` laufen lassen und ein paar serielle Ports bedienen, dafür braucht man keinen Quad Core mit 8 GB RAM. Der Pi aus der Schublade bekommt endlich eine sinnvolle Aufgabe.\n\n**FTDI Quad Port USB Serial Adapter** (Vendor `0403`, Product `6011`). Pro Adapter bekommt man vier serielle Ports. Mit zwei Adaptern hat man acht Ports. Die Dinger gibt es für kleines Geld.\n\n**RS232 Kabel** zu den Console Ports der Netzwerkgeräte. Welcher Stecker passt, hängt vom Hersteller ab. RJ45 auf DB9, DB9 auf DB9, die üblichen Verdächtigen. Da muss man schauen was die eigenen Geräte mitbringen.\n\n### Stabile Gerätenamen mit udev\n\nDas erste Problem nach dem Einstecken der USB Adapter: Linux vergibt die `/dev/ttyUSBx` Nummern nach Lust und Laune. Nach einem Reboot kann `ttyUSB0` plötzlich `ttyUSB4` sein. Wenn man wissen will welcher Port an welchem Gerät hängt, ist das unpraktisch.\n\nDie Lösung sind udev Regeln. Jeder FTDI Adapter hat eine eigene Seriennummer. Die findet man so:\n\n\n udevadm info -a -n /dev/ttyUSB0 | grep serial\n\nDamit baut man sich Regeln die stabile Symlinks erzeugen. Datei `/etc/udev/rules.d/99-serial-consoles.rules`:\n\n\n SUBSYSTEMS==\"usb\", ENV{.LOCAL_ifNum}=\"$attr{bInterfaceNumber}\"\n SUBSYSTEM==\"tty\", ATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6011\", ATTRS{serial}==\"FT000001\", SYMLINK+=\"quad0-%E{.LOCAL_ifNum}\"\n SUBSYSTEM==\"tty\", ATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6011\", ATTRS{serial}==\"FT000002\", SYMLINK+=\"quad1-%E{.LOCAL_ifNum}\"\n\n`FT000001` und `FT000002` ersetzt man durch die echten Seriennummern der eigenen Adapter. Das Ergebnis sind stabile Symlinks: `/dev/quad0-00` bis `/dev/quad0-03` für den ersten Adapter, `/dev/quad1-00` bis `/dev/quad1-03` für den zweiten. Acht Ports, immer gleich benannt. Egal wie oft man den Pi neustartet.\n\n### ser2net\n\nser2net bildet die seriellen Ports auf TCP Ports ab. Man kann dann per Telnet auf einen bestimmten Port zugreifen und landet direkt auf der seriellen Konsole des zugehörigen Geräts. Installieren mit `apt install ser2net`, dann die Konfiguration in `/etc/ser2net.conf`:\n\n\n localhost,2001:telnet:600:/dev/quad0-00:9600 8DATABITS NONE 1STOPBIT banner\n localhost,2002:telnet:600:/dev/quad0-01:9600 8DATABITS NONE 1STOPBIT banner\n localhost,2003:telnet:600:/dev/quad0-02:9600 8DATABITS NONE 1STOPBIT banner\n localhost,2004:telnet:600:/dev/quad0-03:9600 8DATABITS NONE 1STOPBIT banner\n localhost,2005:telnet:600:/dev/quad1-00:9600 8DATABITS NONE 1STOPBIT banner\n localhost,2006:telnet:600:/dev/quad1-01:9600 8DATABITS NONE 1STOPBIT banner\n localhost,2007:telnet:600:/dev/quad1-02:9600 8DATABITS NONE 1STOPBIT banner\n localhost,2008:telnet:600:/dev/quad1-03:9600 8DATABITS NONE 1STOPBIT banner\n\n9600 8N1 ist der Standard bei den meisten Netzwerkgeräten. Falls ein Gerät eine andere Baudrate braucht, passt man die entsprechende Zeile an. Der Timeout von 600 Sekunden trennt die Verbindung nach zehn Minuten Inaktivität. Das verhindert dass ein vergessenes Telnet die Konsole dauerhaft blockiert.\n\n### Direkter Zugriff mit minicom\n\nWer `ser2net` nicht nutzen will oder schnell direkt auf einen Port muss, nimmt minicom:\n\n\n minicom -D /dev/quad0-00 -b 9600\n\nminicom ist gut für schnelle Tests und Debugging. Für den Dauerbetrieb mit mehreren Ports gleichzeitig ist `ser2net` die bessere Wahl.\n\n### Warum localhost\n\n`ser2net` ist im gezeigten Setup bewusst auf `localhost` gebunden. Man muss sich erst per SSH auf den Pi einloggen und dann `telnet 127.0.0.1 200x` aufrufen. Das ist Absicht.\n\nMan könnte `ser2net` auch auf `0.0.0.0` binden und die Ports direkt aus dem Netz erreichen. Davon rate ich ab. Telnet ist unverschlüsselt. Auch in einem Management VLAN hat das nichts verloren.\n\n**Bessere Alternativen wenn man ohne SSH auf den Pi will:**\n\n * `ser2net` ab Version 4.x unterstützt SSL/TLS. Damit hat man verschlüsselte Verbindungen direkt zu den Console Ports.\n * stunnel vor `ser2net` schalten. stunnel terminiert TLS und reicht die Verbindung an den lokalen `ser2net` weiter.\n * Wer nativen SSH Zugriff direkt auf die seriellen Ports braucht, sollte sich conserver anschauen. `ser2net` kann kein SSH.\n\n\n\nFür die meisten Setups ist SSH auf den Pi und dann Telnet auf localhost der einfachste und sicherste Weg.\n\n### Absichern\n\nEin paar Dinge die man auf dem Pi noch machen sollte:\n\nDen Default Benutzer `pi` löschen. Einen eigenen Benutzer anlegen. SSH Key Authentifizierung einrichten und Login per Passwort deaktivieren. Das ist nicht optional.\n\nNTP konfigurieren. Timestamps in Logs sind nutzlos wenn die Uhrzeit nicht stimmt.\n\nSyslog an einen zentralen Logserver weiterleiten. Wenn man serielle Konsolen mitschneidet, will man die Logs nicht nur lokal auf dem Pi haben.\n\n### Workflow\n\nDer Alltag sieht dann so aus:\n\n 1. SSH auf den Pi: `ssh admin@10.0.0.50`\n 2. Telnet auf den gewünschten Port: `telnet 127.0.0.1 2003`\n 3. Man landet auf der seriellen Konsole von Switch 3\n\n\n\nAlternativ direkt mit minicom: `minicom -D /dev/quad0-02 -b 9600`\n\nZum Trennen: `Ctrl-]` und dann `quit` bei Telnet. `Ctrl-A` gefolgt von `X` bei minicom.\n\n### Fazit\n\nEin alter Raspberry Pi, zwei USB Adapter, ein paar Kabel. Mehr braucht man nicht für einen funktionierenden Konsolenserver mit acht Ports. Die Einrichtung dauert vielleicht eine Stunde. Danach läuft das Ding und man muss nie wieder ein Konsolenkabel quer durch den Serverraum schleppen.\n\nUnd der alte Pi aus der Schublade hat endlich wieder eine Aufgabe.\n\nIhr habt Fragen, Anmerkungen oder baut das Setup selbst nach? Meldet euch gerne über die Kontaktseite oder direkt per E-Mail.\n\nSiehe auch: DHT22 am Raspberry Pi",
"title": "Raspberry Pi als serieller Konsolenserver"
}