Motivation
OpnSense
Konfiguration OpnSense
- Wir empfehlen, DNSmasq anstelle von Unbound zu verwenden, weil damit lokal vergebene DNS-Namen und Aliases genutzt werden können.
- Beim Einsatz von LAN-Bridges immer in den Tunables "net.link.bridge.pfil_bridge = 1" und "net.link.bridge.pfil_member = 0" setzen - dann rebooten. Wir benötigten die LAN-Bridge, um den entfallenen 10-GBit-Port zu ersetzen.
- Beim Einsatz von LAN-Bridges gilt: Die VLANs müssen auf den Member-Interfaces definiert werden, nicht auf der Bridge. Will man dann ein VLAN bridgen, benötigt man dafür eine separate Bridge.
- Eine Bridge hat per Default eine künstlich erzeugte MAC und normalerweise keine IPv6 Link Local Adresse. Man kann diese an der Bridge aktivieren.
- Für IPv6 sollte man die IPv6-Einstellungen der Interfaces auf "Track Interface" einstellen und in den Router Advertisements "Unmanaged" mit Default Gateway und einer spezifischen Domain Search List senden.
- Wenn man IPv6 Link Local Adressen selbst setzen möchte oder auch Unique Local Adressen, geht das nicht in den IPv6-Einstellungen des Interfaces selbst, weil man dort nur eine IP setzen kann (gilt auch für IPv4). Der Trick ist der Bereich "Virtual IP", dort geht das.
- Falls man eine Fritzbox einsetzt: Das Weiterleiten von SIP und RTP-Ports allein reicht nicht aus, weil dann nach ein paar Minuten keine Verbindungen von außen mehr zugelassen werden und ankommende Anrufe nicht durchkommen. Man muss in der Fritzbox auf jeden Fall in den Anschlusseinstellungen unter Telefonieverbindung die Einstellung "Portweiterleitung des Internet-Routers für Telefonie aktiv halten" einschalten. Zudem muss man eine separate Regel für die Outbound NAT definieren, bei der für die Fritzbox "Static Port" gesetzt wird.
- Für IPsec-Verbindungen mit Fritzboxen müssen immer zwei Einträge angelegt werden, eine für IKE und eine für den ESP Tunnel. In den Advanced Settings findet sich ein Eintrag "Disable all auto-added VPN rules.", den man deaktiviert lassen sollte.
- Die Remote-Backup-Funktionen zu Google Drive bzw. NextCloud sind hilfreich und sollten genutzt werden.
- IGMP und MDNS können bei Bedarf als Plugins nachgeladen werden.
- Die Webproxy-Konfiguration ist etwas komplex, man muss beachten, dass es neben den Reitern noch Drop-Downs für Regeln, Matches und Proxies gibt. Damit lassen sich Regeln definieren, die in eine WPAD-Datei münden, die OpnSense dann bereitstellt. Oft muss man noch eine Neuerzeugung erzwingen, besser ist eine manuelle Kontrolle der Datei.
Dann fehlen noch zwei Bausteine: Im DHCP muss man dafür sorgen, dass WPAD aktiviert wird und man muss den Namen "wpad" in der LAN-DNS-Domäne auf die OpnSense-IP richten, damit die URL "http://wpad.XYZ/wpad.dat" erreichbar ist. - Im DHCP auf keinen Fall die Einstellung "Response delay" nutzen! Dies sorgt effektiv dafür, dass manche Clients nicht funktionieren.
- Bei IPv6-Portfreigaben hat man mit dynamischen Präfixen das Problem, dass man die resultierende IPv6 eines bestimmten Geräts nicht in eine Firewall-Regel eintragen kann. Dazu gibt es drei Tricks: Man kann 1. "This Firewall" und 2. einen Firewall-Alias, der sich auf eine MAC bezieht, als Ziel einer Regel verwenden oder 3. einen Alias vom Typ dynamische IPv6-Adresse einrichten, bei der der IPv6-Präfix eines beliebigen Interfaces vorangestellt werden kann.
- Um Bufferbloat zu vermeiden, sollten Einstellungen wie hier beschrieben verwendet werden.
- Um maximale Stromeinsparung zu erhalten, bietet es sich an, den niedrigsten C-State für alle Cores einzustellen. Standardmäßig wird nur C1 verwendet. In den Tunables kann man dev.cpu.N.cx_lowest=C3 oder C2 setzen, je nachdem, was "sysctl dev.cpu.0" als möglich ausweist.
- Für ZFS bietet es sich an, TRIM einzuschalten. Prüfen mit "zpool get autotrim", einschalten mit "zpool set autotrim=on zroot", erstmalig durchführen mit "zpool trim zroot", ansehen mit "zpool status -t". Außerdem kann man mit "zfs set recordsize=16k zroot" den Wear auf SSDs etwas reduzieren (siehe "smartctl -a /dev/nvme0").
- Bei Verwendung von Wireguard muss man darauf achten, dass die Default-MTU von 1420 Bytes u.U. geändert werden muss. Es gibt diverse Faktoren, die diese Größe weiter beschränken, z.B. IPv6 (-20 Bytes) oder PPPoE (-8 Bytes). Man kann das entweder in den erweiterten Einstellungen für die lokalen Endpunkte oder für alle Wireguard-Interfaces die MSS reduzieren (unter Firewall->Normalisation).
- Falls man IPv6 auf einem Bridge-Interface nutzen will, sollte man "Enable Link-local address" einschalten, sonst wird per radvd keine Adresse zugewiesen.
- Achtung, bei AMD 10GBit Interfaces (axgbe Treiber) funktioniert das Hardware CRC Oflloading nicht!
Nachtrag