
Ich habe ein privates Netzwerk mit mehreren OpenWrt-Routern, die einige lokale Subnetze verbinden. Auf einigen Routern verwende ich NAT, um den Internetzugang über verschiedene Anbieter zu ermöglichen.
Ich betreibe einen lokalen DNS-rekursiven Caching-Resolver (Unbound), der alle meine Clients in allen lokalen Subnetzen bedient.
Jeder Router verwaltet DHCP für seine lokalen Subnetze und weist Hostnamen zu. Aber alle Subnetze befinden sich unter my-example.com. (Ein Client von Router 1 könnte also „client1.router1.my-example.com“ sein.)
Ich möchte, dass alle meine Router ihre DHCP-Clients dem Hauptrouter melden, der DNS bereitstellt, sodass jeder Client in jedem lokalen Subnetz jeden anderen Client über seinen Namen erreichen kann. (Das Routing funktioniert bereits; ich kann jeden von jedem Client über seine IP-Adresse erreichen.)
Anscheinend bräuchte ich so etwas wie eine private dynamische DNS-Einrichtung auf meinem Haupt-DNS-Rechner, aber ich finde kein passendes Paket.
Wie kann ich alle meine lokalen DHCP-Clientnamen (aus allen Subnetzen unter verschiedenen Routern) allen anderen Clients in meinem lokalen Netzwerk verfügbar machen?
Antwort1
Sie können DNS so belassen, wie es ist, aber den zentralen Unbound-Server so konfigurieren, dass Anfragen je nach Suffix an den richtigen Nameserver weitergeleitet werden. Dies kann mithilfe von forward-zone
oder stub-zone
Blöcken erfolgen. (Beide funktionieren sehr ähnlich, sind in Ihrem Fall jedoch stub-zone
korrekter, da Sie direkt auf einen autoritativen Server verweisen, während forward-zone
expects auf einen anderen rekursiven Resolver verweist.) Beispiel:
stub-zone:
name: "router1.my-example.com."
stub-addr: <IPv4 address of router1>
stub-addr: <IPv6 address of router1>
stub-first: yes
(Im öffentlichen DNS würden Sie normalerweise Subdomains einrichtenDelegationenmithilfe NS
von Datensätzen – dies würde den Resolvern mitteilen, dass zB <foo>.router1.my-example.com
von einem anderen Server gehandhabt wird.)
AlternativwürdeEs wäre möglich, dynamisches DNS so einzurichten, dass Router Datensätze direkt auf einem zentralen Server registrieren, aber dazu müsste man wahrscheinlich auf eine völlig andere Software umsteigen. Auf der Seite des zentralen Servers möchten Sie Unbound wahrscheinlich durch BIND9 oder etwas anderes ersetzen, das Zonen hosten kann und das RFC 2136-Protokoll „DNS-Update“ unterstützt, und auf den Routern benötigen Sie einen DHCP-Server, der weiß, wie solche Updates übermittelt werden.
Ich bin nicht sicher, ob OpenWRT zusätzliche Optionen hat, aber ich vermute, dass die Router derzeit Dnsmasq ausführen, das dynamische Hostnamen verarbeiten kann, da alles im selben Prozess erfolgt – dasselbe Programm verarbeitet sowohl DNS als auch DHCP. Es weiß jedoch nicht, wie es DNS-Updates anderswo übermitteln soll. Sie müssten Dnsmasq verwenden, --dhcp-script
damit es mit den richtigen Parametern ausgeführt wird nsupdate
. (ISC DHCP Server unterstützt DDNS und wird häufig mit BIND gepaart, wird aber nicht mehr gewartet.)