DNS-Einträge lokal verwalten

QuArK007

an Board...
ID: 217116
L
24 April 2006
1.482
169
Hallo zusammen,

seit den DNS-Sperren der Türkei für Youtube und Twitter frage ich mich ob es nicht möglich ist, lokal festzulegen welche Domains auf welche IP geroutet werden sollen. Anders als in der Türkei ist meine Idee, die Anzahl an DNS-Abfragen zu minimieren um die Verfolgbarkeit bzw mein Surfverhalten besser schützen zu können.

Das Problem was sich mir gestellt hat war, dass mehrere Seiten auf einem Managed-Servern mit nur einer IP liegen. Welche Seite nun aufgerufen werden soll, wird über die gesendeten Header-Einträge definiert. Diese kann ich aber in meiner hosts.txt nicht definieren.

Daher war meine Idee einen einfachen DNS-Server lokal aufzusetzen und nur, falls ein Eintrag nicht vorliegt oder eine Route nicht mehr gültig ist, diesen Eintrag nochmals abzufragen. Zudem möchte ich feste Zuordnungen eingeben können, die nicht aktualisiert werden sollen.

Ich hoffe es gibt hier einige Profis, die sich mit dem DNS-System auskennen und mir vielleicht eine leicht zu bedienende DNS-Verwaltung empfehlen können bzw. mir sagen können, ob meine Idee überhaupt möglich ist.

Viele Grüße
QuArK007
 
Ähm, also das keine hosts.txt sondern nur hosts heißt die, die du denke ich mal unter c:\windows\System32\drivers\etc\hosts findest

da habe ich auch immer Einträge drin wenn die Domain noch nicht umgestellt ist (Domaintransfer)

einfach
ip Domain
beispiel:
8.8.8.8 google.com

Übrigens auch nettes Möglichkeit Leute zu ärgern;)

Wenn in der Datei ein Eintrag ist, wird dieser auch verwendet, soweit ich weiß vom gesamten System, zumindest klappt es in allen gängigen Browsern.

Schau nochmal nach, die Datei hat keine Endung!!
 
ja, hast Recht: die datei heißt nur "hosts". Und ja, da habe ich auch schon meine "AdBlock"-Domains drin.

Es geht mir jedoch insbesondere um Domains, die nicht direkt über die IP erreichbar sind, sondern einen Header zur Auswahl der Inhalte auf dem Server benötigen und das liefert die hosts-Datei leider nicht. Ein DNS-Server kann das, jedoch habe ich keinen einfach konfigurierbaren für win7 gefunden.

Hast du damit Erfahrungen oder einen passenden Link? Hab mich schon fast totgesucht :-(
 
... Wenn in der Datei ein Eintrag ist, wird dieser auch verwendet, soweit ich weiß vom gesamten System, zumindest klappt es in allen gängigen Browsern. ...

Jein. Der DNS-Client unterscheidet zwar nicht zwischen "Anfrage vom Browser" oder "Anfrage vom Update-Manager", insofern gelten die Einträge für das ganze System. Je nach Konfiguration des Clients kann das System die hosts-Datei aber auch vollständig ignorieren.
 
Das Problem was sich mir gestellt hat war, dass mehrere Seiten auf einem Managed-Servern mit nur einer IP liegen. Welche Seite nun aufgerufen werden soll, wird über die gesendeten Header-Einträge definiert. Diese kann ich aber in meiner hosts.txt nicht definieren.
Du stellst dir ein Problem, was keins is. Managed-Server-Problem ist kein Problem des DNS-Protokolls, sondern des HTTP-Protokolls.

DNS dient nur dazu, den Server zu finden. Punkt. Das wars auch schon.

HTTP steht nun vor dem Problem, dass da ne Verbindung eingeht und der HTTP-Server nun für seite1.example.com und für seite2.example.com unterschiedliche Seiten ausliefern soll, obwohl der Server auf derselben IP liegt. Lösung: Host-Header im HTTP-Protokoll.

Forderst du seite1.example.com im Browser an, so wird dein Browser - genauso wie bei seite2.example.com - eine TCP/IP-Verbindung zu (IP-Adresse) aufbauen. Bis jetzt ist noch KEINE Domain im Spiel, wenn der Browser/Betriebssystem die IP-Adresse zur Domain gekannt hat (Cache, DNS-Server oder Hosts-Datei).
Erst in HTTP wird dein Browser nun im HTTP-Header eine Zeile mitschicken, wo drin steht, welchen Host (= Domain) er haben will. Der HTTP-Server entscheidet an Hand dessen nun, welche Seite er ausliefert.

Fazit:

  • Umgehst du DNS, indem du die IP direkt in die Hosts-Datei einträgst, hast du kein Problem. Du rufst du Seite per Domain auf und umgehst damit nur den DNS. HTTP bleibt unberührt.
  • Rufst du eine Seite direkt per IP-Adresse im Browser auf, umgehst du DNS komplett. Der Server wird dir nur antworten, wenn er entsprechend konfiguriert ist. Und das is nur der Fall, wenn er nur eine Seite hostet. z.B. Google kannstde auch als https://[2a00:1450:4016:803::101f]/ oder https://173.194.44.55/ aufrufen.
 
Managed-Server-Problem ist kein Problem des DNS-Protokolls, sondern des HTTP-Protokolls.

[...]

Erst in HTTP wird dein Browser nun im HTTP-Header eine Zeile mitschicken, wo drin steht, welchen Host (= Domain) er haben will. Der HTTP-Server entscheidet an Hand dessen nun, welche Seite er ausliefert.
Ok, das ist ja positiver ausgegangen als ich gedacht habe 8)

Ich frage mich jetzt nur, wie ich rausfinden kann, ob auch wirklich keine DNS-Anfrage gestellt wird... Hilft es den DNS aus der Netzwerkverbindung zu entfernen? Oder hat der FF intern einen anderen/weiteren definiert?

Danke für die lehr- und hilfreiche Unterstützung :ugly:
 
Ich frage mich jetzt nur, wie ich rausfinden kann, ob auch wirklich keine DNS-Anfrage gestellt wird...
Paket-Snipper. Wireshark anwerfen und gucken, ob was drinsteht, um dir diese Frage zu bearbeiten.

Ich frage mich jetzt nur, wie ich rausfinden kann, ob auch wirklich keine DNS-Anfrage gestellt wird... Hilft es den DNS aus der Netzwerkverbindung zu entfernen? Oder hat der FF intern einen anderen/weiteren definiert?
Dieselbe Frage im größeren Kontext is natürlich schwieriger zu beantworten, weil da mehr Leute mitspielen.

Erste Frage: Schickt die Anwendung selber den DNS-Request oder is sie faul und lässt das das Betriebssystem machen? Meist is die Antwort, dass das OS das handelt. Deine konkrete Frage "Firefox" hat ne konkrete, andere Antwort: Firefox hat einen eigenen DNS-Cache.

Zweite Frage: Hat das Betriebssystem den DNS-Eintrag im Cache? Falls ja, wird es keinen DNS-Server kontaktieren, um ne Domain aufzulösen, sondern den Cache-Hit benutzen, wenn er noch nicht abgelaufen is (Stichwort: TTL).

Beispiel:
Du trägst in deine Hosts-Datei nun eine konkrete Domain und eine konkrete IP ein. Um sicher zu gehen, dass auch wirklich der Eintrag benutzt wird, musst du

  • Firefox neustarten, um seinen DNS-Cache zu leeren.
  • In Windows "ipconfig /flushdns" machen, um dort den DNS-Cache zu leeren.
Den DNS-Server solltest du nicht entfernen, sonst kannst du keine Webseiten mehr aufrufen, zumindest alle die nicht mehr, die einen Host-Header brauchen. Und natürlich kannst du nur die Seiten aufrufen, deren IPs du auswendig weißt :ugly:

Die hosts-Datei overruled den DNS-Server. Windows wird erst in der hosts gucken, dann den DNS fragen, wenns dort nicht steht. (Interessante Frage, wies Firefox macht :think: Ich vermute mal, der wird auch Windows fragen, weil er nur ein DNS-Cache is und selber keine DNS-Anfragen machen will)

----

Unabhängig von deiner Frage aber zum Verständnis: Änderst du im Internet in einem DNS-Server einen Eintrag ab, z.B. registrierst eine Domain, so sind die Ausmaße hier noch größer, da jeder Router auf dem Weg zwischen deinem PC und dem Ziel-DNS-Server auch wieder DNS-Caches haben kann.

Zu Hause hast du vielleicht ne Fritz!Box noch stehen, die ein DNS-Cache ist, die kannst du noch neustarten etc. Danach kannst du die Router nicht mehr beeinflussen. Drum musst du immer annehmen, dass im Worst Case es einige Zeit (je nach TTL) dauert, bis sich Änderungen "rumgesprochen" haben.