Ich hab ja “aus Gründen” schon immer Firewalls hinter meinem Provider-Router laufen. Das waren immer irgendwelche Bastel-Router oder Mini-PCs mit Linux und iptables.

Eine davon war ein Banana Pi R1. Irgendwann habe ich dann gelesen, dass die Kiste vom Hardware-Design nicht so der Burner ist (zumindest nicht als Firewall) und hab sie durch was “richtiges” ersetzt. Seitdem lag das Ding eigentlich nur noch irgendwo im Weg rum.

Banana Pi R1

Oder diente als Eyecatcher. 😏

Dann hab ich für mein Labor einen VLAN-fähigen Switch gebraucht und dem Gerät noch eine Chance gegeben und OpenWRT installiert. Das läuft prima. Die Performance ist okay. Ein einfacher iperf Test sagt, dass ca. 940 Mbps durch den Switch gehen, was für den Einsatzzweck absolut in Ordnung ist.

Apropos Einsatzzweck: Der Banana Pi R1 ist echt alt und aufgrund der oben beschriebenen Design-Fehler nicht für den produktiven Einsatz als Router/Firewall geeignet. Als Switch für die “Werkstatt” kann man ihn schon gebrauchen. Aber nur, wenn man so ein Teil noch rumliegen hat. Neu gibt’s den nicht mehr.

Grundlagen

Die Konfiguration war nicht ganz einfach, aber das lag wohl eher daran, dass ich ein bisschen gebraucht habe, bis ich als “Oldscool-Netzwerker” die Logik hinter DSA verstanden hatte.

Hätte ich das Youtube-Video vom Marc Ahlgrim vorher geschaut, hätte ich mir viel Brainfuck erspart.

Serielle Konsole

Man braucht einen USB-Zu-Seriell-Adapter, an den man Kabel stecken kann. Bei Amazon gibt’s den von DSD Tech. Der funktioniert problemlos mit allen relevanten Betriebssystemen. Wen keines vorhanden, ein USB Verlängerungskabel mitbestellen.

Als Terminal-Programm nimmt man unter Windows Putty, unter Linux Minicom und unter MacOs “Serial”.

Das Terminal auf 115200/8/N/1 mit vt100 Emulation einstellen. Pin-Belegung am Banana Pi:

Banana Pi R1 Pinbelegung

Quelle: Banana Pi Warehouse.

Bitte RX/TX von J13 und Masse (GND) von J12 nehmen. Also das TX-Kabel vom USB-Adapter auf J13, Pin 1 (RX) am Banana Pi, RX auf Pin 2 (TX) und GND auf den GND-Pin von J12.

Image backen und booten

Am PC dann das OpenWRT Image für den Banana Pi R1 (aktuelle Version: 22.03.2) herunterladen und auf eine nicht allzu große MicroSD Karte (ich hatte noch eine 4GB Karte rumliegen, es geht aber auch deutlich schlanker) backen. Dafür kann ich (für Windows) Balena Etcher empfehlen. Bei Linux oder Macos braucht man das nicht zwingend, da gibt’s dd. Wenn man das nicht kennt oder nicht verwenden will, gibt’s Etcher auch für beide Plattformen.

Das Kärtchen in den Router stecken, serielle Konsole anschließen, Terminal-Software und Banana Pi starten, also Strom anschließen.

Basis-Konfiguration

Wenn alles richtig gesteckt ist, sieht man ein paar Meldungen und dann einen root-Prompt. Für den User root ist Standardmäßig kein Passwort vergeben, deswegen hier erst einmal eines setzen (Befehl “passwd”). Im nächsten Schritt können die Dienste abgeschaltet werden, die man auf einem Switch nicht braucht: Firewall, DHCP/DNS Server und Web Interface:

service firewall disable
service uhttpd disable
service dnsmasq disable

Dann die Systemkonfiguration in /etc/config/system anpassen. Als Editor gibt es unter OpenWRT standardmässig nur vi. Was in meinen Augen gar nicht schlimm ist, aber wenn man da noch nicht mit gearbeitet hat, ist das erst mal schwierig. Es gibt eine sehr schöne Kurzanleitung von der TU Chemnitz, da werden alle für den Alltag relevanten Befehle beschrieben.

Zurück zum Thema: Die Systemkonfiguration mit vi /etc/config/system öffnen und anpassen:

config system
        option hostname 'bpi'
        option 'zonename' 'Europe/Berlin'
        option 'timezone' 'CET-1CEST,M3.4.0,M10.5.0/3'
        option ttylogin '0'
        option log_size '64'
        option urandom_seed '0'

config timeserver 'ntp'
        option enabled '1'
        option enable_server '0'
        list server '192.168.10.1'

Hostnamen und IP-Adresse muss man natürlich an seine eigenen Gegebenheiten anpassen!

Netzwerk-Konfiguration

Die Netzwerk-Konfiguration liegt in /etc/config/network. Als Uplink-Interface dient der WAN-Port. Auf dem liegt das Management-Netz (VLAN 10, 192.168.10.0/24) untagged und die “produktiven” VLANs 11 und 12 getaggt.

Der Uplink-Port ist auch das einzige Interface mit IP-Adresse, die braucht man für die Administration aus dem LAN, weil man ja nicht ständig das serialle Kabel da dran hängen lassen will. Außerdem wird das Gerät zumindest bei mir mit einem Monitoring Tool (CheckMK) überwacht, was auch nur per IP geht.

Auf die Ports lan1 bis lan4 kommt entweder VLAN 11 oder 12 untagged. Da kann man dann seine Geräte anschließen.

config interface 'loopback'                                                                         
        option device 'lo'                                                                          
        option proto 'static'                                                                       
        option ipaddr '127.0.0.1'                                                                   
        option netmask '255.0.0.0'                                                                  

config device                                                                                       
        option name 'br0'                                                                           
        option type 'bridge'                                                                        
        list ports 'wan'                                                                            
        list ports 'lan1'                                                                           
        list ports 'lan2'                                                                           
        list ports 'lan3'                                                                           
        list ports 'lan4'                                                                           

config bridge-vlan                                                                                  
        option device 'br0'                                                                         
        option vlan '10'                                                                           
        list ports 'wan:u*'                                                                         

config bridge-vlan                                                                                  
        option device 'br0'                                                                         
        option vlan '11'                                                                           
        list ports 'wan:t'                                                                          
        list ports 'lan4:u*'                                                                        

config bridge-vlan                                                                                  
        option device 'br0'                                                                         
        option vlan '12'                                                                           
        list ports 'wan:t'                                                                          
        list ports 'lan1:u*'                                                                        
        list ports 'lan2:u*'                                                                        
        list ports 'lan3:u*'                                                                        

config interface 'wan'                                                                              
        option device 'br0.10'                                                                     
        option proto 'static'                                                                       
        option ipaddr '192.168.10.11'                                                              
        option netmask '255.255.255.0'                                                              
        option gateway '192.168.10.1'                                                              
        option dns '192.168.10.1'                                                                  

config interface 'lan1'                                                                             
        option device 'br0.12'                                                                     

config interface 'lan2'                                                                             
        option device 'br0.12'                                                                     

config interface 'lan3'                                                                             
        option device 'br0.12'                                                                     

config interface 'lan4'                                                                             
        option device 'br0.11'                    

Die Portbelegung ist (von vorne gesehen): [lan4][lan3][lan2][lan1] [wan]

Natürlich brauchst Du als “Core-Switch” einen Switch, der VLANs und Trunking beherrscht. Gut und günstig sind die kleinen OfficeConnect Switches von HPE. Noch besser gefallen mir persönlich die Switches von Mikrotik, aber da musst Du dann erst mal ein bisschen lesen, da reicht’s nicht so ein bisschen in nem Web Interface rumzuklicken.

Und natürlich musst Du die verwendeten Adressen und VLANs auf Deine Umgebung anpassen. Aber wenn Du das bis hier hin geschafft hast, sollte das kein Problem mehr sein.

Los geht’s

Wenn alles fertig konfiguriert ist, das System mit “reboot” neu starten. Das wäre dann einsatzbereit.