OPNsense - Dnsmasq DHCP-Server

Aus maxTechCorner

Auf einen Blick

Gilt fürOPNsense 26.1 und 26.7 (Services → Dnsmasq DNS & DHCP, im Kern enthalten), Dnsmasq 2.93
BereichIT-Security
Dauerca. 30 Minuten (DHCPv4 mit DNS-Registrierung für mehrere Netze)
RechteAdministrator (OPNsense-WebUI)
StandOktober 2026 (OPNsense 26.7.5)

Dnsmasq in OPNsense ist seit Version 26.1 der Standard-DHCP-Server der Firewall: Er vergibt IPv4- und IPv6-Adressen, sendet Router Advertisements und registriert die Namen der Clients automatisch im DNS. Zusammen mit Unbound als Resolver entsteht so die von OPNsense empfohlene Kombination, in der jedes Gerät unter einem sprechenden Namen wie nas01.lan.internal erreichbar ist.

Dieser Artikel konzentriert sich auf DHCP mit Dnsmasq (Stand Oktober 2026): Abgrenzung zu Kea und ISC, Grundeinstellungen, DHCP-Bereiche pro VLAN, Reservierungen, DHCP-Optionen und Tags, PXE-Boot, DHCPv6 und Router Advertisements, Hochverfügbarkeit mit zwei Firewalls, DHCP-Relay sowie die Migration vom alten ISC-DHCP.

Dnsmasq, Kea oder ISC-DHCP?

Mit OPNsense 26.1 hat sich die DHCP-Landschaft geändert: ISC-DHCP ist in das Plugin os-isc-dhcp gewandert (bei Upgrades automatisch installiert, bei Neuinstallationen nicht mehr), und Dnsmasq ist nun Standard für DHCPv4, DHCPv6 und Router Advertisements.

Kriterium Dnsmasq Kea DHCP ISC-DHCP (Plugin)
Status Standard seit 26.1, im Kern im Kern Legacy, upstream nicht mehr weiterentwickelt
Einsatzgröße klein und mittel (laut OPNsense unter ca. 1.000 Clients) groß, viele VLANs und Leases bestehende Installationen
DNS-Registrierung der Clients integriert (ohne Zusatzdienst) per DDNS (RFC 2136, seit 26.1) an einen updatefähigen DNS-Server über Unbound (nur IPv4)
Hochverfügbarkeit getrennte Pools + Antwortverzögerung Lease-Synchronisation zwischen zwei Servern Failover-Peer
Prefix Delegation (DHCPv6-PD) nein ja ja
Konfiguration einfach, Tags für flexible Optionen umfangreicher klassisch

Die OPNsense-Dokumentation empfiehlt im Zweifel Dnsmasq. Wer IPv6-Präfixe an nachgelagerte Router delegieren muss oder sehr große Umgebungen mit synchronisierten Leases betreibt, greift zu Kea DHCP.


HinweisEs darf immer nur ein DHCP-Server je Schnittstelle aktiv sein. Startet Dnsmasq nicht, zuerst prüfen, ob ISC-DHCP oder Kea auf denselben Schnittstellen noch laufen, und die Meldungen unter Log File lesen. Gleiches gilt für Router Advertisements: Läuft bereits Services → Router Advertisements, diese nicht zusätzlich in Dnsmasq aktivieren.
Dnsmasq auf der OPNsense: DHCP-Bereiche pro Netz mit eigener Domain, Reservierungen und Optionen über Tags; Dnsmasq registriert die Hostnamen, Unbound leitet die internen Zonen per Query Forwarding an Dnsmasq auf Port 53053 weiter.

Menü und Aufbau

Unter Services → Dnsmasq DNS & DHCP:

Menüpunkt Zweck
General Dienst, Schnittstellen, Port, DHCP-Grundeinstellungen, Router Advertisements
Domains / Hosts Weiterleitung von Domains bzw. Host-Einträge und DHCP-Reservierungen (inklusive CSV-Import/-Export)
DHCP ranges Adressbereiche pro Schnittstelle (IPv4, IPv6, RA)
DHCP options zusätzliche Optionen (z. B. NTP, TFTP, Option 121) – gesetzt oder als Merkmal ausgewertet
DHCP boot PXE-Boot-Dateien und -Server
DHCP tags Kennzeichnungen, mit denen Optionen gezielt bestimmten Clients zugeordnet werden
Leases aktuelle Adressvergaben (auch als Dashboard-Widget)
Log File Meldungen von DHCP, RA und DNS

Schritt 1: Grundeinstellungen und Zusammenspiel mit Unbound

Unbound bleibt der DNS-Server für die Clients; Dnsmasq liefert nur die Namen der DHCP-Clients zu. Dafür läuft Dnsmasq auf einem anderen Port. Services → Dnsmasq DNS & DHCP → General:

Einstellung Wert / Empfehlung
Enable aktiv
Interface die Schnittstellen, die DHCP erhalten sollen, z. B. LAN, GUEST (registriert auch die Firewall-Regeln)
Listen port 53053 – Port 53 bleibt für Unbound frei
Do not forward to system defined DNS servers aktiv – Dnsmasq soll keine allgemeinen DNS-Anfragen weiterleiten
DHCP FQDN aktiv – Clients werden mit Domain registriert (smartphone.lan.internal), und Dnsmasq antwortet für diese Domains autoritativ
DHCP default domain z. B. internal oder leer (Systemdomain)
DHCP register firewall rules aktiv – erlaubt DHCP-Verkehr auf den gewählten Schnittstellen automatisch
DHCP authoritative aktiv, wenn Dnsmasq der einzige DHCP-Server im Netz ist (beschleunigt die Adressvergabe nach Neustarts der Clients)

In Unbound unter Services → Unbound DNS → Query Forwarding anschließend für jede Domain und jede Reverse-Zone einen Eintrag auf 127.0.0.1, Port 53053 anlegen – Details im Artikel OPNsense - Unbound DNS Resolver.

Als interne Domain eignet sich .internal (von IANA/ICANN für private Netze reserviert) oder eine nicht öffentlich genutzte Subdomain der eigenen Domain, z. B. lan.internal.example.com.

Schritt 2: DHCP-Bereiche pro Netz

Services → Dnsmasq DNS & DHCP → DHCP ranges – ein Eintrag pro Schnittstelle bzw. VLAN:

Interface Start address End address Domain
LAN 192.168.1.100 192.168.1.199 lan.internal
GUEST 192.168.10.100 192.168.10.199 guest.internal
VOICE 192.168.20.100 192.168.20.199 voice.internal

Ohne weitere Konfiguration erhalten die Clients automatisch die wichtigsten Optionen: Router (Option 3) und DNS-Server (Option 6) sind jeweils die Adresse der Firewall auf der empfangenden Schnittstelle, dazu der Domain-Name (Option 15) des Bereichs. Weitere Felder:

  • Lease time – Standard-Gültigkeit in Sekunden (für Gäste-WLAN eher kurz, z. B. 3600).
  • Subnet mask – leer lassen (wird aus der Schnittstelle berechnet); nur bei DHCP-Relay angeben, da Dnsmasq das entfernte Netz sonst nicht kennt.
  • Mode: static (erweitert) – der Bereich vergibt nur Reservierungen, keine Adressen an unbekannte Clients.
  • Disable HA sync – Bereich nicht auf die zweite Firewall übertragen (siehe Hochverfügbarkeit).

Schritt 3: Reservierungen (feste Adressen)

Reservierungen werden unter Hosts gepflegt:

  • Host: drucker-eg
  • IP addresses: 192.168.1.150 (für Dual Stack zusätzlich z. B. ::1234)
  • Hardware addresses: MAC-Adresse des Geräts (mehrere möglich, z. B. LAN und WLAN)
  • Client identifier: für IPv6-Reservierungen die DUID des Clients – eine MAC-Adresse genügt bei DHCPv6 nicht.

Die reservierte Adresse darf innerhalb des dynamischen Bereichs liegen – Dnsmasq vergibt sie dann nicht mehr an andere Clients. Für eine korrekte DNS-Registrierung sollte sie im Netz eines vorhandenen DHCP-Bereichs liegen. Mit Ignore werden DHCP-Anfragen eines Geräts bewusst nicht beantwortet, Tag [set] ordnet ihm eigene Optionen zu.

Massenimport: Über die Schaltflächen Import csv / Export as csv der Hosts-Liste lassen sich viele Reservierungen auf einmal pflegen; das Format ist mit den CSV-Exporten von ISC-DHCP und Kea abgestimmt.

Schritt 4: DHCP-Optionen und Tags

Jeder Client erhält automatisch ein Tag mit dem Namen der Schnittstelle. Optionen können daher pro Schnittstelle (Feld Interface), pro selbst definiertem Tag oder global gesetzt werden. Unter DHCP options gibt es zwei Typen:

  • Set – Option an passende Clients senden, z. B. ntp-server[42] mit der Adresse eines Zeitservers oder classless-static-route[121] für zusätzliche Routen. Mit Force wird die Option auch gesendet, wenn der Client sie nicht anfordert.
  • Match – erkennt Clients an einer Option, die sie selbst senden, und setzt ein Tag.

Beispiel VoIP-Telefone:

  1. DHCP tags: Tag voip anlegen.
  2. DHCP options, Typ Match: Option vendor-class[60], Wert = Hersteller-Kennung der Telefone, Tag [set] = voip.
  3. DHCP options, Typ Set: Option tftp-server-address[150] (bzw. Option 66), Wert = Provisionierungsserver, Tag = voip.

So erhalten nur die Telefone die Provisionierungsadresse – alle anderen Clients im selben Netz nicht.

PXE-Boot

Für Netzwerk-Installationen (z. B. Windows Deployment, iPXE) unterscheidet Dnsmasq anhand der Option client-arch[93] zwischen BIOS- und UEFI-Clients:

  1. Tags IsBIOS und IsEFI anlegen.
  2. Zwei Match-Optionen auf client-arch[93]: Wert 0 → IsBIOS, Wert 7 → IsEFI.
  3. Unter DHCP boot je einen Eintrag mit Tag, Filename (z. B. undionly.kpxe bzw. snponly.efi), Servername und Server address des TFTP-Servers.

Schritt 5: DHCPv6 und Router Advertisements

DHCPv6 kennt keine Router-Option – das Standard-Gateway erfahren IPv6-Clients ausschließlich über Router Advertisements (RA). Ein weiterer DHCP-Bereich auf derselben Schnittstelle genügt:

  • Start/End address: ::1000 bis ::2000, Constructor: LAN – die Adressen werden aus dem (auch dynamischen) Präfix der Schnittstelle gebildet.
  • RA mode: slaac (SLAAC-Adresse plus DHCPv6-Adresse – nötig für IPv6-Reservierungen) oder ra-stateless (nur SLAAC, DNS-Server per DHCPv6/RDNSS).
  • Bei eigener Domain im erweiterten Modus Domain type = Interface setzen, sonst landen die Namen in der Systemdomain.
  • Unter General Router advertisements aktivieren.

Der DNS-Server wird automatisch per RDNSS und DHCPv6 verteilt. Prefix Delegation an nachgelagerte Router beherrscht Dnsmasq nicht – dafür Kea verwenden.

Hochverfügbarkeit mit zwei Firewalls (CARP)

Dnsmasq synchronisiert keine Leases. Für kleinere HA-Cluster empfiehlt die OPNsense-Dokumentation getrennte Pools mit verzögerter Antwort des Backups:

Einstellung Master Backup
General → DHCP reply delay leer (antwortet sofort) 10 Sekunden
General → Disable HA sync aktiv aktiv
DHCP range LAN 192.168.1.100–.199, Disable HA sync 192.168.1.200–.220, Disable HA sync
Optionen router[3] / dns-server[6] CARP-Adresse des LAN CARP-Adresse des LAN

Der Master beantwortet alle Anfragen; fällt er aus, übernimmt nach zehn Sekunden das Backup aus seinem eigenen, nicht überlappenden Pool. Reservierungen können weiter synchronisiert werden – beide Server vergeben dann dieselbe feste Adresse. Gateway und DNS müssen per Option auf die CARP-Adresse zeigen, sonst erhalten die Clients die physische Adresse der jeweiligen Firewall. Für IPv6 sind keine getrennten Pools nötig (Duplicate Address Detection), die Router Advertisements werden über RA priority und RA router lifetime gesteuert. Wer Leases zwischen beiden Firewalls synchronisieren möchte, nutzt stattdessen Kea DHCP im hot-standby-Modus.

DHCP-Relay

Steht der DHCP-Server zentral und die Clients liegen hinter einem anderen Router oder einer anderen Firewall, leitet ein DHCP-Relay (z. B. Services → DHCRelay auf einer Filial-OPNsense oder ein Layer-3-Switch) die Anfragen weiter. Im DHCP-Bereich für das entfernte Netz muss dann die Subnet mask gesetzt werden, und die Firewall-Regeln müssen DHCP (UDP 67) vom Relay zulassen, da es sich nicht um eine lokal angebundene Schnittstelle handelt.

Migration von ISC-DHCP

  1. Auf der bisherigen Konfiguration die statischen Zuordnungen als CSV exportieren (ISC-DHCP-Plugin bzw. Kea).
  2. In Dnsmasq die DHCP ranges pro Schnittstelle neu anlegen und in der Hosts-Liste das CSV importieren.
  3. Eigene Optionen (NTP, TFTP, Option 121 usw.) unter DHCP options nachbauen.
  4. In einem Wartungsfenster ISC-DHCP auf den Schnittstellen deaktivieren, Dnsmasq aktivieren und anwenden; Clients erhalten bei der nächsten Erneuerung ihre Adresse von Dnsmasq (mit DHCP authoritative auch schneller).
  5. Unbound: die Optionen Register ISC DHCP4 Leases und Register DHCP Static Mappings deaktivieren und stattdessen das Query Forwarding auf Dnsmasq einrichten.
  6. Nach erfolgreichem Umstieg das Plugin os-isc-dhcp entfernen.

Sicherheitsempfehlungen

  • DHCP nur auf den gewünschten Schnittstellen anbieten; Schnittstellen, die nur DNS brauchen, unter Interface [no DHCP] ausnehmen.
  • DHCP max leases (erweitert) als Schutz gegen Clients, die massenhaft Adressen anfordern.
  • In Gäste- und IoT-Netzen kurze Lease-Zeiten und eigene Domains verwenden, damit Namen nicht mit dem Firmennetz kollidieren.
  • Fremde DHCP-Server im Netz (Rogue DHCP) per DHCP Snooping auf den Switches unterbinden – die Firewall allein kann das nicht.
  • Seit 26.1.8 registriert Dnsmasq keine Clients mit dem Namen wpad mehr (Schutz gegen die Schwachstelle CERT VU#598349). Für WPAD-Einträge feste Host Overrides in Unbound verwenden.
  • DHCP-Logs bei Bedarf an ein SIEM übertragen, z. B. mit dem Wazuh-Agent; Log DHCP options and tags nur zur Fehlersuche aktivieren.

Typische Probleme und Lösungen

Symptom Ursache und Lösung
Dnsmasq startet nicht Port 53 doppelt belegt (Listen port nicht auf 53053 gesetzt) oder ISC/Kea auf denselben Schnittstellen aktiv – Log File prüfen.
Clients erhalten keine Adresse Schnittstelle nicht unter Interface gewählt, DHCP register firewall rules aus und keine eigene Regel, Bereich auf static gesetzt oder Pool erschöpft.
Namen wie nas01.lan.internal werden nicht aufgelöst Client sendet keinen Hostnamen, DHCP FQDN aus, Domain im Bereich fehlt oder Query Forwarding in Unbound (inklusive Reverse-Zone) fehlt.
Reservierung greift nicht falsche MAC-Adresse (z. B. zufällige WLAN-MAC des Smartphones deaktivieren) bzw. bei IPv6 DUID statt MAC verwenden.
Clients hinter einem Relay erhalten nichts Subnet mask im Bereich fehlt, Firewall-Regel für UDP 67 vom Relay fehlt.
IPv6-Clients ohne Gateway Router Advertisements nicht aktiviert oder zweiter RA-Dienst aktiv.
HA: Clients erhalten nach Failover falsches Gateway Optionen router[3] und dns-server[6] mit der CARP-Adresse fehlen.

Fazit

Dnsmasq macht DHCP auf der OPNsense einfach und robust: Bereiche pro VLAN, automatische DNS-Registrierung, Reservierungen per CSV, flexible Optionen über Tags und sogar PXE-Boot – ohne zusätzliche Dienste. Zusammen mit Unbound entsteht eine saubere Namensauflösung für alle Geräte. Für sehr große Umgebungen, Prefix Delegation oder HA mit synchronisierten Leases bleibt Kea die passende Alternative.

Unterstützung von m.a.x. it

Sie möchten DHCP und DNS auf Ihrer OPNsense neu strukturieren oder vom alten ISC-DHCP auf Dnsmasq oder Kea umsteigen? m.a.x. it unterstützt Sie als OPNsense-Gold-Partner mit OPNsense-Firewall-Services von m.a.x. it und einer Managed Firewall von m.a.x. it.

Siehe auch

Links und Quellen


Über m.a.x. it Die m.a.x. Informationstechnologie AG ist seit über 30 Jahren IT-Partner mittelständischer und großer Unternehmen in München und bietet maßgeschneiderte Lösungen und Services in den Bereichen Cloud, Cybersecurity, Netzwerk, Windows, Linux und Softwareentwicklung. Sie haben eine Frage zu diesem Artikel oder brauchen Unterstützung? Kontakt aufnehmen