Software Berater Logo Software Berater #neuland seit 1993

Neue Firewall-Hardware

Manche würden vielleicht sagen, ich wär ein lächerlicher, kleiner Kontrollfreak. Weil mir die Router, die mir Telekom, Unitymedia oder Vodafone zur Verfügung stellen, eher suspekt sind. Was tun die Dinger, wenn ich nicht hinsehe? Was ermöglichen die, was steckt da drin? Wie dem auch sei, ich lege schon seit langem Wert darauf, eigene Router zu verwenden. Da kann ich im Zweifel den Code einsehen, jede Einstellung verändern und genau im Blick behalten, wem welche Türe offen steht.

Kann man eine Firewall lieben? Als die m0n0wall rauskam, war ich jedenfalls schwer verliebt. M0n0wall ist eine schlanke, simple und dennoch vollkommen ausreichende Router-Lösung auf FreeBSD-Basis. Das Projekt von Manuel Kasper war bis zu seiner Einstellung 2015 meine bevorzugte Firewall. Die m0n0wall braucht nur sehr wenig Ressourcen und kann auf winziger Hardware bis zu 100 Mbit Routing abbilden. Meine ersten Appliances waren daher ALIX-Boards von PC Engines.

m0n0wall Appliance, von Deciso

Als das M0n0wall-Projekt dann beendet wurde, bin ich der Empfehlung des Autors gefolgt und habe OPNsense eingesetzt. Gerade im Vergleich zum verwandten Tool pfSense erscheint mir OPNsense moderner, schneller in der Entwicklung und die Community dahinter schlicht freundlicher.

In dem Maß, in dem meine WAN-Verbindung schneller wurde (von 18MBit, 50MBit über 150/200/400 bis heute 1GBit) stiegen auch die Anforderungen an den Router. Die ALIX-Boards haben nur 10/100-Ethernetports, klar, dass man damit nicht mehr als 100MBit Traffic schaufeln kann. Da waren die APU2-Boards von PC Engines eine willkommene Leistungssteigerung. 1GHz Quad-Core AMD CPU, bis zu 4 Intel i21x Gigabit NICs, bis zu 4GB RAM… da lacht das Netzwerkerherz. Bis zu meiner 400 Mbit WAN Verbindung war damit alles gut. Wenn man keine rechenintensiven IPSEC-VPN betreiben möchte, reicht eine solche APU2 vollkommen aus.

Und dann kam das 1-Gigabit-Angebot von Unitymedia/Vodafone. Nicht nur, dass FreeBSD seit einiger Zeit Probleme mit der Netzwerkperformance hat (hier oder hier oder hier) auch die CPU und IO-Fähigkeit der kleinen APU2 Kisten stößt an ihre Grenzen. Mehr als 600MBit habe ich aus der WAN-Verbindung nicht herausholen können. Was also als nächstes? Meet the Yanling NUC.

Yanling NUC J3160

Diese kleinen Kisten (ca 13 ⨉ 13 ⨉ 4cm) basieren auf einem Intel Celeron J3160 4-core Prozessor mit 1.6 GHz Takt (Burst bis 2.24GHz), der nur 6W Leistung aufnimmt. Beim freundlichen China-Versand habe ich für die Version mit 32GB SSD und 4GB RAM seinerzeit weniger als 150 EUR bezahlt. Und was soll ich sagen? OPNsense rennt wie bekloppt, ich sehe bis zu 970 MBit effektive Routerleistung LAN→WAN. Dabei bleibt die CPU-Last minimal, die CPU-Temperatur bei 45-49 Grad Celsius und das Gehäuse außen handwarm.

OPNsense Dashboard

Ich konnte sogar das originale AMIBIOS gegen coreboot tauschen, da die 4-port Vaults von Protectli auf der gleichen Hardware beruhen: Hier die Anleitung zum Upgrade des Bios.

Zum Upgrade muss man sich per SSH ssh root@<firewall-ip> oder per serieller Konsole verbinden. Nach der Anmeldung per SSH wechselt man per Option 8 auf eine root-Shell. Bei mir schaut das dann so aus:

# Hier ist natürlich der jeweils aktuelle Link einzusetzen
$ curl -o fw4b_v4.12.0.7.rom_.zip https://protectli.com/wp-content/uploads/2021/10/protectli_fw4b_v4.12.0.7.rom_.zip
...
$ unzip fw4b_v4.12.0.7.rom_.zip
...
$ flashrom -p internal -w protectli_fw4b_v4.12.0.7.rom --ifd -i bios
flashrom v1.2 on FreeBSD 12.1-RELEASE-p20-HBSD (amd64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 4, resolution: 1ns).
coreboot table found at 0x7cd30000.
Found chipset "Intel Braswell".
Enabling flash write... Warning: Setting Bios Control at 0x0 from 0x0b to 0x09 failed.
New value is 0x0b.
SPI Configuration is locked down.
OK.
Found Macronix flash chip "MX25U6435E/F" (8192 kB, SPI) mapped at physical address 0x00000000ff800000.
Reading ich descriptor... done.
Using region: "bios".
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.

Nach der Meldung VERIFIED muss man das System einmal komplett aus- und wieder einschalten, um das neue BIOS zu aktivieren.

Update: Auch Heise lobt den Yanling NUC-C3 im Test. Bis heute kann ich berichten, dass die kleine schwarze Kiste ganz problemlos läuft.

Meine OPNsense Tunables

Die “Tunables” sind sysctl-Einstellungen für FreeBSD, die man in OPNsense auch über die Standard-Oberfläche pflegen kann (System→Settings→Tunables). Ich verwende folgende Einstellungen abseits der Defaults:

# No ICMP redirects
net.inet.ip.redirect = 0

# A speedup of 40 to 60% in packet forwarding performance!
net.inet.ip.fastforwarding = 1

# Disable hardware flow control, CPU is faster
dev.igb.0.fc = 0
dev.igb.1.fc = 0
dev.igb.2.fc = 0
dev.igb.3.fc = 0

# The OS buffer / backlog queue depth for accepting new TCP connections
kern.ipc.somaxconn = 1024

# Loopback interface tuning
net.inet.tcp.nolocaltimewait = 1

## IPv6 Security
# Disable Node info replies
net.inet6.icmp6.nodeinfo = 0
# Disable IP/ICMP redirect
net.inet6.icmp6.rediraccept = 0
net.inet6.ip6.redirect = 0

Gerade die Settings der Hardware-Flusskontrolle haben den Durchsatz auch auf der APU2 massiv erhöht. Auf dem AMD SoC der APU2 kann man zudem die Meltdown-Patches deaktiveren:

vm.pmap.pti = 0

Ergebnis ist ein schnelles Routersystem mit hohem Durchsatz und excellenter Opensource-Credibility. Danke, OSS-Community!