So verwenden Windows Server-DNS die Hostdatei, um bestimmte Hostnamen aufzulösen

18

[HINWEIS: Die Lösung dieser Frage ist perfekt, da etwas vom Titel abweicht.]

Ich stehe vor einem kleinen Problem mit Windows Server 2003 DNS service. In meinem Unternehmen verwende ich den Microsoft DNS-Server ( 172.16.0.12), um die Namensauflösung in meinem Unternehmensintranet durchzuführen (der Domänenname endet in dev.nls. Auflösung in IP 172.16.) . Außerdem ist er als DNS-Weiterleitung zum Weiterleiten anderer Domänennamen konfiguriert ( zB * .google.com, * .sf.net) an Internet real DNS servers. Dieser interne DNS-Server tendiert niemals dazu, Benutzer von außerhalb der Welt zu bedienen.

Außerdem betreiben wir einen Mail-Server (der eingehende E-Mails für eine echte Internetdomäne bereitstellt @nlscan.com) in der Firewall des Unternehmens, auf den auf beide Arten zugegriffen werden kann:

  1. durch die Verbindung 172.16.0.10von innerhalb des Intranets.
  2. durch Verbinden mit mail.nlscan.com(gelöst zu 202.101.116.9) aus dem Internet.

Beachten Sie, dass 172.16.0.10und 202.101.116.9nicht die gleiche physische Maschine ist. Der 202eine ist ein Firewall-Rechner, der Port-Weiterleitungen von Port- 25und 110Intranet-Adressen durchführt 172.16.0.10.

Nun meine Frage: Wenn Benutzer im Firmen-LAN auflösen wollen mail.nlscan.com, löst es sich auf 202.101.116.9. Das ist korrekt und funktionsfähig, ABER NICHT GUT, da der E-Mail-Verkehr an den Firewall-Computer weitergeleitet wird und dort abprallt 172.16.0.10. Ich hoffe, dass wir internal DNS serverden Namen abfangen mail.nlscan.comund in 172.16.0.10 auflösen können. Also hoffe ich, dass ich dazu einen Eintrag in die "hosts" -Datei schreiben kann 172.16.0.12. Aber wie kann man Microsoft DNS serverdiese "Hosts" -Datei erkennen?

Vielleicht schlagen Sie vor, dass der Intranet-Benutzer nicht 172.16.0.10auf meinen Mail-Server zugreift. Ich muss sagen, dass es unpraktisch ist, wenn ein Benutzer (Mitarbeiter) an seinem Laptop arbeitet, tagsüber im Büro und nachts zu Hause. Wenn er zu Hause ist, kann er nicht verwenden 172.16.0.10.

Das Erstellen einer Zone für nlscan.comunsere internen Domänen DNS serverist nicht möglich, da sich der Nameserver für die nlscan.comDomäne auf unserem ISP befindet und für das Auflösen anderer Hostnamen und Unterdomänen unter nlscan.com verantwortlich ist.

[BEARBEITEN]

Wie WesleyDavidvorgeschlagen, folge ich der Lösung, einfach eine Zone mit dem Namen zu erstellen mailserver.nlscan.comund einen namenlosen A-Eintrag in dieser Zone zu platzieren . Die Zeit beweist, dass dies gut funktioniert.

Jimm Chen
quelle
+1 weil das genau das ist, was ich tue. Mein interner DNS-Resolver zeigt mail.example.com auf 192.168 ... obwohl mein primärer DNS mail.example.com für alle anderen auf seine Internet-IP verweist. Ich würde gerne irgendwelche Nachteile hören.
Cory J
Hi, Cory, ich fürchte, du verstehst die Tatsache nicht richtig. Wie Joeqwerty später in diesem Thema sagt: Die Hosts-Datei wird von der DNS-Clientauflösungskomponente und nicht von der DNS-Serverkomponente verwendet. Das Bearbeiten von Hosts auf 172.16.0.12 hilft dem Microsoft-DNS-Dienst also nicht.
Jimm Chen
Jun, Sie können eine Antwort als akzeptiert markieren, damit andere wissen, was die Lösung war. Ich bin froh, dass es für dich geklappt hat! =)
Wesley

Antworten:

12

Der letzte Teil dieses Beitrags ist falsch. Ich hatte den Eindruck, basierend auf einigem, was ich im Web gelesen hatte (wenn es im Web ist, muss es wahr sein!), Dass ein Teil der Aufgaben des Windows DNS-Serverdiensts zum Erstellen seines Caches darin bestand, auch seine Hostdatei zu laden Cache zusammen mit seinen lokalen Zonendaten. Ich habe mich umgesehen und konnte keine konkreten Beweise dafür finden. Ich habe die Theorie auf meinem eigenen Server 2008 R2-Computer getestet und festgestellt, dass die Hosts-Datei nicht zum Erstellen des DNS-Server-Cache verwendet wurde.

Ich glaube jedoch, ich habe eine etwas elegantere Lösung als Massimo. Anstatt eine autorisierende Zone für die gesamte Zone nlscan.com zu erstellen, erstellen Sie einfach eine Zone mit dem Namen mailserver.nlscan.com und platzieren Sie einen namenlosen A-Eintrag in dieser Zone. Der namenlose A-Eintrag hat denselben Namen wie die Zone selbst und Sie können ihm die gewünschte IP-Adresse zuweisen. Alle anderen Domains unter nlscan.com sowie nlscan.com selbst werden durch öffentliches DNS aufgelöst.

Ich habe dies gerade auf meinem eigenen Server 2008 R2-DNS-Server getestet und konnte die Website meines Freundes (nessus.nl) über öffentliche DNS-Server auflösen, die spezifische Subdomain (blog.nessus.nl) jedoch in eine Apple.com-IP-Adresse auflösen . Probieren Sie es aus und sehen Sie, ob es bei Ihnen funktioniert.

Älterer, falscher Beitrag beginnt:

Wenn mein Verständnis stimmt (BEARBEITEN: und nicht), werden beim Erstellen des DNS-Caches auf dem Server 2003-Computer sowohl Einträge aus der Hostdatei als auch Zonendaten abgerufen. Das 172.16.0.10 mailserver.nlscan.comProblem lässt sich beheben, indem Sie es in die Hosts-Datei Ihres Server 2003-Computers einfügen. Starten Sie Ihre DNS-Dienste neu, nachdem Sie Ihre Hosts-Datei geändert haben.

Verwenden Sie ipconfig / displaydns auf jedem Windows-Computer (insbesondere Ihrem Server 2003-DNS-Computer), um Ihre Hostdateieinträge anzuzeigen. Denken Sie auch daran, dass negative Antworten in Ihren Clients zwischengespeichert werden. Führen Sie daher ipconfig / flushdns immer auf den Clients aus, mit denen Sie experimentieren. Andernfalls werden Sie sich an verschiedenen harten Objekten beschimpfen und sich fragen, warum Ihre Kunden einen Namen, den Sie gerade in eine Zone / Hosts-Datei eingegeben haben, nicht auflösen können. =)

Haben Sie dies versucht und sind gescheitert?

Wesley
quelle
2
Windows Server 2003 DNS wird nicht die Verwendung hostsDatei zu beheben Namen. Es werden eigene Daten, Weiterleitungen oder rekursive Abfragen verwendet, nicht jedoch die lokale hostsDatei.
Massimo
@ Massimo du hast recht! Ich habe es ausprobiert und bin gescheitert. Ich glaube jedoch, ich habe Ihren Vorschlag aufgegriffen und ihn weiter vereinfacht, um ein bisschen eleganter zu sein. Sag mir was du denkst.
Wesley
Downvote entfernt :-)
Massimo
@ Massimo TY. Und danke, dass Sie mich dazu veranlasst haben, dies selbst zu testen. Ich habe etwas Neues gelernt. Immer lustig. =)
Wesley
1
Keine Ahnung, warum Sie erneut in die Knie gezwungen wurden. Es scheint eine gute Lösung für ein Problem zu sein, das ich regelmäßig erlebe. Es ist viel einfacher, als Schatten für die gesamte (öffentliche) Internetzone einzurichten.
Helvick
3

Der Wunsch, dass interne Benutzer interne IP-Adressen für Ressourcen erhalten, während externe Benutzer externe IP-Adressen für dieselben Ressourcen erhalten, ist weit verbreitet. Es wird als Split-Brain-DNS bezeichnet. Sie haben einen DNS-Server, der mit dem Internet verbunden ist, und einen anderen internen DNS-Server für lokale Benutzer. Interne Benutzer verwenden DHCP in Ihrem Netzwerk und auf Ihrem DHCP-Server kündigen Sie den internen DNS-Server an. Wenn Ihre Benutzer nicht im Büro sind, weist ihr DHCP-Server sie einem DNS-Server zu, der nur die externe Zone kennt.

Sie möchten anscheinend Split-Brain-DNS, ohne die Zone tatsächlich intern zu hosten. Sie schlagen vor, dass das interne Hosten der Zone problematisch ist, weil Sie nicht möchten, dass Benutzer die interne IP erhalten, wenn sie von zu Hause aus arbeiten. Dies ist jedoch nicht sinnvoll, da sie zu Hause ihre IP von einem anderen DHCP-Server beziehen Das wird nicht für Ihren internen DNS-Server werben. Es wird für den DNS-Server seines Internetdienstanbieters werben, der nur Ihre externe Zone kennt und diese nur mit externen IP-Adressen versorgt.

Schließlich werden Sie wahrscheinlich keinen Erfolg haben, wenn Sie einen DNS-Server bitten, Einträge aus der Hosts-Datei auf dem DNS-Server bereitzustellen. Ein DNS-Server stellt Einträge aus seinen Zonendateien bereit. Die lokale Hosts-Datei auf diesem DNS-Server überträgt Einträge in den Auflösungscache des lokalen Clients, der nur für Suchvorgänge auf diesem Computer gilt. Diese Einträge werden nicht vom DNS-Server bereitgestellt, da dies ein anderer Mechanismus ist.

Informieren Sie sich über Split-Brain-DNS - dies ist der normale Weg, mit dieser Situation umzugehen.

icky3000
quelle
"aber das ergibt keinen Sinn" - sorry, du verstehst mich falsch. Derzeit habe ich die Absicht, Mitarbeiter des Unternehmens zu Hause zu haben, um mail.nlscan.com korrekt auf 202.101.116.9 aufzulösen. Ich erwarte jedoch nicht, dass sie somehomt.dev.nls zu Hause auflösen (es sei denn, ich habe einen VPN-Server eingerichtet). Und danke, dass Sie auf Split-Brain-DNS hingewiesen haben. Da ich in meinem Firmen-Intranet nur den Namen mail.nlscan.com ändern möchte, ist das Einrichten von Split-Brain-DNS möglicherweise nicht so einfach.
Jimm Chen
2

Wes: Ich bin mir nicht sicher, wer Sie angegriffen hat, aber ich möchte die Verwendung der Hosts-Datei klären: Die Hosts-Datei wird von der DNS-Client-Resolver-Komponente verwendet, nicht von der DNS-Server-Komponente. Ein Eintrag in der Hosts-Datei auf einem DNS-Server wird vom DNS-Server als DNS-Client verwendet. Ein Eintrag in der Hosts-Datei meines W2K8-DNS-Servers sieht beispielsweise folgendermaßen aus:

1.1.1.1 test.test.com

wird in den DNS-Client-Cache des DNS-Servers geladen (nicht in den Server-Cache). Wenn ich test.test.com von meinem DNS-Server aus anpinge, wird 1.1.1.1 wie erwartet zurückgegeben. Wenn ich dann nslookup auf dem DNS-Server ausführe und nach test.test.com frage, wird die korrekte öffentliche IP-Adresse zurückgegeben, die für test.test.com registriert ist, da die DNS-Clientkomponente auf dem DNS-Server jetzt die DNS-Serverkomponente nach einer Lösung fragt (So ​​wie es jeder andere DNS-Client tun würde). Es ist eine verwirrende Idee, sich einen Überblick zu verschaffen, aber der DNS-Server ist auch ein DNS-Client. Wenn die DNS-Client-Komponente aufgerufen wird, verhält sie sich wie jeder andere DNS-Client, indem sie den eigenen DNS-Client-Cache einschließlich aller Einträge vor dem Aufruf überprüft -aus der hosts-Datei geladen. Nur wenn die DNS-Client-Komponente die DNS-Serverkomponente verwendet (indem die darin konfigurierten DNS-Server abgefragt werden).

Jeder DNS-Client, der den DNS-Server abfragt, erhält immer die "echte" Antwort und nicht den Host-Eintrag, da der DNS-Client-Cache des DNS-Servers vom Server selbst (als DNS-Client) und nicht von der DNS-Serverkomponente verwendet wird.

Joeqwerty
quelle
Ihre Tests und Ergebnisse spiegelten meine Suche heute Nachmittag genau wider. Aus irgendeinem Grund dachte ich, ich hätte gelesen, dass der DNS-Serverdienst auch die Hosts-Datei verwendet, um den Cache zu erzeugen, nicht nur den Resolver. Nennen Sie uns einfach Savage und Hyneman! =)
Wesley
Savage und Hyneman, das ist großartig! Aber wer ist wer? Bitte sag mir nicht, dass ich mir einen Walrossschnurrbart wachsen lassen und anfangen muss, eine Baskenmütze zu tragen. ;)
Joeqwerty
1

Soweit ich weiß, gibt es keine Möglichkeit, Windows-DNS dazu zu bringen, die hostsDatei für die Namensauflösung zu verwenden. dies wird aber nicht benötigt.

Sie können sicher eine Zone auf Ihrem internen DNS-Server mit demselben Namen wie eine öffentliche Internetzone erstellen. In diesem Fall verarbeitet Ihr Server die Anforderungen für Namen in dieser Zone mithilfe seiner eigenen Daten, anstatt diese Anforderungen an die autorisierenden Nameserver für diese Zone weiterzuleiten. Dies wird manchmal als "Shadowing" bezeichnet, da die "echte" öffentliche Zone für den internen Client nicht verfügbar ist und stattdessen mit "gefälschten" Daten beantwortet wird.

Was Sie beachten sollten, ist, dass Sie diese interne Zone mit allen Namen füllen sollten, die Sie benötigen, auch wenn Sie öffentliche IP-Adressen verwenden, wo dies erforderlich ist. Andernfalls können interne Clients diese Namen nicht auflösen.

Angenommen, Ihre öffentliche Zone sieht folgendermaßen aus:

www.nlscan.com    202.101.116.8
mail.nlscan.com   202.101.116.9

Sie möchten, dass interne Clients mail.nlscan.com als 172.16.0.10 auflösen. Das ist in Ordnung, also erstellen Sie eine Zone "nlscan.com" auf Ihrem internen DNS-Server und fügen "mail.nlscan.com -> 172.16.0.10" ein.
Aber jetzt können Ihre internen Clients "www.nlscan.com" nicht auflösen, da der Server der Meinung ist, dass dies für diese Zone maßgeblich ist, und daher die Abfrage nicht beantwortet (da er nicht über diesen Host Bescheid weiß), sondern auch leite es nicht weiter.
Um dies zu lösen, müssen Sie auch "www.nlscan.com" in Ihre interne Zone einfügen. Es kann auf seine echte öffentliche IP-Adresse verweisen, wenn Ihre Kunden auf diese Weise darauf zugreifen sollen, oder Sie können die gleiche Umleitung verwenden, die Sie für "mail.nlscan.com" verwenden, wenn "www". wird auch von Ihrer Firewall an einen internen Server weitergeleitet.
Das gleiche Prinzip gilt für jeden Namen in der Zone.

Diese Einstellung wird nicht hat keine Auswirkungen auf dem externen Clients oder auf einen der Benutzer , die das Netzwerk vorübergehend außerhalb ist, weil die interne „Schatten“ Zone nie aus dem Internet sichtbar.

Massimo
quelle
Ich glaube nicht, dass Sie eine autorisierende Zone für die gesamte Domain nlscan.com erstellen müssen. Ich denke, Sie können eine Unterdomäne erstellen: mailserver.nlscan.com und dann einen namenlosen A-Datensatz erstellen. Weitere Details finden Sie in meinem Beitrag.
Wesley
Ja, das würde funktionieren. und wäre eigentlich einfacher ... wenn Sie nur einen einzelnen Host umleiten müssen; Wenn Sie einige von ihnen umleiten müssen, ist eine vollständige Zone besser.
Massimo
Fügen Sie nlscan.com zu Ihrem Ordner für bedingte Weiterleitungen auf dem DNS-Server hinzu
1

Berücksichtigen Sie die Hostdatei nicht, fügen Sie einfach eine neue Zone in der DNS mail.domain.com hinzu und fügen Sie einen Host in der Zone hinzu. lass den Namen leer (es wird automatisch der Name der Zone verwendet) und gib die IP-Adresse des lokalen Mailservers ein ;-)

Lysandro
quelle