[gelöst] DNS über zwei Standorte

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
MSfree
Beiträge: 10759
Registriert: 25.09.2007 19:59:30

[gelöst] DNS über zwei Standorte

Beitrag von MSfree » 02.02.2017 10:24:52

Ich habe an zwei Standorten, die mit DSL ins Netz gehen, jeweils Linuxrouter mit bind9 und isc-dhcp laufen.

Die beiden Standorte haben folgende Eigenschaften:

1. Standort:
lokale Domain: standort1.private
Netz: 192.168.1/24

2. Standort:
lokale Domain: standort2.private
Netz: 192.168.2/24

Beide Standorte sind per OpenVPN miteinander vernetzt und der Zugriff von Rechnern am Standort1 auf Rechner am Standort2 (bzw. umgekehrt) funktioniert. Das heißt, ich kann pingen, per http auf die Server zugreifen und per smb und nfs Platten mounten, allerdings nur via IP-Adresse.

Was nicht funktioniert ist die Namensauflösung:
Am Standort1 kann ich nicht server.standort2.private auflösen und umgekehrt.

Was muß ich in die /etc/bind/named.conf der jeweiligen Server eintragen, damit die sich gegenseitig auflösen können?

Hier mal meine named.conf für standort1 (die für standort2 ist analog mit entsprechenden Änderungen für standort2 statt standort1):

Code: Alles auswählen

//==================================================
key "DHCP_UPDATER" {
        algorithm hmac-md5;
        secret "12345";
};
key standort1.private. {
        algorithm hmac-md5;
        secret "23456";
};
//==================================================
ACL internal { 127/8; };
ACL standort1 { 192.168.1/24; };
ACL standort2 { 192.168.2/24; };
//==================================================
options {
        directory "/etc/bind";
        dump-file "named_dump.db";
        pid-file "/var/run/bind/run/named.pid";
        recursion yes;
        dialup yes;
        notify no;
        auth-nxdomain yes;
        forward first;
        forwarders {
                8.8.8.8;
                8.8.4.4;
        };
        allow-recursion { standort1; internal; };
        transfers-in 2;
        transfers-per-ns 2;
        transfers-out 2;
        max-transfer-time-in 20;
        transfer-format one-answer;
};
//==================================================
zone "." {
        type hint;
        file "root.hints";
};
//==================================================
zone "localhost." {
        type master;
        file "localhost.zone";
        allow-update { none; };
        allow-query { standort1; internal; };
        notify no;
};
zone "0.0.127.in-addr.arpa." {
        type master;
        file "127.zone";
        allow-update { none; };
        allow-query { standort1; internal; };
        notify no;
};
//==================================================
zone "standort1.private." {
        type master;
        file "standort1.private.zone";
        allow-update { key DHCP_UPDATER; key standort1.private.; };
        allow-query { standort1; internal; standort2; };
        notify yes;
};
zone "1.168.192.in-addr.arpa." {
        type master;
        file "192.168.1.zone";
        allow-update { key DHCP_UPDATER; key standort1.private.; };
        allow-query { standort1; internal; };
        notify no;
};
//==================================================
zone "standort2.private" {
        type slave;
        masters { 192.168.2.1; };
        allow-query { standort1; internal; };
};
//==================================================
Zuletzt geändert von MSfree am 03.02.2017 20:39:06, insgesamt 1-mal geändert.

eggy
Beiträge: 3331
Registriert: 10.05.2008 11:23:50

Re: DNS über zwei Standorte

Beitrag von eggy » 02.02.2017 11:04:29

Versuch mal, ob allow-transfer was ändert. Hast Du auf dem Slave die Zonendatei angelegt? evtl Serial zu hoch? Sonst mal in die Logs schauen, bzw schauen, ob die Queries auf der "Gegenseite" überhaupt zu sehen sind (tcpdump etc).

Benutzeravatar
MSfree
Beiträge: 10759
Registriert: 25.09.2007 19:59:30

Re: DNS über zwei Standorte

Beitrag von MSfree » 02.02.2017 11:30:06

eggy hat geschrieben:Hast Du auf dem Slave die Zonendatei angelegt?
Ja, an beiden Standorten gibt es im Prinzip identische Konfigurationen, nur eben mit unterschiedlichen Subnetzen und Domainnamen, jeweils mit entsprechenden Zonendateien. Im jeweiligen LAN kann ich ja auch Rechner anschließen, die per DHCP IP-Adressen zugewiesen bekommen und dort im DNS eingetragen werden.

Eine Zonedatei für die Slave-Domain gibt es nicht. Ich vermutete, daß das nicht notwendig ist, wenn der erste DNS den zweiten befragen kann.
Sonst mal in die Logs schauen, bzw schauen, ob die Queries auf der "Gegenseite" überhaupt zu sehen sind (tcpdump etc).
rndc trace hatte ich schon aufgerufen und die named.run-Datei protokolliert brav alle Queries aus dem lokalen Netz, aber wie gesagt, nicht die aus dem Netz des anderen Standortes.
Versuch mal, ob allow-transfer was ändert.
Das hatte ich natürlich noch nicht versucht. Vermutlich werde ich aber erst morgen dazu kommen, das auszuprobieren, im Moment habe ich dazu keine Zeit.

Die Frage ist auch, ob ich das überhaupt mit dem Transfermechanismus lösen muß oder ob man das mit einem Forwarder auch erreichen kann.

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: DNS über zwei Standorte

Beitrag von r4pt0r » 03.02.2017 11:48:24

Gibt es einen dringenden Grund unterschiedliche Domains zu nutzen?

Ich betreibe eine lokale Domain über 3 Standorte und mehrere Subnetze (ca 15) - der jeweils lokale DHCP ist für die jeweiligen Subnetze am Standort authorativ, DNS-Einträge erfolgen aber an einem DNS-Master der für alle lokalen Zonen zuständig ist und nur für die anderen Nameserver übers DMZ-VLAN erreichbar ist, nicht für die Clients. Die (lokalen) DNS-Server die von den Clients abgefragt werden sind nur noch slaves, das erleichtert das signieren der Zonen _erheblich_ und es gibt nur noch eine Zentrale Konfiguration. Da nur die Clients per DDNS eingetragen werden ist es nicht weiter tragisch wenn da mal was fehlt - alle Server(dienste) werden beim Provisionieren von Ansible fest am DNS eingetragen.
Sobald alle Standorte auf FreeBSD gateways migriert wurden, möchte ich DHCP per CARP abgegleichen - dann läuft im Prinzip eine DHCP-Konfiguration an allen Standorten und jeder DHCP könnte das gesamte Netz versorgen (wenn ich das durchs VPN zulasse). Primär wird damit aber DDNS wesentlich einfacher, da die Leases über alle Server hinweg abgeglichen werden und z.b. direkt am Standort des DNS-Master ausgelesen und eingetragen werden können.

Zuvor war jeder DHCP und DNS am jeweiligen Standort für die dortigen Subnetze und reverse-zonen zuständig, an einem Standort war der master für die forward-zonen und die 3 Server haben untereinander abgeglichen. Funktionierte einigermaßen, Administration ist aber umständlich/komplex und die Konfiguration fliegt bei längeren Verbindungsabbrüchen gerne mal in die Luft. Ganz zu schweigen von dem irrsinnigen Aufwand DNSSEC für alle Zonen zu implementieren, ohne dass die Keys überall im Netz rumschwirren müssen. Das ist mit einem abgeschotteten Master wesentlich einfacher.

Benutzeravatar
MSfree
Beiträge: 10759
Registriert: 25.09.2007 19:59:30

Re: DNS über zwei Standorte

Beitrag von MSfree » 03.02.2017 13:11:45

r4pt0r hat geschrieben:Gibt es einen dringenden Grund unterschiedliche Domains zu nutzen?
Nein, das ist eher historisch.

Ich bin aber noch nicht davon überzeugt, wie das mein Konfigurationsproblem vereinfachen könnte.
Zuvor war jeder DHCP und DNS am jeweiligen Standort für die dortigen Subnetze und reverse-zonen zuständig, an einem Standort war der master für die forward-zonen und die 3 Server haben untereinander abgeglichen. Funktionierte einigermaßen
Ich wollte eigentlich an jedem Standort Forward und Reverse vom jeweils lokalen DNS abhandeln lassen.
Administration ist aber umständlich/komplex und die Konfiguration fliegt bei längeren Verbindungsabbrüchen gerne mal in die Luft.
Hmm, ich hatte eigentlich gehofft, daß durch eigenständige Domains und Subnetze genau das nicht passieren würde. Wenn ich da mehr oder weniger unabhängige Einheiten habe, sollten die beiden Netze auch autark funktioneiren, wenn der VPN-Tunnel mal nicht steht.

r4pt0r
Beiträge: 1237
Registriert: 30.04.2007 13:32:44
Lizenz eigener Beiträge: MIT Lizenz

Re: DNS über zwei Standorte

Beitrag von r4pt0r » 03.02.2017 15:50:56

MSfree hat geschrieben:
r4pt0r hat geschrieben:Gibt es einen dringenden Grund unterschiedliche Domains zu nutzen?
Nein, das ist eher historisch.

Ich bin aber noch nicht davon überzeugt, wie das mein Konfigurationsproblem vereinfachen könnte.
Mit einer gemeinsamen forward-zone Entfallen haufenweise 'doppelte' Einträge wenn Dienste an einem Standort zentral gehostet sind. Wenn man auch noch verschiedene views z.b. für gäste-, client-, WLAN-, DMZ- und management-VLAN am Nameserver pflegt, wird sowas verdammt schnell zum chaos wenn es auch noch mehrere Master gibt. Fehlersuche ist dann die absolute Hölle - been there, done that, never again...

Man kann (sollte!) die Zonen im Hintergrund unterschiedlich benennen, nach aussen hin ist eine einzelne domain/zone mit verschiedenen views wesentlich praktikabler und komfortabler - z.B. kann man auch nen Client relativ Problemlos von einem Subnetz ins andere Setzen (Laptop!) und er findet noch alles.
Ich habe hier je standort 4 views, die jeweils nach dem muster [guest|lan|dmz|mgmt].[standortkürzel].domain.tld aufgebaut sind. Diese könnte ich zwar abfragen (und in manchen Fällen macht das ggf sinn), aber i.d.r. frage ich nur nach "host.domain.tld" und bekomme für das jeweilige VLAN und Standort die korrekte Antwort. Für Dienste wie ntp oder auch fileserver ist das Gold wert, da ich mich nicht um zig verschiedene Clientkonfigurationen kümmern muss. Der Client fragt einfach nur z.B. nach "time.domain.tld" und "gw.domain.tld" und bekommt die korrekten Daten für sein Subnetz. Auch multicast und failover wird damit erheblich einfacher, ganz zu schweigen von der _extrem_ begrenzten Hirnkapazität von durchschnittlichen Usern, die sich sowieso gerade so nen Hostnamen und mit viel Glück vielleicht noch ne Domain merken können.... (Sind i.d.r. nur die User die bereits erfolgreich an "Schuhe zubinden ohne Umfallen" teilgenommen haben...)
Zuvor war jeder DHCP und DNS am jeweiligen Standort für die dortigen Subnetze und reverse-zonen zuständig, an einem Standort war der master für die forward-zonen und die 3 Server haben untereinander abgeglichen. Funktionierte einigermaßen
Ich wollte eigentlich an jedem Standort Forward und Reverse vom jeweils lokalen DNS abhandeln lassen.
Fast genau das hatte ich hier auch - aber mit einer gemeinsamen forward zone. Klingt zwar nett, aber die meisten Zonenaktualisierungen (neuer Dienst/Server) bedeuten immer, dass man an allen Nameservern Hand anlegen muss. Mit einem zentralen Master und in richtung Clients nur noch slaves hat man exakt eine Anlaufstelle für Zonenupdates. Ist auch wesentlich einfacher abzusichern, da das Configmanagement am Standort des Masters innerhalb des management-VLANs ablaufen kann. Der Master muss eigentlich nur im mgmt-VLAN ssh-zugriffe zulassen und im DMZ-VLAN zugang zum DNS bzw auch nur für die slaves. Namensauflösung für nicht-lokale zonen machen die slaves eigenständig nach draussen, hier muss der Master nicht involviert sein, was dessen config weiter vereinfacht (und die Angriffsfläche reduziert).
Administration ist aber umständlich/komplex und die Konfiguration fliegt bei längeren Verbindungsabbrüchen gerne mal in die Luft.
Hmm, ich hatte eigentlich gehofft, daß durch eigenständige Domains und Subnetze genau das nicht passieren würde. Wenn ich da mehr oder weniger unabhängige Einheiten habe, sollten die beiden Netze auch autark funktioneiren, wenn der VPN-Tunnel mal nicht steht.
Die Netze funktionieren ja auch weiterhin wenn für die clients nur noch slaves zuständig sind. Die TTLs der lokalen Zonen müssen eben sinnvoll gewählt werden - nach Aktualisierungen stößt man i.d.r. sowieso einen zonentransfer an, somit kann die TTL recht hoch gewählt werden - ausser ggf für die zonen in denen clients per DDNS vom DHCP registriert werden; wobei hier sowieso keine kritischen dienste/systeme dabei sein sollten; die können zwar auch vom DHCP bedient werden, sollten aber statisch in die zonen eingetragen sein.

Weiterer Vorteil eines zentralen master-Nameservers: man kann im restlichen Netz beliebige (leichtgewichtige) Slaves und/oder caching resolver einsetzen und muss nicht "zwingend" weitere BIND aufsetzen - ist zwar bei den multiplen master/slave hybriden auch nicht unbedingt erforderlich, aber wenn man bei einer solchen Konfiguration auch noch verschiedene Resolver einsetzt kämpft man endlos gegen Gremlins.

Updates oder längere Konfigurationsänderungen am Master unterbrechen in keinster weise den Nameserverdienst für die Clients - man kann also in aller ruhe updates am Master durchführen. Da dieser bei mir in einem Jail läuft, führe ich größere Updates oder Änderungen sowieso an einem Klon durch und wenn alles passt wird einfach das Jail "in den Klon neugestartet" - das dauert keine 5sec; nach <10sec ist der Dienst wieder verfügbar.

Benutzeravatar
MSfree
Beiträge: 10759
Registriert: 25.09.2007 19:59:30

Re: DNS über zwei Standorte

Beitrag von MSfree » 03.02.2017 20:38:43

Das Problem hat sich letztlich ganz einfach lösen lassen. Glücklicherweise ohne alle Standorte auf eine zentrale Domain umzustellen.

Für die jeweilige Zonendeklaration der Gegenseite hat es gereicht, folgende Einträge in die named.conf statt der o.g. slave-Einträge zu setzen:

Code: Alles auswählen

//==================================================
zone "standort2.private" {
        type forward;
        forward only;
        forwarders { IP des jeweils gegenüber liegenden DNS; };
};
//==================================================
Danke trotzdem für die Anregungen.

Antworten