NB Dies ist ein Repost vonmeine vorherige Frage, das auf Eis gelegt wurde, und um eine Umformulierung zur besseren Verständlichkeit gebeten wurde (ich hoffe, das ist verständlicher)
Ich habe einen einzelnen DNS-Server bind
installiert, den ich so einzurichten versuche, dass er eine übergeordnete Domäne ( example.org
) und zwei Unterdomänen ( cnc.example.org
und report.example.org
) hostet, sodass DNS-Abfragen für Geräte innerhalb einer der Domänen vom einzelnen DNS-Server bearbeitet werden können.
Meine erste Frage, ist das möglich?
Wenn ja, warum erhalte ich die folgenden Fehlermeldungen?
Wenn ich das nslookup host1
von der report.example.org
Domäne aus mache, erhalte ich
server can't find host1: SERVFAIL
Wenn ich das nslookup host2
von der cnc.example.org
Domäne aus mache, erhalte ich
server can't find host1: SERVFAIL
Das Setup geht wie folgt:
Host1:
- IP-Adresse 192.168.252.21/24
- DNS 192.168.252.22
/etc/hosts
enthälthost1.cnc.example.org
Gastgeber2:
- IP-Adresse 192.168.252.20/24
- DNS 192.168.252.22
/etc/hosts
enthälthost2.report.example.org
DNS Server:
- IP-Adresse 192.168.252.22/24
- DNS 127.0.0.1
/etc/hosts
enthältDNSServer.example.org
named.conf.local
Aufbau
/
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";
zone "example.org" {
type master;
file "/etc/bind/zones/example.org";
# allow-transfer { 192.168.252.22; };
};
zone "cnc.example.org" {
type master;
file "/etc/bind/zones/cnc.example.org";
# allow-transfer { 192.168.252.22; };
};
zone "report.example.org" {
type master;
file "/etc/bind/zones/report.example.org";
# allow-transfer { 192.168.252.22; };
};
zone "252.168.192.in-appr.arpa" {
type master;
file "/etc/bind/zones/reverse/rev.252.168.192";
allow-transfer { 192.168.252.22; };
};
example.org
Aufbau
;
; BIND data for example.org or report.example.org
;
$TTL 3h
@ IN SOA DNSServer.example.org. root.example.org. (
1 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; minimum
;
; main domain name servers - NS records
IN NS DNSServer.example.org.
; main domain name servers - A records
DNSServer IN A 192.168.252.22
;delegated zones
cnc.example.org. IN NS DNSServer.example.org.
report.example.org. IN NS DNSServer.example.org.
* Ausgabe von /etc/resolv.conf auf DNSServer *
# Generated by NetworkManager
search example.org
nameserver 127.0.0.1
* Ausgabe von /etc/resolv.conf auf Host1 *
# Generated by NetworkManager
search report.example.org
nameserver 192.168.252.22
* Ausgabe von /etc/resolv.conf auf Host2 *
# Generated by NetworkManager
search cnc.example.org
nameserver 192.168.252.22
* Ausgabe vom dig DNSServer auf dem DNSServer *
root@DNSServer:/etc/bind/zones/reverse# dig DNSServer
; <<>> DiG 9.10.3-P4-Debian <<>> DNSServer
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 45573
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;DNSServer. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 10:47:23 GMT 2017
;; MSG SIZE rcvd: 38
* Ausgabe mit dig DNSServer.example.org *
root@DNSServer:/home/osboxes# dig DNSServer.example.org
; <<>> DiG 9.10.3-P4-Debian <<>> DNSServer.example.org
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12335
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;DNSServer.example.org. IN A
;; ANSWER SECTION:
DNSServer.example.org. 10800 IN A 192.168.252.22
;; AUTHORITY SECTION:
example.org. 10800 IN NS DNSServer.example.org.
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 11:01:19 GMT 2017
;; MSG SIZE rcvd: 79
* Ausgabe von dig host1 auf DNSServer *
root@DNSServer:/etc/bind/zones/reverse# dig host1
; <<>> DiG 9.10.3-P4-Debian <<>> host1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 19414
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;host1. IN A
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov 27 10:48:15 GMT 2017
;; MSG SIZE rcvd: 40
cnc.example.org
Aufbau
;
; BIND data for example.org or report.example.org
;
$TTL 3h
@ IN SOA DNSServer.example.org. root.example.org. (
1 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; minimum
;
; main domain name servers - NS records
@ IN NS DNSServer.example.org.
; main domain name servers - A records
;DNSServer IN A 192.168.252.22
;192.168.252.0/24 - A Records
host1.cnc.example.org. IN A 192.168.252.21
report.example.org
Aufbau
;
; BIND data for example.org or report.example.org
;
$TTL 3h
@ IN SOA DNSServer.example.org. root.example.org. (
1 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; minimum
;
; main domain name servers - NS records
@ IN NS DNSServer.example.org.
; main domain name servers - A records
DNSServer IN A 192.168.252.22
;192.168.252.0/24 - A Records
host2.report.example.org. IN A 192.168.252.20
Danke
Antwort1
Sie können die Delegation verwenden, aber wenn Sie sie nicht wirklich benötigen, würde ich vorschlagen, dass Sie die Dinge einfach halten und eine Zone verwenden, die example.org
, cnc.example.org
, und enthält report.example.org
.
;
; BIND data for example.org
;
$TTL 3h
@ IN SOA DNSServer.example.org. root.example.org. (
1 ; serial
3h ; refresh
1h ; retry
1w ; expire
1h ) ; minimum
;
; main domain name servers - NS records
IN NS DNSServer.example.org.
; main domain name servers - A records
DNSServer IN A 192.168.252.22
; public targets
cnc IN CNAME host1.cnc
report IN CNAME host2.report
; hosts delivering services
host1.cnc IN A 192.168.252.21
host2.report IN A 192.168.252.20
Zitat aus Kommentaren:
Wenn ich das auf dem DNS-Server mache,
nslookup host1
erhalte ichroot@host1:/home/osbixes# nslookup host2 Server: 127.0.0.1 Address 127.0.0.1#53 ** server can’t find host2: SERVFAIL
Es gibt keinen Suchpfad auf dem DNS-Server, aber die Domäne ist example.org
, was bedeutet, dass alle unqualifizierten Namen in dieser Domäne sein müssen. Es gibt keinen, host2.example.org
daher wird Ihnen korrekterweise keine Antwort zurückgegeben. In diesem Fall müssten Sie entweder das in Ihrem durch nslookup
ersetzen oder nachschlagen .domain example.org
/etc/resolv.conf
search example.org report.example.org
nslookup host2.report
Von Host1 oder Host2 bekomme ich
root@host1:/home/osbixes# nslookup host2 Server: 192.168.252.22 Address 192.168.252.22#53 ** server can’t find host2: SERVFAIL
Gleicher Grund. Ihre Domäne (Suchpfad) /etc/resolv.conf
enthält die entsprechende Komponente nicht, host2
daher nslookup
ist der unqualifizierte Name host2
nirgends zu sehen.
Ich gehe davon aus, dass die
/etc/hosts
und Dateien auf Host1 und Host2 weiterhin und/etc/hostname
sein sollten.host1.cnc.example.org
host2.report.example.org
Ich habe keine Ahnung, was Sie meinen, wenn Sie sagen, dass es /etc/hosts
sein sollte host1.cnc.example.org
. Die /etc/hosts
Datei ist eine alternative Möglichkeit, Hostnamen und IP-Adressen zuzuordnen. Wenn Sie nur zwei oder drei Hostnamen haben, können Sie die Komplexität des internen DNS genauso gut vermeiden und diese Einträge einfach in eingeben /etc/hosts
. Wenn Sie andererseits eine angemessene Anzahl von Hosts haben, ist DNS eine gute zentralisierte Lösung für ein lokales Netzwerk. (Bedenken Sie jedoch, dass dabei nslookup
absichtlich ignoriert wird /etc/hosts
.)
Von einem der Hosts, wenn ich das tue
nslookup host1.cnc.example.org
odernslookup host2.report.example.org
es löst die IP-Adresse korrekt auf
Ja. Sie haben einen vollqualifizierten Namen angegeben, der nslookup
(und bind
) korrekt aufgelöst werden kann. Dies beweist, dass DNS gut funktioniert.
Ich brauche einen einzelnen DNS-Server, der alle Abfragen verarbeitet
example.org
,cnc.example.org
sodassreport.example.org
, wenn ein neues Gerät mit dem Netzwerk kommuniziert und neue auszuführende Befehle anfordert, es die Abfrage machtcnc.example.org
und an (192.168.252.21) weitergeleitet wirdhost1.cnc.example.org
, aber wenn es Berichte an das Netzwerk zurücksenden möchte, die Domäne abfragt und an (192.168.252.20)report.example.org
weitergeleitet wird .host2.report.example.org
Dazu würden Sie einen CNAME
(Alias-)Eintrag im DNS verwenden, sodass eine Abfrage report.example.org
für dem Host zugeordnet wird host2.report.example.org
. Beachten Sie, dass es in Ihrer Frage keinen technischen Grund gibt, warum host2
nicht aufgerufen werden sollte host2.example.org
. CNAME
-Einträge können überallhin verweisen, nicht nur auf Hosts in der aktuellen (Sub-)Domäne.
Antwort2
Ja. Es ist jedoch nicht erforderlich, eine separate Konfiguration für die Subdomäne zu erstellen.
Ein A .
am Ende bedeutet einen vollständigen Domänennamen, und ohne A .
bedeutet es eine Subdomäne der ursprünglichen Domäne.
Fügen Sie einen Eintrag wie diesen nur cnc.example.com
in example.com
der Konfiguration hinzu.
host1.cnc IN A 192.168.252.21
Sie benötigen also die folgenden Updates
- Entfernen
cnc.example.org
undreport.example.com
vonnamed.conf.local
Fügen Sie alle Einträge, die der Subdomäne entsprechen, ohne ein
.
at in der Konfiguration der übergeordneten Domäne hinzu. Sie können sie auch explizit in der Zone der übergeordneten Domäne angeben, wiehost1.cnc.example.com. IN A 192.168.252.21
- Entfernen Sie die entsprechenden Zonendateien
cnc.example.com
undreport.example.com
starten SieBIND
den Server neu.