DNS Setup für lokale Domains

Crumar

Lieutenant
Registriert
Apr. 2009
Beiträge
1.009
Hi,

ich möchte mein vorhandenes DNS Setup ein wenig anpassen.
Aktuell habe ich einen vServer, der mittels bind9 zwei Subdomains dynamisch bereitstellt.
  • zoneA.d.example.de
  • zoneB.d.example.de
Jetzt möchte ich allerdings dieses d umgehen. Mein Hoster gibt mir mehrere Möglichkeiten, zu konfigurieren.
Die aktuelle Config sieht so aus:
1590767544400.png

Hier seht ihr, dass für Host "d" der NS ns.example.de eingetragen ist. Für Host "ns" ist ein A record für meine IP eingetragen. Damit funktioniert alles aktuell.
Ich möchte allerdings demnächst das so umstellen, dass ich unter den Zonen die lokalen Hosts per Domain ansprechen kann.
Das bedeutet:

nas.zoneA.example.de
nas.zoneB.example.de

Diese sollen natürlich nicht aus dem Internet erreichbar sein, aber ich möchte trotzdem lokal und über die VPN Verbindung Domains nutzen.

Da hab ich mir also folgendes vorgestellt.
Ich kann bei netcup auch auf einen eigenen Nameserver umstellen:
1590767904376.png
Wäre diese Settings die richtigen, damit ich in bind9 folgendes einrichten kann:

A zoneA.example.de (IP des routers, geupdated durch mein nsupdate script)
NS zoneA.example.de (lokale IP einer Debian VM mit bind9)

Dann müssten doch meine Geräte, wenn sie eine Domain unter XYZ.zoneA.de den lokalen Nameserver anfragen und die lokale IP Addresse zurückgeben?
Gibt es irgendwelche Probleme (Standard etc.) wenn ich eine lokale IP Address als NS für die Zone einrichte?

Ich habe gelesen, dass sich DNSMasq dafür eignen soll, ich möchte aber gerne weiterhin das DHCP des Routers verwenden, damit im Falle eines Ausfalls zumindest die Internetverbindung bestehen bleibt.
Würde mein Vorhaben funktionieren oder habt ihr bessere Vorschläge?
 
Ich kapiere nicht so recht was netcup mit lokaler Namensauflösung im Heimnetzwerk zu tun hat?

Einen DNS nebst DHCP (zB dnsmasq) ins Heimnetz packen - zB in Form eines pihole - den DHCP im Router ausschalten, DHCP in pihole einschalten und in den dnsmasq settings die lokale domain auf example.de stellen. Nun bekommt jeder DHCP-Client die Domakm example.de an den Hostnamen angehängt und du kannst zB "meinNAS" mit "meinNAS.example.de" ansprechen.

Via VPN funktioniert das auch, wenn der VPN-Server eben den pihole als DNS durchreicht.
 
Ich möchte die zonen ja unter meiner public domain haben.
Das mit pihole habe ich gemacht, bin aber a) mit dem Ergebnis unzufrieden (das hat nicht wirklich mit den Hostnamen geklappt) und b) möchte ich unabhängig vom PiHole sein, falls dieser ausfällt (DHCP weiter über Router laufen lassen)

Als VPN wird btw. wireguard benutzt, da weiß ich gerade gar nicht, wie ich den DNS Server angebe.
Gerade gesehen, wird am Client eingerichtet (zumindest bei Android)

Muss mich noch mehr mit der Android app beschäftigen....
 
Zuletzt bearbeitet:
Crumar schrieb:
Ich möchte die zonen ja unter meiner public domain haben.
Du schriebst example.de und das habe ich weiterverwendet. Du kannst dem DHCP jede beliebige Domain mitgeben.


Crumar schrieb:
Das mit pihole habe ich gemacht, bin aber a) mit dem Ergebnis unzufrieden (das hat nicht wirklich mit den Hostnamen geklappt) und b) möchte ich unabhängig vom PiHole sein, falls dieser ausfällt (DHCP weiter über Router laufen lassen)
Naja, woher soll ein DNS dann wissen welche Hosts es im lokalen Netzwerk gibt? Der einfachste Weg ist, wenn DHCP und DNS auf ein und demselben System laufen wie zB bei pihole. Dabei wird dann zB die hosts Datei vom DHCP stets aktualisiert und der DNS schaut dort rein. Verteilte DNS- und DHCP-Systeme, die mit einem Consumer-Router agieren, sind mir nicht geläufig. Wenn, dann ginge sowas Richtung Domänencontroller und der pfeift auf den DHCP im Router.

So ganz kann ich dein Vorhaben daher immer noch nicht nachvollziehen. Wenn der DNS nur auf dem Netcup läuft, müsste jede lokale Namensauflösung immer auch ins Internet. Das hieße dann, dass im Falle eines Internetausfalls auch keine lokalen Namen mehr funktionieren würden.
 
Ein geeignetes Diagramm statt Wall of Text wäre ja wirklich schön... Das hat meist schon den Vorteil, dass so ein Diagramm auf den ersten Block erkennen lässt wie gut/schlecht eine Idee ist.

1. Welche IPs bzw. IP Ranges sollen die NAS' denn überhaupt haben? Sowohl im Bezug auf Legacy IP und v6?
1.a. Gibt dir dein Provider überhaupt statische IPs bzw. -ranges?

2. Wie wäre es mit dem gutem alten .local im phyischem, lokalem Netz als auch VPN? Entweder in dem du in beiden Netzen einen DNS Server hinstellst der .local auflößt oder mDNS (via Avahi, oder networkd).
 
Die IPs für die Services, die ich lokal hoste, werden eh statisch vergeben (durch den DHCP). Ich schnappe mir morgen früh meinen arbeitsrechner und mache ein visio. Danke schonmal

Bezüglich statische IP. Mein vserver hat eine statische IP und aktuell sind beide Router über eigenes dyndns mittels zonea.d.example.de erreichbar (bzw. B)
 
Beantworte bitte einfach die Fragen -.-

Wenn die IPs deiner NAS' im Bereich private/link local sollte ein ins Internet exponierter DNS Service die Annahme dieser IP-ranges eh verweigern. Wenn du von deinem Providern ausreichend statische public Adressen bekommst, kannst du dir einen sehr großen Teil des Gefrickels sparen.
 
Es sind aktuell 2, bald drei heim Netzwerke. Unterschiedliche ISPs (Telekom, NetCologne, o2), mir ist nicht bewusst das ich statische ips bei denen kriegen würde.

Zone a 192.168.151.0/24
Zone b 192.168.152.0/24
Zukunftige zone c: 192.168.153.0/24

Edit:
Ich habe versucht das mal aufzumalen.

1590784539472.png


Grundsätzlich will ich, dass in beiden Netzen alle Domains sichtbar sind, die im 151er und die im 152er (die ja über die zwei Raspberries verbunden sind).
Außerhalb des internen Netzwerks müssen die Domains nicht auflösbar sein. Ich würde aber gerne der Konsistenz und besseren Merkbarkeit her die Domain meines vServers nutzen, um die Subdomain (zoneA bzw. zoneB) auf die jeweiligen Router zeigen zu lassen.

Über diese "DynDNS" Addresse kann ein Client sich dann mit den Wireguard Raspis verbinden und ist im internen Netzwerk (habe ich eben mal auf meinem Handy eingerichtet, funktioniert). Bin ich jetzt über VPN im internen Netzwerk (egal in welchem), möchte ich das zum Beispiel nas.zoneA.example.de 192.168.151.3 zurückliefert und nas.zoneB.example.de 192.168.152.3
 
Zuletzt bearbeitet:
Der ganze 192.168. Block ist private/local und darf nicht im Internet geroutet werden. DNS Server die Adressen fürs Internet auflösen sollten eben diese private IP-ranges nicht annehmen. Wenn das bei Netcup doch geht, wäre mir das fast ein Bugreport wert..

So wie du die Verbindung zwischen den Raspis gezeichnet hast verfügen die über einen direkten, physischen Link untereinander. Wenn dem so ist, wäre es fraglich, wieso du da überhaupt zwei Netzwerke hast.
Falls der VPN Tunnel durchs Internet geht, solltest du das auch so einzeichnen. Da wäre dann aber fraglich, wie die VPN Gateways ihre Verbindung aufbauen, ober die privaten 192.168 IPs ganz sicher nicht. Wenn sich die Pis erreichen, hast du sowieso eine Verbindung über eine public IP hinbekommen. An der Stelle ginge also ein DynDNS. Alternativ gibt es bei netcup auch eine API mit der man u.a. DNS Einträge anpassen kann ohne die Weboberfläche zu bemühen. Es wäre also auch bei nicht statischen IPs möglich die DNS Einträge vom netcup DNS-Server zu aktualisieren.


Eine Alternative wäre auch, einfach ein VPN als Stern aufzubauen, wobei der vServer das zentrale Element wäre.
 
Ich weiß gerade nicht, wie ich mich verständlicher ausdrücken kann. Ich versuchs nochmal mit Tabellen und Text.

vServer
Statische, eigene IPv4 Addresse, eigene Domain (A Record, example.de).

Heimnetzwerk A:
Aktuelle DomainGewünschte Domain
Subnet192.168.151.0/24
Router192.168.151.1/24zoneA.d.example.dezoneA.example.de
Raspberry192.168.151.2/24rpi.zoneA.example.de
NAS192.168.151.3/24nas.zoneA.example.de
Client XYZ192.168.151.123/24

Heimnetzwerk B:
IPAktuelle DomainGewünschte Domain
Subnet192.168.152.0/24
Router192.168.152.1/24zoneB.d.example.dezoneB.example.de
Raspberry192.168.152.2/24rpi.zoneB.example.de
NAS192.168.152.3/24nas.zoneB.example.de
Client XYZ192.168.152.231/24

Beide Raspberry PIs (wie du korrekt festgestellt hast, aber das Tool ist Mist oder ich kann es nicht bedienen) sind über das Internet dauerhaft durch Wireguard VPN verbunden. Es ist sowohl auf den Routern als auch auf den Raspberry PIs eine statische Route vorhanden, damit jedes Gerät in A alle Geräte in B ansprechen kann (und umgekehrt). Dafür wird die dynamische IP Addresse verwendet und Port Forwarding am Router für den Wireguard Server.

Mein 1. Ziel ist es also das "d" aus zoneA.d.example.de zu entfernen.
Dafür glaube ich, dass ich die DNS Tabelle für meine Domain example.de bei netcup entfernen muss und als nameserver (1. Post, 2. Bild) meinen vServer example.de einstelle. Dieser hat bind9 (also einen DNS Server laufen).
Meinem Kenntnisstand sollte das bedeuten, dass für die gesamte Domain nicht mehr der netcup Nameserver, sondern mein eigener zuständig ist.

Mein 2. Ziel ist es, dass ich für die unter Zone, ebenfalls NS Records anlege. jeweils auf die beiden Raspberries (wo die private IP Addresse drin steht).
Dort würde dann ein zweiter bind9 laufen, der die A Records für die Server im Netz bereitstellt.

Ich stelle mir daher vor, dass wenn ich mit einem Client in Netzwerk A die Domain nas.zoneB.example.de abfrage, der lokale DNS Server eine Anfrage an den konfigurierten Internet Resolver abgibt, dieser sagt mein vServer ist für example.de zuständig, dieser wiederum sagt 192.168.152.2 ist verantwortlich. Zu dem Zeitpunkt bin ich in Netzwerk A und kenne die Route zu Netzwerk B, komme also an den DNS ran - und kriege die lokale NAS IP Addresse geliefert. Liege ich hier falsch?

Edit:
Ein Teil fehlte - ja, du hast recht. Die aktuellen Domains zoneA.d.example.de/zoneB.d.example.de werden dynamisch über cronjob geupdated. Das läuft genau so aktuell.
 
Zuletzt bearbeitet:
Ok nochmal GANZ deutlich:
PRIVATE IPs haben auf einem PUBLIC DNS Server nichts zu suchen. Egal ob du die DNS Server von Netcup nutzt oder einen eigenen DNS Server betreibst.

Nachzulesen u.a.
https://tools.ietf.org/id/draft-ietf-dnsop-dontpublish-unreachable-01.txt
und
https://tools.ietf.org/html/rfc1918
If an enterprise uses the private address space, or a mix of private
and public address spaces, then DNS clients outside of the enterprise
should not see addresses in the private address space used by the
enterprise, since these addresses would be ambiguous. One way to
ensure this is to run two authority servers for each DNS zone
containing both publically and privately addressed hosts. One server
would be visible from the public address space and would contain only
the subset of the enterprise's addresses which were reachable using
public addresses. The other server would be reachable only from the
private network and would contain the full set of data, including the
private addresses and whatever public addresses are reachable the
private network.[...]
Als Hintergrund dazu: die RFC der ietf sind quasi die Normen des Internets, daran sollte man sich halten wenn man mitspielen will! Dein Vorhaben hält sich nicht an die Konventionen, also lass es bitte einfach.

Die einfachste Möglichkeit für dich ist es wahrscheinlich einfach ein VPN zwischen deinen lokalen Netzwerken aufzubauen. Wobei alle Systeme dann jeweils ihre 192.168.15[1..3].1/24 Ip Range haben und zusätzlich auch eine IP des VPNs (zB im 172.16.0.0/12 Bereich). Innerhalb des VPNs kannst du Namensserver betreiben wie du lustig bist, da stört es Niemanden. Die einfachste Möglichkeit wäre aber sicherlich einfach keinen DNS Server zu betreiben und einfach mDNS zu nutzen um .local aufzulösen.

hostnameurlipv4Subnet
NAS Anasanasa.local172.16.0.1/12
NAS Bbobbob.local172.16.3.2/12


Innerhalb des VPNs kannst du natürlich auch ein DNS hochziehen, der dir nasa.example.com auflößt. Tendenziell eskaliert da die Komplexität aber unnötig.
 
  • Gefällt mir
Reaktionen: Raijin
Ok nochmal GANZ deutlich auch für dich, weil wir uns hier im Kreis drehen und ich finde das der Ton mir gegenüber ein wenig unverschämt wird. Dennoch Danke, dass du versuchst mir zu helfen.


Piktogramm schrieb:
Ok nochmal GANZ deutlich:

PRIVATE IPs haben auf einem PUBLIC DNS Server nichts zu suchen. Egal ob du die DNS Server von Netcup nutzt oder einen eigenen DNS Server betreibst.
Danke für die exakte Antwort auf meine Frage in Post #1.
Crumar schrieb:
Gibt es irgendwelche Probleme (Standard etc.) wenn ich eine lokale IP Address als NS für die Zone einrichte?

Piktogramm schrieb:
Die einfachste Möglichkeit für dich ist es wahrscheinlich einfach ein VPN zwischen deinen lokalen Netzwerken aufzubauen. Wobei alle Systeme dann jeweils ihre 192.168.15[1..3].1/24 Ip Range haben und zusätzlich auch eine IP des VPNs (zB im 172.16.0.0/12 Bereich). Innerhalb des VPNs kannst du Namensserver betreiben wie du lustig bist, da stört es Niemanden. Die einfachste Möglichkeit wäre aber sicherlich einfach keinen DNS Server zu betreiben und einfach mDNS zu nutzen um .local aufzulösen.
Ich habe bereits ein VPN aufgebaut (allerdings anders als du es beschreibst). Das kam in Post #1 leider nicht genau rüber, sorry.
Dennoch:

Crumar schrieb:
Beide Raspberry PIs (wie du korrekt festgestellt hast, aber das Tool ist Mist oder ich kann es nicht bedienen) sind über das Internet dauerhaft durch Wireguard VPN verbunden. Es ist sowohl auf den Routern als auch auf den Raspberry PIs eine statische Route vorhanden, damit jedes Gerät in A alle Geräte in B ansprechen kann (und umgekehrt). Dafür wird die dynamische IP Addresse verwendet und Port Forwarding am Router für den Wireguard Server.
(War natürlich spät, meinte dynamische geupdatete Domain)


Piktogramm schrieb:
Innerhalb des VPNs kannst du natürlich auch ein DNS hochziehen, der dir nasa.example.com auflößt. Tendenziell eskaliert da die Komplexität aber unnötig.

Das habe ich von Anfang an so vor! Ich möchte auf den Raspberry PIs oder einer VM einen DNS Server laufen lassen. Dieser soll lokal die Addressen auflösen.
Aber ich möchte diesen nicht als Haupt DNS haben. Ich möchte nur, dass meine lokalen Geräte diesen Server für Addressen der bestimmten Zone anfragen.

Ich möchte das auch nicht auf meinem Public DNS eintragen - mir fehlt aber gerade die Möglichkeit zu sehen, wie ich das umsetze (ohne dnsmasq).

Edit: Der RFC sagt es aber vermutlich.
Der lokale DNS Server muss verantwortlich sein für example.de wenn ich aus dem lokalen Netz komme und der vServer wenn ich im Internet bin - dann aber auch die selben anderen, öffentlich erreichbaren Subdomains auflösen.
 
Zuletzt bearbeitet:
Ich habe nicht viel Ahnung von der Materie, aber es scheint, als wolltest Du Split-DNS betreiben?
Dafür müsstest Du dann jeweils einen geeigneten DNS Server im jeweiligen Netz betreiben, ich vermute mal auf den Raspberry PIs? Deine jeweiligen Router könnten das ggf. auch übernehmen, wenn sie denn geeignet wären, ich vermute aber mal, dass sie es nicht sind...

Den DNS beim Provider deiner vServer solltest Du dafür überhaupt nicht anpassen müssen und auch nicht auf dich umleiten, es sei denn, Du weißt zu 1000% was Du tust, was mir hier nicht der Fall zu sein scheint.

Oder Du sagst, was das eigentliche Ziel der Übung sein soll, was erhoffst Du dir außer "dieses d zu umgehen".
So zumindest aus der Sicht eines Laien. 😉
 
Zuletzt bearbeitet:
Was du suchst bzw. wonach du suchen musst nennt man Split DNS oder auch Split Horizon DNS.
Pro Standort einen DNS Server hoch ziehen, der für sein Subnet DNS Master Server ist und Slave Server für die jeweiligen anderen Standorte. Die Zonen überträgst du jeweils per Zonentransfer sodass Änderungen entsprechend synchronisiert werden. Die DNS-Server konfigurierst du dann eben so, dass diese authoritative DNS für zone{a,b,c}.d.example.de sind und fertig.

Afaik musst an deinen DNS-Settings bei netcup gar nix anpassen. Für Clients aus dem Internet existieren die eben genannten Zonen einfach gar nicht und Clients in den lokalen Netzen kennen entsprechend die Zonen.

Erst wenn du Dienste (z.B. Webserver) in den internen Netzen als auch aus dem Internet erreichbar haben willst, musst du diesen im lokalen DNS-Server als auch bei Netcup einrichten. Bei netcup eben webserver.zoneA.d.example.de > A Record > public.ip.des.servers und im lokalen DNS-Server eben die private IP-Adresse. Solltest du keine statischen public Adressen haben nimmst bei netcup anstatt eines A Records einen cname auf ne entsprechende dyndns-Lösung.
 
Okay, danke für den Link.

Also versuch ichs mal.
vServer, Internet:
Code:
$ORIGIN .
$TTL 300        ; 5 minutes
d.example.de             IN SOA  ns.example.de. hostmaster\@example.de. (
                                706        ; serial
                                3600       ; refresh (1 hour)
                                600        ; retry (10 minutes)
                                604800     ; expire (1 week)
                                300        ; minimum (5 minutes)
                                )
                        NS      ns.example.de.
$ORIGIN d.example.de.
$TTL 30 ; 30 seconds
zoneA                    A       [PUBLIC_IP_ROUTER_A]
                        TXT     "Updated on 2020-05-30 04:35:02"
zoneB                      A      [PUBLIC_IP_ROUTER_B]
                        TXT     "Updated on 2020-05-30 07:10:13"

192.168.151.1 (Router, DHCP)
192.168.151.2 (Raspi, DNS)

DHCP gibt zwei DNS Server zurück (Primary 192.168.151.2, Secondary 192.168.151.1)
Lokaler DNS hat folgende Einträge:
Code:
$ORIGIN .
$TTL 300        ; 5 minutes
zoneA.d.example.de             IN SOA  192.168.151.2 hostmaster\@example.de. (
                                706        ; serial
                                3600       ; refresh (1 hour)
                                600        ; retry (10 minutes)
                                604800     ; expire (1 week)
                                300        ; minimum (5 minutes)
                                )
                        NS      ns.example.de.
$ORIGIN zoneA.d.example.de.
nas                   A       [PRIVATE NAS IP  ZONE A]
Code:
$ORIGIN .
$TTL 300        ; 5 minutes
zoneB.d.example.de             IN SOA  192.168.152.2 hostmaster\@example.de. (
                                706        ; serial
                                3600       ; refresh (1 hour)
                                600        ; retry (10 minutes)
                                604800     ; expire (1 week)
                                300        ; minimum (5 minutes)
                                )
                        NS      ns.example.de.
$ORIGIN zoneB.d.example.de.
nas                   A       [PRIVATE NAS IP ZONE B]
(Gespiegelt für zoneB auf dem zweiten DNS).

Dann müsste ich nur noch dafür sorgen, dass die DNS Server jeweilig ihre Zone für die sie Master sind syncen.

Das heißt, wenn ein lokaler DNS mal ausfällt, sollte der Secondary greifen (= Router) und normales Internet weiterhin funktionieren? Die lokalen Domains sind dann natürlich nicht verfügbar.

Muss ich dann noch einen weiteren Eintrag machen auf dem lokalen DNS, damit der NS lokal als Antwort kommt?
 
Zurück
Oben