Netzwerk-Bridge unter Linux mit TUN/TAP

Seit längerem trage ich bereits das Projekt in meinem Kopf herum, einen Mainframe-Computer der VAX-Reihe von Digital Equipment Corporation (kurz DEC) zu emulieren und auf diesem emulierten System wiederum das auch von DEC dazu entwickelte ‚Virtual Memory System‘ (kurz VMS später OpenVMS) als Betriebssystem zu installieren um damit ein wenig herum zu spielen. Ich habe aber bereits NetBSD, das ebenfalls von DEC entwickelte und proprietäre Unix Ultrix, als auch OpenVMS auf die emulierte Maschine kurz installiert. Nur waren diese Unternhmungen eher halbherzig, denn eine wichtige Komponente hatte ich bisher nie mit einbezogen. Nämlich die Netzwerkfähigkeit eines dieser Systeme. Ohne Netzwerk ist so eine emulierte Maschine zwar schön zum anschauen und herum probieren, aber sie verharrt weiterhin als eine Art Insellösung, wie früher, als die Computer in den häuslichen Wohnstuben noch nicht mit einem (Drahtlos-) Netzwerk verbunden waren und selbst das Internet mittels eines Modemzugangs noch teuer und keine Selbstveständlichkeit waren. Erst die Kommunikation von Computern untereinander macht sie flexibel und nochmals interessanter. Mit einer Netzwerkanbindung lassen sich Betriebssystem und Programme updaten oder gar upgraden, Dateien und Nachrichten hin und her übertragen und eigene Dienste anbieten.

Die Möglichkeit der Netzwerkkonnektivität ist aus meiner Sicht zumindest bei der Desktop-Virtualisierung eine recht einfache Sache. Denn die VMWare’s, Parallels und VirtualBox’es dieser Welt richten während ihrer Installation eine Netzwerkbridge in Software für das Wirtssystems automatisch mit ein, da sie die nötigen Treiber bereits mitbringen. So kann für eine virtuelle Maschine der Bridge-Modus zum direkten Zugriff auf ein physikalisches Netz, ein geteiltes Subnet mit NAT für mehrere virtuelle Maschinen untereinander oder eine Peer-To-Peer Verbindung zum Wirtssystem angeboten werden.

Bei der Emulationssoftware simh ist das etwas anders. Das Programm bringt keinen eigenen Treiber für eine Netzwerkbridge mit. Das Programm selber ist zwar netzwerkfähig, aber es ist nötig einen virtuellen Netzwerk-Kernel-Treiber wie TUN/TAP zu installieren, um die Netzwerkgeräte zu simulieren.

TUN simuliert dabei ein Ende-zu-Ende-Netzwerkgerät (ISO OSI-Schicht 3) und kommuniziert mit IP-Paketen mit der Software, während TAP eine Punkt-zu-Punkt-Verbindung mittels Ethernet-Gerät simuliert (ISO OSI-Schicht 2) und über Ethernet-Frames mit der Software kommuniziert.

In meinem DokuWiki habe ich einen ersten Workaround zur Erstellung einer Netzwerk-Bridge unter Linux mit TUN/TAP erstellt.:
Netzwerk-Bridge mit TUN/TAP für eine Computer-Emulation

Links:
TUN/TAP (engl. Wikipedia)
TUN/TAP (Projektseite auf source forge)
SIMH (dt. Wikipedia)
DEC VAX (engl. Wikipedia)
DEC OpenVMS (engl. Wikipedia)
Ultrix (engl. Wikipedia)
NetBSD (dt. Wikipedia)

Teletext auf dem Raspberry Pi generieren

Im Herbst 2018 veröffentlichte der Heise-Verlag zum ersten Mal das Sonderheft c’t-Retro. Neben den Themen zu alten Computern wie den ZX Spectum oder Commodore C64 sowie anderen Technik-Bereichen der IT aus der Sicht längst vergangener Tage, hatten die Redakteure ein Raspberry Pi Projekt vorgestellt, mit dem es möglich ist, selber den Fernseh-Teletxt zu erstellen und auszugeben.

Teletext, hier in Deutschland eher unter dem Begriff Videotext bekannt, ist ja das textuelle Zusatzangebot der Fernsehsender für die eigenen Programminformationen, sowie aktuelle Sportergebnisse und Nachrichten. Übertragen wird der Teletext mit dem PAL-Normsignal in der Austastlücke.

Zum Nachbau des Projektes braucht es nicht viel an Hardware. Glücklicherweise habe ich noch einen Raspberry Pi der ersten Generation mit einer Buchse für den Composite Video Cinchstecker. – Die neueren Generationen haben statt der Chinchbuchse nur einen GPIO-Pin für die analoge Videoausgabe. Mein elektronischer Aufbau ist daher recht übersichtlich.:

Am Composite-Ausgang des Raspberry Pi’s geht ein Chinchkabel auf den Adapter für S-Video und Composite meines Elgato TV-Hybrid DVB-T USB-Sticks. Der DVB-T Stick ist also der „Fernseher“, der mit seiner Fernseh-Software EyeTV das PAL-Signal wieder als Bild ausgibt.
Der Raspberry Pi selber besitzt in seiner jetzigen finalen Aufbaustufe eine SD-Karte mit einem Respbian-Linux für die Teletext-Software und einen kleinen USB-WiFi-Dongel, um sich auf ihn über W-LAN zu administrativen Zwecken mittels SSH verbinden zu können.

Ist der Raspberry Pi so konfiguriert, dass die Bildschirmausgabe über das PAL-Signal an den „Fernseher“ geht und eine USB-Tastatur direkt am Raspberry Pi angeschlossen ist, dann fällt direkt die enorme Latenz auf, die durch den analogen Umweg entsteht. Ist der Raspberry Pi über seinen HDMI-Ausgang an einem gewöhnlichen Computerbildschirm angebunden, besteht die enorme Latenz nicht.
Wird dann der Teletext-Dienst VBit2 gestartet, so ist über die Teletext-Taste des „Empfangsgerätes“ der Videotext, der aus den vorinstallierten Tafeln besteht, zu sehen und es lässt sich wie bei den klassischen Fernsehsendern durch ihn hindurch navigieren.
Es gibt aber bereits eine Teletext-Tafel, in der die Temperatur des ARM-Chips und die lokale IP-Adresse des Rasperry Pi’s ausgelesen und angezeigt werden.
Die c’t-Redaktion hatte sich dann entsprechende Tafeln erstellt, mit denen die Meldungen und Nachrichten aus dem Heise-Newsticker als Teletxt abgerufen werden können.

In meinem Wiki habe ich eine entsprechende Installationsanleitung erstellt, wie die Software VBit2 auf dem Raspbian zu installieren ist.
Link: http://sommteck.net/wiki/doku.php?id=linux:vbit2_teletext-generator

Sobald ich meine ersten eigenen Gehversuche bei dem Erzeugen eigener Teletext-Tafeln erfolgreich durchschritten habe, werde ich dazu ein Update schreiben.

Update 05. April 16:05 Uhr:

Von der genannten Teletext-Tafel, in der die Temperatur des ARM-Chips und die lokale IP-Adresse des Rasperry Pi’s ausgelesen und angezeigt werden kann, gibt es natürlich auch ein Foto. Ich habe alle Bilder in einer eigenem Album.:
Link Fotoalbum VBit2

Links:
Heise c’t-Artikel: Teletext auf dem Raspberry Pi generieren
Links Teletext auf dem Raspberry Pi generieren
Projekt Heise Raspi Newstext (Github)
Teletext Page Editor im Browser
Teletext (dt. Wikipedia)
Raspberry Pi (dt. Wikipedia)
Composite Video (dt. Wikipedia)
Geniatech EyeTV (ehemals Elgato)

Kurzeinstieg zum ed-Editor

Nachdem ich vor ungefähr 11 bis 12 Jahren begann, mich mit der Bedienung des Texteditors vi für BSD-Unix und Linux anzufreunden, ist dieser auf einer Shell inzwischen auch für mich der Texteditor erster Wahl. Im Kontext einer Linux User Group hatte ich bereits damals mitbekommen, dass dieser Texteditor – sowie dessen weiterentwickelter Nachfolger vim – bei durchaus langjährigen Linux-Anwendern beziehungsweise -Administartoren sehr geschätzt wird, während Neulinge durch das ungewohnte Bedienungskonzept eher erst einmal irritiert und verschreckt reagieren und ihn dann mit Unverständnis begegnen.
Es ist durchaus interessant zu wissen, dass der vi zu einer Zeit entwickelt wurde, in der Computererminals mit einer Tastatur ausgestattet waren, die im Umfang an verfügbaren Tasten noch Schreibmachinen glichen und es eben noch keine Cursor-Tasten gab, um im Text zeilen- und spaltenweise den Cursor zu navigieren. Er arbeitet stattdessen kontextbasiert. Mit einem Befehlsmodus, einem Einfügemodus, bei dem der Text direkt bearbeitet werden kann, sowie dem Kommandozeilenmodus.

Zur Zeit beschäftige ich mich zunehmend mal mit Unix-Versionen, die inzwischen einen historischen Status genießen. Bei diesen ist zum einen vermutlich aus Speicherplatzgründen des Installationsmediums, und in einem anderen Fall auf Grund des enormen Alters der Unix-Version, kein vi vorhanden und stattdessen als einziger Texteditor der ed verfügbar.

Bei dem ed handelt es sich auch wie beim vi um einen kontextbasierten Texteditor. Allerdings arbeitet Dieser nicht Seitenbasiert mit den Text-Dateien, sondern nur zeilenorientiert. Das liegt daran, dass er natürlich älter als der vi ist, und zu einer Zeit Anfang der 1970er Jahre von Ken Thompson mit Unix mit entwickelt wurde, als die Programmierer die Computer noch mit einem Fernschreiber als Ein- und Ausgabegerät bedienten und noch keine elektrischen Bildschirmterminals zur Verfügung standen, die Dateien seitenweise ausgeben konnten.

Vor vielen Jahren bin ich dann beim Durchstöbern des Internets auf eine ISO-Datei gestoßen, die für einen normalen PC bootfähig ist und einen etwa 10 Megabyte großen Emulator zur Ausführung des ‚Unix Time-Sharing System Seventh Edition (V7)‘ vom Januar 1979 beinhaltet. Bei dem Emulator habe ich dann damals recht schnell wieder das Handtuch geworfen, weil ich trotz meiner bereits bestenenden Erfahrung hinsichtlich der Bedienung des vi’s zusätzlich nur mit der zeilenweisen Ausgabe einer Textdatei nicht zurecht kam.

Vor ein paar Tagen habe ich schließlich noch einmal einen Versuch erfolgreich gestartet und mich mit den wichtigsten Befehlen – beziehungsweise dessen Kommandozeilenmodus vertraut gemacht. Als Einstieg hat mir dabei auch der Beitrag „Eine Anleitung für Anfänger zur Verwendung des ed Editor unter Linux“ des Blog’s HowtoForge geholfen.

Die wichtigsten Kommandos und Befehle habe ich mir auch noch einmal zusätzlich in eine eigen kleine Tabelle ins Wiki gestellt.
Link: – Kurzübersicht ed Editorkommandos (eigenes Wiki)

Weitere Links:
Ersterfahrungen mit NetBSD (Blog-Artikel vom 25. Oktober 2008)
Texteditor vi (dt. Wikipedia)
Texteditor vim (dt. Wikipedia)
Texteditor ed (dt. Wikipedia)
Eine Anleitung für Anfänger zur Verwendung des ed Editor unter Linux (HowtoForge)

Grundkonfiguration vom DHCP-Client unter (Debian-) Linux

Im Schnitt passiert es mir ungefähr einmal im Jahr, dass ein Datenträger mit einer Linux-Installation denn Computer wechselt. Auch wenn dabei bei allen betroffenen Systemen eine dynamische Zuordnung der IP-Adressen in den Netzwerken stattfindet, ist das Problem, dass das Linux – im meinen Fällen Debian-Derivate – die Schnittstelle an der festen MAC-Adresse des Ursprungssystem fest macht. Ergo ist nach dem Einbau des Datenträgers im neuen Host trotz aktiviertem DHCP-Client erst einmal keine Verbindung mit dem Netz möglich. Es muss wieder dazu gebracht werden, eine neue IP-Adresse vom DHCP-Server anzufordern.

Dazu Anlass für mich genug, meine Linux-Grundkenntnisse um die Lektion der manuellen Grundkonfiguration einer Netzwerkschnittstelle auszubauen.

Link zum eigenen Wiki-Eintrag Grundkonfiguration DHCP-Client

SSH-Audit

Jemand hat sich mal hingesetzt und eine Sammlung an Python-Skripten geschrieben, mit dem sich ein SSH-Server auf die verwendete Version, den Algorithmen und Sicherheitsinformationen abklopfen lässt, sowie die dazu passenden Empfehlungen ausgibt. Das Programm ist auf GitHub verfügbar und mit Python 2.6, Python 3.x und PyPy kompatibel.

ssh-audit

Link: https://github.com/arthepsy/ssh-audit