<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=OPNsense_-_Dnsmasq_DHCP-Server</id>
	<title>OPNsense - Dnsmasq DHCP-Server - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://techcorner.max-it.de/index.php?action=history&amp;feed=atom&amp;title=OPNsense_-_Dnsmasq_DHCP-Server"/>
	<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=OPNsense_-_Dnsmasq_DHCP-Server&amp;action=history"/>
	<updated>2026-10-08T23:57:02Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in maxTechCorner</subtitle>
	<generator>MediaWiki 1.43.9</generator>
	<entry>
		<id>https://techcorner.max-it.de/index.php?title=OPNsense_-_Dnsmasq_DHCP-Server&amp;diff=3903&amp;oldid=prev</id>
		<title>imported&gt;TechCorner-Redaktion: Verlinkung auf den Artikel OPNsense - Hochverfügbarkeit mit CARP und pfsync ergänzt</title>
		<link rel="alternate" type="text/html" href="https://techcorner.max-it.de/index.php?title=OPNsense_-_Dnsmasq_DHCP-Server&amp;diff=3903&amp;oldid=prev"/>
		<updated>2026-10-08T00:00:00Z</updated>

		<summary type="html">&lt;p&gt;Verlinkung auf den Artikel OPNsense - Hochverfügbarkeit mit CARP und pfsync ergänzt&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Steckbrief&lt;br /&gt;
| gilt_fuer   = OPNsense 26.1 und 26.7 (Services → Dnsmasq DNS &amp;amp; DHCP, im Kern enthalten), Dnsmasq 2.93&lt;br /&gt;
| bereich     = IT-Security&lt;br /&gt;
| dauer       = ca. 30 Minuten (DHCPv4 mit DNS-Registrierung für mehrere Netze)&lt;br /&gt;
| rechte      = Administrator (OPNsense-WebUI)&lt;br /&gt;
| stand       = Oktober 2026 (OPNsense 26.7.5)&lt;br /&gt;
}}&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Dnsmasq in OPNsense&amp;#039;&amp;#039;&amp;#039; 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 [[OPNsense - Unbound DNS Resolver|Unbound]] als Resolver entsteht so die von OPNsense empfohlene Kombination, in der jedes Gerät unter einem sprechenden Namen wie &amp;lt;code&amp;gt;nas01.lan.internal&amp;lt;/code&amp;gt; erreichbar ist.&lt;br /&gt;
&lt;br /&gt;
Dieser Artikel konzentriert sich auf &amp;#039;&amp;#039;&amp;#039;DHCP mit Dnsmasq&amp;#039;&amp;#039;&amp;#039; (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.&lt;br /&gt;
&lt;br /&gt;
== Dnsmasq, Kea oder ISC-DHCP? ==&lt;br /&gt;
Mit OPNsense 26.1 hat sich die DHCP-Landschaft geändert: &amp;#039;&amp;#039;&amp;#039;ISC-DHCP&amp;#039;&amp;#039;&amp;#039; ist in das Plugin &amp;#039;&amp;#039;os-isc-dhcp&amp;#039;&amp;#039; gewandert (bei Upgrades automatisch installiert, bei Neuinstallationen nicht mehr), und &amp;#039;&amp;#039;&amp;#039;Dnsmasq&amp;#039;&amp;#039;&amp;#039; ist nun Standard für DHCPv4, DHCPv6 und Router Advertisements.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Kriterium !! Dnsmasq !! Kea DHCP !! ISC-DHCP (Plugin)&lt;br /&gt;
|-&lt;br /&gt;
| Status || &amp;#039;&amp;#039;&amp;#039;Standard&amp;#039;&amp;#039;&amp;#039; seit 26.1, im Kern || im Kern || Legacy, upstream nicht mehr weiterentwickelt&lt;br /&gt;
|-&lt;br /&gt;
| Einsatzgröße || klein und mittel (laut OPNsense unter ca. 1.000 Clients) || groß, viele VLANs und Leases || bestehende Installationen&lt;br /&gt;
|-&lt;br /&gt;
| DNS-Registrierung der Clients || &amp;#039;&amp;#039;&amp;#039;integriert&amp;#039;&amp;#039;&amp;#039; (ohne Zusatzdienst) || per DDNS (RFC 2136, seit 26.1) an einen updatefähigen DNS-Server || über Unbound (nur IPv4)&lt;br /&gt;
|-&lt;br /&gt;
| Hochverfügbarkeit || getrennte Pools + Antwortverzögerung || Lease-Synchronisation zwischen zwei Servern || Failover-Peer&lt;br /&gt;
|-&lt;br /&gt;
| Prefix Delegation (DHCPv6-PD) || &amp;#039;&amp;#039;&amp;#039;nein&amp;#039;&amp;#039;&amp;#039; || ja || ja&lt;br /&gt;
|-&lt;br /&gt;
| Konfiguration || einfach, Tags für flexible Optionen || umfangreicher || klassisch&lt;br /&gt;
|}&lt;br /&gt;
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 [[OPNsense - Kea DHCP mit Hochverfügbarkeit|Kea DHCP]].&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Es darf immer nur &amp;#039;&amp;#039;&amp;#039;ein&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;Log File&amp;#039;&amp;#039; lesen. Gleiches gilt für Router Advertisements: Läuft bereits &amp;#039;&amp;#039;Services → Router Advertisements&amp;#039;&amp;#039;, diese nicht zusätzlich in Dnsmasq aktivieren.}}&lt;br /&gt;
&lt;br /&gt;
[[Datei:OPNsense-Dnsmasq-DHCP.png|thumb|center|750px|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.]]&lt;br /&gt;
&lt;br /&gt;
== Menü und Aufbau ==&lt;br /&gt;
Unter &amp;#039;&amp;#039;&amp;#039;Services → Dnsmasq DNS &amp;amp; DHCP&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Menüpunkt !! Zweck&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;General&amp;#039;&amp;#039;&amp;#039; || Dienst, Schnittstellen, Port, DHCP-Grundeinstellungen, Router Advertisements&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Domains&amp;#039;&amp;#039;&amp;#039; / &amp;#039;&amp;#039;&amp;#039;Hosts&amp;#039;&amp;#039;&amp;#039; || Weiterleitung von Domains bzw. Host-Einträge und &amp;#039;&amp;#039;&amp;#039;DHCP-Reservierungen&amp;#039;&amp;#039;&amp;#039; (inklusive CSV-Import/-Export)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DHCP ranges&amp;#039;&amp;#039;&amp;#039; || Adressbereiche pro Schnittstelle (IPv4, IPv6, RA)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DHCP options&amp;#039;&amp;#039;&amp;#039; || zusätzliche Optionen (z. B. NTP, TFTP, Option 121) – gesetzt oder als Merkmal ausgewertet&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DHCP boot&amp;#039;&amp;#039;&amp;#039; || PXE-Boot-Dateien und -Server&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DHCP tags&amp;#039;&amp;#039;&amp;#039; || Kennzeichnungen, mit denen Optionen gezielt bestimmten Clients zugeordnet werden&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Leases&amp;#039;&amp;#039;&amp;#039; || aktuelle Adressvergaben (auch als Dashboard-Widget)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Log File&amp;#039;&amp;#039;&amp;#039; || Meldungen von DHCP, RA und DNS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Schritt 1: Grundeinstellungen und Zusammenspiel mit Unbound ==&lt;br /&gt;
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. &amp;#039;&amp;#039;&amp;#039;Services → Dnsmasq DNS &amp;amp; DHCP → General&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Einstellung !! Wert / Empfehlung&lt;br /&gt;
|-&lt;br /&gt;
| Enable || aktiv&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Interface&amp;#039;&amp;#039;&amp;#039; || die Schnittstellen, die DHCP erhalten sollen, z. B. &amp;#039;&amp;#039;LAN&amp;#039;&amp;#039;, &amp;#039;&amp;#039;GUEST&amp;#039;&amp;#039; (registriert auch die Firewall-Regeln)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Listen port&amp;#039;&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;53053&amp;lt;/code&amp;gt; – Port 53 bleibt für Unbound frei&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;Do not forward to system defined DNS servers&amp;#039;&amp;#039;&amp;#039; || aktiv – Dnsmasq soll keine allgemeinen DNS-Anfragen weiterleiten&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DHCP FQDN&amp;#039;&amp;#039;&amp;#039; || aktiv – Clients werden mit Domain registriert (&amp;lt;code&amp;gt;smartphone.lan.internal&amp;lt;/code&amp;gt;), und Dnsmasq antwortet für diese Domains autoritativ&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DHCP default domain&amp;#039;&amp;#039;&amp;#039; || z. B. &amp;lt;code&amp;gt;internal&amp;lt;/code&amp;gt; oder leer (Systemdomain)&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DHCP register firewall rules&amp;#039;&amp;#039;&amp;#039; || aktiv – erlaubt DHCP-Verkehr auf den gewählten Schnittstellen automatisch&lt;br /&gt;
|-&lt;br /&gt;
| &amp;#039;&amp;#039;&amp;#039;DHCP authoritative&amp;#039;&amp;#039;&amp;#039; || aktiv, wenn Dnsmasq der einzige DHCP-Server im Netz ist (beschleunigt die Adressvergabe nach Neustarts der Clients)&lt;br /&gt;
|}&lt;br /&gt;
In Unbound unter &amp;#039;&amp;#039;&amp;#039;Services → Unbound DNS → Query Forwarding&amp;#039;&amp;#039;&amp;#039; anschließend für jede Domain und jede Reverse-Zone einen Eintrag auf &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt;, Port &amp;lt;code&amp;gt;53053&amp;lt;/code&amp;gt; anlegen – Details im Artikel [[OPNsense - Unbound DNS Resolver]].&lt;br /&gt;
&lt;br /&gt;
Als interne Domain eignet sich &amp;lt;code&amp;gt;.internal&amp;lt;/code&amp;gt; (von IANA/ICANN für private Netze reserviert) oder eine nicht öffentlich genutzte Subdomain der eigenen Domain, z. B. &amp;lt;code&amp;gt;lan.internal.example.com&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Schritt 2: DHCP-Bereiche pro Netz ==&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Services → Dnsmasq DNS &amp;amp; DHCP → DHCP ranges&amp;#039;&amp;#039;&amp;#039; – ein Eintrag pro Schnittstelle bzw. VLAN:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interface !! Start address !! End address !! Domain&lt;br /&gt;
|-&lt;br /&gt;
| LAN || &amp;lt;code&amp;gt;192.168.1.100&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;192.168.1.199&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;lan.internal&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| GUEST || &amp;lt;code&amp;gt;192.168.10.100&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;192.168.10.199&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;guest.internal&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| VOICE || &amp;lt;code&amp;gt;192.168.20.100&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;192.168.20.199&amp;lt;/code&amp;gt; || &amp;lt;code&amp;gt;voice.internal&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
Ohne weitere Konfiguration erhalten die Clients automatisch die wichtigsten Optionen: &amp;#039;&amp;#039;&amp;#039;Router&amp;#039;&amp;#039;&amp;#039; (Option 3) und &amp;#039;&amp;#039;&amp;#039;DNS-Server&amp;#039;&amp;#039;&amp;#039; (Option 6) sind jeweils die Adresse der Firewall auf der empfangenden Schnittstelle, dazu der &amp;#039;&amp;#039;&amp;#039;Domain-Name&amp;#039;&amp;#039;&amp;#039; (Option 15) des Bereichs. Weitere Felder:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Lease time&amp;#039;&amp;#039;&amp;#039; – Standard-Gültigkeit in Sekunden (für Gäste-WLAN eher kurz, z. B. 3600).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Subnet mask&amp;#039;&amp;#039;&amp;#039; – leer lassen (wird aus der Schnittstelle berechnet); &amp;#039;&amp;#039;&amp;#039;nur bei DHCP-Relay&amp;#039;&amp;#039;&amp;#039; angeben, da Dnsmasq das entfernte Netz sonst nicht kennt.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Mode: static&amp;#039;&amp;#039;&amp;#039; (erweitert) – der Bereich vergibt nur Reservierungen, keine Adressen an unbekannte Clients.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Disable HA sync&amp;#039;&amp;#039;&amp;#039; – Bereich nicht auf die zweite Firewall übertragen (siehe Hochverfügbarkeit).&lt;br /&gt;
&lt;br /&gt;
== Schritt 3: Reservierungen (feste Adressen) ==&lt;br /&gt;
Reservierungen werden unter &amp;#039;&amp;#039;&amp;#039;Hosts&amp;#039;&amp;#039;&amp;#039; gepflegt:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Host:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;drucker-eg&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IP addresses:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;192.168.1.150&amp;lt;/code&amp;gt; (für Dual Stack zusätzlich z. B. &amp;lt;code&amp;gt;::1234&amp;lt;/code&amp;gt;)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Hardware addresses:&amp;#039;&amp;#039;&amp;#039; MAC-Adresse des Geräts (mehrere möglich, z. B. LAN und WLAN)&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Client identifier:&amp;#039;&amp;#039;&amp;#039; für IPv6-Reservierungen die &amp;#039;&amp;#039;&amp;#039;DUID&amp;#039;&amp;#039;&amp;#039; des Clients – eine MAC-Adresse genügt bei DHCPv6 nicht.&lt;br /&gt;
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 &amp;#039;&amp;#039;&amp;#039;Ignore&amp;#039;&amp;#039;&amp;#039; werden DHCP-Anfragen eines Geräts bewusst nicht beantwortet, &amp;#039;&amp;#039;&amp;#039;Tag [set]&amp;#039;&amp;#039;&amp;#039; ordnet ihm eigene Optionen zu.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Massenimport:&amp;#039;&amp;#039;&amp;#039; Über die Schaltflächen &amp;#039;&amp;#039;Import csv&amp;#039;&amp;#039; / &amp;#039;&amp;#039;Export as csv&amp;#039;&amp;#039; der Hosts-Liste lassen sich viele Reservierungen auf einmal pflegen; das Format ist mit den CSV-Exporten von ISC-DHCP und Kea abgestimmt.&lt;br /&gt;
&lt;br /&gt;
== Schritt 4: DHCP-Optionen und Tags ==&lt;br /&gt;
Jeder Client erhält automatisch ein &amp;#039;&amp;#039;&amp;#039;Tag mit dem Namen der Schnittstelle&amp;#039;&amp;#039;&amp;#039;. Optionen können daher pro Schnittstelle (Feld &amp;#039;&amp;#039;Interface&amp;#039;&amp;#039;), pro selbst definiertem &amp;#039;&amp;#039;&amp;#039;Tag&amp;#039;&amp;#039;&amp;#039; oder global gesetzt werden. Unter &amp;#039;&amp;#039;&amp;#039;DHCP options&amp;#039;&amp;#039;&amp;#039; gibt es zwei Typen:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Set&amp;#039;&amp;#039;&amp;#039; – Option an passende Clients senden, z. B. &amp;#039;&amp;#039;ntp-server[42]&amp;#039;&amp;#039; mit der Adresse eines Zeitservers oder &amp;#039;&amp;#039;classless-static-route[121]&amp;#039;&amp;#039; für zusätzliche Routen. Mit &amp;#039;&amp;#039;&amp;#039;Force&amp;#039;&amp;#039;&amp;#039; wird die Option auch gesendet, wenn der Client sie nicht anfordert.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Match&amp;#039;&amp;#039;&amp;#039; – erkennt Clients an einer Option, die sie selbst senden, und setzt ein Tag.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel VoIP-Telefone:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
# &amp;#039;&amp;#039;DHCP tags&amp;#039;&amp;#039;: Tag &amp;lt;code&amp;gt;voip&amp;lt;/code&amp;gt; anlegen.&lt;br /&gt;
# &amp;#039;&amp;#039;DHCP options&amp;#039;&amp;#039;, Typ &amp;#039;&amp;#039;&amp;#039;Match&amp;#039;&amp;#039;&amp;#039;: Option &amp;#039;&amp;#039;vendor-class[60]&amp;#039;&amp;#039;, Wert = Hersteller-Kennung der Telefone, &amp;#039;&amp;#039;&amp;#039;Tag [set]&amp;#039;&amp;#039;&amp;#039; = &amp;lt;code&amp;gt;voip&amp;lt;/code&amp;gt;.&lt;br /&gt;
# &amp;#039;&amp;#039;DHCP options&amp;#039;&amp;#039;, Typ &amp;#039;&amp;#039;&amp;#039;Set&amp;#039;&amp;#039;&amp;#039;: Option &amp;#039;&amp;#039;tftp-server-address[150]&amp;#039;&amp;#039; (bzw. Option 66), Wert = Provisionierungsserver, &amp;#039;&amp;#039;&amp;#039;Tag&amp;#039;&amp;#039;&amp;#039; = &amp;lt;code&amp;gt;voip&amp;lt;/code&amp;gt;.&lt;br /&gt;
So erhalten nur die Telefone die Provisionierungsadresse – alle anderen Clients im selben Netz nicht.&lt;br /&gt;
&lt;br /&gt;
=== PXE-Boot ===&lt;br /&gt;
Für Netzwerk-Installationen (z. B. Windows Deployment, iPXE) unterscheidet Dnsmasq anhand der Option &amp;#039;&amp;#039;client-arch[93]&amp;#039;&amp;#039; zwischen BIOS- und UEFI-Clients:&lt;br /&gt;
# Tags &amp;lt;code&amp;gt;IsBIOS&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;IsEFI&amp;lt;/code&amp;gt; anlegen.&lt;br /&gt;
# Zwei &amp;#039;&amp;#039;Match&amp;#039;&amp;#039;-Optionen auf &amp;#039;&amp;#039;client-arch[93]&amp;#039;&amp;#039;: Wert &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;IsBIOS&amp;#039;&amp;#039;, Wert &amp;lt;code&amp;gt;7&amp;lt;/code&amp;gt; → &amp;#039;&amp;#039;IsEFI&amp;#039;&amp;#039;.&lt;br /&gt;
# Unter &amp;#039;&amp;#039;&amp;#039;DHCP boot&amp;#039;&amp;#039;&amp;#039; je einen Eintrag mit Tag, &amp;#039;&amp;#039;&amp;#039;Filename&amp;#039;&amp;#039;&amp;#039; (z. B. &amp;lt;code&amp;gt;undionly.kpxe&amp;lt;/code&amp;gt; bzw. &amp;lt;code&amp;gt;snponly.efi&amp;lt;/code&amp;gt;), &amp;#039;&amp;#039;&amp;#039;Servername&amp;#039;&amp;#039;&amp;#039; und &amp;#039;&amp;#039;&amp;#039;Server address&amp;#039;&amp;#039;&amp;#039; des TFTP-Servers.&lt;br /&gt;
&lt;br /&gt;
== Schritt 5: DHCPv6 und Router Advertisements ==&lt;br /&gt;
DHCPv6 kennt keine Router-Option – das Standard-Gateway erfahren IPv6-Clients ausschließlich über &amp;#039;&amp;#039;&amp;#039;Router Advertisements&amp;#039;&amp;#039;&amp;#039; (RA). Ein weiterer DHCP-Bereich auf derselben Schnittstelle genügt:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Start/End address:&amp;#039;&amp;#039;&amp;#039; &amp;lt;code&amp;gt;::1000&amp;lt;/code&amp;gt; bis &amp;lt;code&amp;gt;::2000&amp;lt;/code&amp;gt;, &amp;#039;&amp;#039;&amp;#039;Constructor:&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;LAN&amp;#039;&amp;#039; – die Adressen werden aus dem (auch dynamischen) Präfix der Schnittstelle gebildet.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;RA mode:&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;slaac&amp;#039;&amp;#039; (SLAAC-Adresse plus DHCPv6-Adresse – nötig für IPv6-Reservierungen) oder &amp;#039;&amp;#039;ra-stateless&amp;#039;&amp;#039; (nur SLAAC, DNS-Server per DHCPv6/RDNSS).&lt;br /&gt;
* Bei eigener Domain im erweiterten Modus &amp;#039;&amp;#039;&amp;#039;Domain type&amp;#039;&amp;#039;&amp;#039; = &amp;#039;&amp;#039;Interface&amp;#039;&amp;#039; setzen, sonst landen die Namen in der Systemdomain.&lt;br /&gt;
* Unter &amp;#039;&amp;#039;General&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Router advertisements&amp;#039;&amp;#039;&amp;#039; aktivieren.&lt;br /&gt;
Der DNS-Server wird automatisch per RDNSS und DHCPv6 verteilt. &amp;#039;&amp;#039;&amp;#039;Prefix Delegation&amp;#039;&amp;#039;&amp;#039; an nachgelagerte Router beherrscht Dnsmasq nicht – dafür Kea verwenden.&lt;br /&gt;
&lt;br /&gt;
== Hochverfügbarkeit mit zwei Firewalls (CARP) ==&lt;br /&gt;
Dnsmasq synchronisiert keine Leases. Für kleinere [[OPNsense - Hochverfügbarkeit mit CARP und pfsync|HA-Cluster]] empfiehlt die OPNsense-Dokumentation &amp;#039;&amp;#039;&amp;#039;getrennte Pools&amp;#039;&amp;#039;&amp;#039; mit verzögerter Antwort des Backups:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Einstellung !! Master !! Backup&lt;br /&gt;
|-&lt;br /&gt;
| General → DHCP reply delay || leer (antwortet sofort) || &amp;lt;code&amp;gt;10&amp;lt;/code&amp;gt; Sekunden&lt;br /&gt;
|-&lt;br /&gt;
| General → Disable HA sync || aktiv || aktiv&lt;br /&gt;
|-&lt;br /&gt;
| DHCP range LAN || &amp;lt;code&amp;gt;192.168.1.100&amp;lt;/code&amp;gt;–&amp;lt;code&amp;gt;.199&amp;lt;/code&amp;gt;, &amp;#039;&amp;#039;Disable HA sync&amp;#039;&amp;#039; || &amp;lt;code&amp;gt;192.168.1.200&amp;lt;/code&amp;gt;–&amp;lt;code&amp;gt;.220&amp;lt;/code&amp;gt;, &amp;#039;&amp;#039;Disable HA sync&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| Optionen &amp;#039;&amp;#039;router[3]&amp;#039;&amp;#039; / &amp;#039;&amp;#039;dns-server[6]&amp;#039;&amp;#039; || CARP-Adresse des LAN || CARP-Adresse des LAN&lt;br /&gt;
|}&lt;br /&gt;
Der Master beantwortet alle Anfragen; fällt er aus, übernimmt nach zehn Sekunden das Backup aus seinem eigenen, nicht überlappenden Pool. &amp;#039;&amp;#039;&amp;#039;Reservierungen&amp;#039;&amp;#039;&amp;#039; können weiter synchronisiert werden – beide Server vergeben dann dieselbe feste Adresse. Gateway und DNS müssen per Option auf die &amp;#039;&amp;#039;&amp;#039;CARP-Adresse&amp;#039;&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;RA priority&amp;#039;&amp;#039; und &amp;#039;&amp;#039;RA router lifetime&amp;#039;&amp;#039; gesteuert. Wer Leases zwischen beiden Firewalls synchronisieren möchte, nutzt stattdessen [[OPNsense - Kea DHCP mit Hochverfügbarkeit|Kea DHCP im hot-standby-Modus]].&lt;br /&gt;
&lt;br /&gt;
== DHCP-Relay ==&lt;br /&gt;
Steht der DHCP-Server zentral und die Clients liegen hinter einem anderen Router oder einer anderen Firewall, leitet ein DHCP-Relay (z. B. &amp;#039;&amp;#039;Services → DHCRelay&amp;#039;&amp;#039; auf einer Filial-OPNsense oder ein Layer-3-Switch) die Anfragen weiter. Im DHCP-Bereich für das entfernte Netz muss dann die &amp;#039;&amp;#039;&amp;#039;Subnet mask&amp;#039;&amp;#039;&amp;#039; gesetzt werden, und die Firewall-Regeln müssen DHCP (UDP 67) vom Relay zulassen, da es sich nicht um eine lokal angebundene Schnittstelle handelt.&lt;br /&gt;
&lt;br /&gt;
== Migration von ISC-DHCP ==&lt;br /&gt;
# Auf der bisherigen Konfiguration die &amp;#039;&amp;#039;&amp;#039;statischen Zuordnungen&amp;#039;&amp;#039;&amp;#039; als CSV exportieren (ISC-DHCP-Plugin bzw. Kea).&lt;br /&gt;
# In Dnsmasq die &amp;#039;&amp;#039;&amp;#039;DHCP ranges&amp;#039;&amp;#039;&amp;#039; pro Schnittstelle neu anlegen und in der Hosts-Liste das CSV importieren.&lt;br /&gt;
# Eigene Optionen (NTP, TFTP, Option 121 usw.) unter &amp;#039;&amp;#039;DHCP options&amp;#039;&amp;#039; nachbauen.&lt;br /&gt;
# In einem Wartungsfenster &amp;#039;&amp;#039;&amp;#039;ISC-DHCP auf den Schnittstellen deaktivieren&amp;#039;&amp;#039;&amp;#039;, Dnsmasq aktivieren und anwenden; Clients erhalten bei der nächsten Erneuerung ihre Adresse von Dnsmasq (mit &amp;#039;&amp;#039;DHCP authoritative&amp;#039;&amp;#039; auch schneller).&lt;br /&gt;
# Unbound: die Optionen &amp;#039;&amp;#039;Register ISC DHCP4 Leases&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Register DHCP Static Mappings&amp;#039;&amp;#039; deaktivieren und stattdessen das Query Forwarding auf Dnsmasq einrichten.&lt;br /&gt;
# Nach erfolgreichem Umstieg das Plugin &amp;#039;&amp;#039;os-isc-dhcp&amp;#039;&amp;#039; entfernen.&lt;br /&gt;
&lt;br /&gt;
== Sicherheitsempfehlungen ==&lt;br /&gt;
* DHCP nur auf den gewünschten Schnittstellen anbieten; Schnittstellen, die nur DNS brauchen, unter &amp;#039;&amp;#039;Interface [no DHCP]&amp;#039;&amp;#039; ausnehmen.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;DHCP max leases&amp;#039;&amp;#039;&amp;#039; (erweitert) als Schutz gegen Clients, die massenhaft Adressen anfordern.&lt;br /&gt;
* In Gäste- und IoT-Netzen kurze Lease-Zeiten und eigene Domains verwenden, damit Namen nicht mit dem Firmennetz kollidieren.&lt;br /&gt;
* Fremde DHCP-Server im Netz (Rogue DHCP) per &amp;#039;&amp;#039;&amp;#039;DHCP Snooping&amp;#039;&amp;#039;&amp;#039; auf den Switches unterbinden – die Firewall allein kann das nicht.&lt;br /&gt;
* Seit 26.1.8 registriert Dnsmasq keine Clients mit dem Namen &amp;#039;&amp;#039;wpad&amp;#039;&amp;#039; mehr (Schutz gegen die Schwachstelle CERT VU#598349). Für WPAD-Einträge feste Host Overrides in Unbound verwenden.&lt;br /&gt;
* DHCP-Logs bei Bedarf an ein SIEM übertragen, z. B. mit dem [[OPNsense - Wazuh-Agent|Wazuh-Agent]]; &amp;#039;&amp;#039;Log DHCP options and tags&amp;#039;&amp;#039; nur zur Fehlersuche aktivieren.&lt;br /&gt;
&lt;br /&gt;
== Typische Probleme und Lösungen ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Symptom !! Ursache und Lösung&lt;br /&gt;
|-&lt;br /&gt;
| Dnsmasq startet nicht || Port 53 doppelt belegt (Listen port nicht auf 53053 gesetzt) oder ISC/Kea auf denselben Schnittstellen aktiv – &amp;#039;&amp;#039;Log File&amp;#039;&amp;#039; prüfen.&lt;br /&gt;
|-&lt;br /&gt;
| Clients erhalten keine Adresse || Schnittstelle nicht unter &amp;#039;&amp;#039;Interface&amp;#039;&amp;#039; gewählt, &amp;#039;&amp;#039;DHCP register firewall rules&amp;#039;&amp;#039; aus und keine eigene Regel, Bereich auf &amp;#039;&amp;#039;static&amp;#039;&amp;#039; gesetzt oder Pool erschöpft.&lt;br /&gt;
|-&lt;br /&gt;
| Namen wie &amp;lt;code&amp;gt;nas01.lan.internal&amp;lt;/code&amp;gt; werden nicht aufgelöst || Client sendet keinen Hostnamen, &amp;#039;&amp;#039;DHCP FQDN&amp;#039;&amp;#039; aus, Domain im Bereich fehlt oder Query Forwarding in Unbound (inklusive Reverse-Zone) fehlt.&lt;br /&gt;
|-&lt;br /&gt;
| Reservierung greift nicht || falsche MAC-Adresse (z. B. zufällige WLAN-MAC des Smartphones deaktivieren) bzw. bei IPv6 DUID statt MAC verwenden.&lt;br /&gt;
|-&lt;br /&gt;
| Clients hinter einem Relay erhalten nichts || &amp;#039;&amp;#039;Subnet mask&amp;#039;&amp;#039; im Bereich fehlt, Firewall-Regel für UDP 67 vom Relay fehlt.&lt;br /&gt;
|-&lt;br /&gt;
| IPv6-Clients ohne Gateway || Router Advertisements nicht aktiviert oder zweiter RA-Dienst aktiv.&lt;br /&gt;
|-&lt;br /&gt;
| HA: Clients erhalten nach Failover falsches Gateway || Optionen &amp;#039;&amp;#039;router[3]&amp;#039;&amp;#039; und &amp;#039;&amp;#039;dns-server[6]&amp;#039;&amp;#039; mit der CARP-Adresse fehlen.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fazit ==&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
== Unterstützung von m.a.x. it ==&lt;br /&gt;
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 [https://www.max-it.de/it-services/opnsense/ OPNsense-Firewall-Services von m.a.x. it] und einer [https://www.max-it.de/it-services/managed-firewall/ Managed Firewall von m.a.x. it].&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[OPNsense - Hochverfügbarkeit mit CARP und pfsync]]&lt;br /&gt;
* [[OPNsense - Kea DHCP mit Hochverfügbarkeit]]&lt;br /&gt;
* [[DHCP]]&lt;br /&gt;
* [[DNS]]&lt;br /&gt;
* [[OPNsense - Unbound DNS Resolver]]&lt;br /&gt;
* [[OPNsense - Eine kurze Einführung]]&lt;br /&gt;
* [[OPNsense - Plugin-Liste]]&lt;br /&gt;
* [[OPNsense - Wazuh-Agent]]&lt;br /&gt;
&lt;br /&gt;
== Links und Quellen ==&lt;br /&gt;
* [https://docs.opnsense.org/manual/dnsmasq.html OPNsense-Doku – Dnsmasq DNS &amp;amp; DHCP]&lt;br /&gt;
* [https://docs.opnsense.org/manual/kea.html OPNsense-Doku – Kea DHCP]&lt;br /&gt;
* [https://thekelleys.org.uk/dnsmasq/doc.html Dnsmasq – Projektseite]&lt;br /&gt;
* [https://www.max-it.de/it-services/opnsense/ m.a.x. it – OPNsense-Firewall-Services]&lt;br /&gt;
&lt;br /&gt;
{{Uebermax}}&lt;br /&gt;
[[Kategorie:IT-Security]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;TechCorner-Redaktion</name></author>
	</entry>
</feed>