DNS-Server für Heimnetzwerke ohne die Verwendung von resolv.conf, google dns oder Transfers

690
dboggs95

Ich habe es mit bind9 und dnsmasq versucht. Ich habe auch den Server-Rechner so eingestellt, dass er eine statische IP-Adresse hat. Das Betriebssystem ist Ubuntu 18.04. Ich möchte auf die Domäne unter Windows 7 und 10 zugreifen. Ich habe getestet, und mein Laptop kann über die IP-Adresse auf alles zugreifen, er kann jedoch nicht auf einen .local-Domänennamen zugreifen. Im Wesentlichen kann ich nicht herausfinden, wie ich eine halbwegs funktionierende Konfiguration für beide DNS-Serversoftware erhalten kann.

Die meisten Tutorials fordern mich auf, ein Google-DNS einzurichten und resolv.conf zu verwenden. Ich möchte keinen externen Server verwenden, um Namen weiterzuleiten, die sich nur in meinem Netzwerk befinden, vielleicht bin ich paranoid, aber das scheint mir ein Problem der Privatsphäre zu sein.

Tutorials, die die Weiterleitung mit Google und die Verwendung von resolv.conf für Nameserver deaktivieren, werden verwirrend, da die Sprache darauf hinweist, dass ich versuche, einen eigenen DNS-Server für den Zugriff auf externe Websites wie Facebook zu erstellen. Ich versuche nicht, den DNS-Registrar meines Netzwerks oder irgend etwas verrücktes zu entführen, ich möchte nur einige .local-Domains, um auf einige auf einem Computer gehostete Apps zuzugreifen.

Alle Tutorials haben ns1.example.com, ns2.example.com, host1.example.com, host2.example.com und jeweils eine eigene IP-Adresse. Vielleicht missverstehe ich, was das ist, aber es sieht so aus, als wollten sie, dass ich separate Maschinen für alles habe. Ich möchte nur einen Computer, auf dem mein DNS-Server, mein CUPS-Server, mein FTP-Server, mein PXE-Server und alle anderen Web- oder Netzwerkanwendungen ausgeführt werden, die ich auf diesem Computer installieren möchte.

Ich möchte name.local: port oder app.name.local haben, um auf diese Anwendungen auf jeder Maschine anstelle von ipaddress: port zuzugreifen, und ich möchte dies nicht in der hosts-Datei jeder Maschine angeben.

Ich gab es schließlich auf, bind9 zu benutzen, nachdem ich es nicht einmal für die Maschine bekommen konnte, an der ich gerade arbeitete, und es mit dnsmasq versuchte. Mir wurde gesagt, dieses magische Programm würde alles zum Kinderspiel machen. Die Anweisungen forderten mich auf, die hosts-Datei zu ändern, wodurch die vorübergehende Illusion entstand, dass sie funktioniert. Als ich meinen Laptop an das Netzwerk angeschlossen und es ausprobiert habe, wurde mir klar, dass die Datei hosts die EINZIGE Sache war, die funktionierte. Eine weitere DNS-Konfiguration, die absolut nichts bewirkt. Meine Konfiguration sieht so aus. Ich habe versucht, verschiedene Optionen wie das No-Dchp-Interface hinzuzufügen und zu entfernen, die alle keine Auswirkung hatten. IP-Adresse ist die IP-Adresse meines Computers und Modemip ist die IP-Adresse meines Modems, die als meine Router- und Gateway-Einstellung verwendet wird.

port=5353 #domain-needed #bogus-priv no-dhcp-interface=yes no-resolv no-poll server=/name.local/ipaddress local=/name.local/ expand-hosts domain=name.local dhcp-range=iprange,72h # subnet mask dhcp-option=1,255.255.255.0 # gateway dhcp-option=3,modemip # dns dhcp-option=6,modemip 

Hier ist meine etc / bind / named.conf.options.

acl "trusted" { ipaddress; modemip; localhost; localnets; }; options { directory "/var/cache/bind"; recursion no;  allow-query { trusted; };  listen-on { ipaddress; }; allow-transfer { none; };  dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 }; 

Ich habe das Gefühl, dass die Tutorials es versäumen, mir etwas zu sagen, von dem erwartet wird, dass ich es weiß, aber wenn das der Fall ist, weiß ich nicht, wie ich es herausfinden soll. Zum Beispiel habe ich heute Morgen herausgefunden, dass ich bind9 mit systemctl aktivieren und starten soll. Das hat mir nur einer von vier oder fünf Artikeln gesagt.

Ich werde auf Anfrage weitere relevante Informationen zur Verfügung stellen.

Mit allen Details aus dem Weg. Wie erstelle ich einen DNS-Server ohne resolv oder externe DNS wie z. B. 8.8.8.8 von Google (als ob kein Internetzugang vorhanden wäre), mit nur einem Computer und bei dem alles durch Eingabe von name.local: port erreichbar ist oder app.name.local? Ist es überhaupt möglich?

Vielen Dank.

1
Haben Sie sich mit Multicast-DNS befasst? Das würde nicht einmal einen Server brauchen, obwohl es manchmal etwas schwierig wird, unter Windows richtig zu funktionieren. Austin Hemmelgarn vor 5 Jahren 0
Ja, es ist möglich. Können Sie uns eine Bildschirmaufnahme von "ipconfig / all" von einer der Windows-Maschinen zeigen, die lokale DNS-Adressen nicht auflösen kann? Tim_Stewart vor 5 Jahren 0

1 Antwort auf die Frage

0
Moshe Katz

ANMERKUNG: Obwohl es technisch möglich ist, mehrere DNS-Server auf einem Computer einzurichten, funktioniert dies nicht wirklich. Die meisten Computer verwenden nur einen DNS-Server aus dieser Liste und wählen nur dann einen anderen aus, wenn der erste nicht antwortet. Wenn der erste jedoch antwortet, dass kein result ( NXDOMAIN) vorliegt, wird der Computer den anderen nicht versuchen.

Daher müssen Sie Ihre Computer so einrichten, dass sie nur auf diesen DNS-Server zeigen und nicht auf Ihren ISP / Ihr Netzwerk.

In diesem Zusammenhang finden Sie in der nachfolgenden Beschreibung die erforderlichen Schritte.


Um die Tutorials zu verstehen, die Sie zum Einrichten des Setups verwenden, müssen Sie nur daran denken, dass ein DNS-Server zwei Funktionen ausführen kann:

  • Autorisierender DNS
  • Rekursives DNS

Ein autorisierender DNS-Server ist für die Beantwortung von "dazugehörigen Anfragen" verantwortlich. In Ihrem Fall sind dies Ihre *.localDomains.

Ein rekursiver DNS-Server ist dafür verantwortlich, Abfragen anzunehmen, die nicht "dazugehören", und diese Upstreams an einen anderen Server weiterzuleiten, der sie beantworten kann, und dann die Antwort zurückzugeben. Normalerweise zwischenspeichert der rekursive Server die Antwort für einige Zeit, sodass sie nicht erneut angefordert werden muss. (Die Cache-Zeit wird aufgerufen TTL, und ihre Länge wird vom Upstream-Server festgelegt.) Der Grund dafür ist "rekursiv", dass möglicherweise eine lange Folge von DNS-Servern vorhanden ist, die die Antwort verarbeiten, bis sie schließlich den gesamten Weg zurück erreicht Autorisierender Server Die Antwort kann jedoch von jedem Cache-Server in der Kette gegeben werden.

Die ersten Tutorials, die Sie zur Verwendung von Google DNS aufgefordert haben, weisen Sie lediglich an, es für die rekursiven Sucheinstellungen zu verwenden. Jede Anfrage, für die Ihr Server der Meinung ist, dass es sich um den autorisierenden Server handelt, wird jedoch niemals an den Upstream-Server gesendet.

Wenn Sie in diesem Netzwerk Internetzugang haben möchten, muss der Server sowohl als autorisierender Server für Ihre eigenen Domänen als auch als rekursiver Server für alles andere fungieren. Dies ist die Konfiguration, die Sie anweisen, um sie einzurichten.

Wenn Sie dies möchten, sollten Sie den von Ihnen gefundenen Lernprogrammen folgen, die besagen, dass Sie das DNS von Google verwenden sollen. Machen Sie sich keine Sorgen über Ihre internen Abfragen, die an Google gesendet werden (es sei denn, Sie konfigurieren den Server sehr schlecht), da alle Abfragen, die von diesem Server verarbeitet werden können, nicht an den Upstream gesendet werden.

Wenn Sie Google nicht verwenden möchten, stehen Ihnen verschiedene andere Upstream-Optionen zur Verfügung, einschließlich der folgenden:

  • DNS-Server, die von Ihrem ISP ausgeführt werden
  • OpenDNS - 208.67.222.222 und 208.67.220.220
  • Cloudflare - 1.1.1.1 und 1.0.0.1

Wenn Sie wirklich keinen Internetzugang in diesem Netzwerk haben möchten, sollten Sie speziell nach einem Tutorial zum Einrichten eines "autorisierenden" DNS-Servers suchen, der nicht rekursiv ist.