DNS-Server
Aus Programmers Guide
Roy (Diskussion | Beiträge) |
Roy (Diskussion | Beiträge) K |
||
(Der Versionsvergleich bezieht 11 dazwischenliegende Versionen mit ein.) | |||
Zeile 35: | Zeile 35: | ||
"http://www.web.de" ein. Nun besteht das Internet ja nur aus Servern mit IP-Adressen in der Form: xxx.xxx.xxx.xxx also ist es nötig, den Server von "web.de" mit der zugehörigen IP-Adresse "213.165.64.75" zu verknüpfen.<br> | "http://www.web.de" ein. Nun besteht das Internet ja nur aus Servern mit IP-Adressen in der Form: xxx.xxx.xxx.xxx also ist es nötig, den Server von "web.de" mit der zugehörigen IP-Adresse "213.165.64.75" zu verknüpfen.<br> | ||
- | '''Anmerkung ''' | + | '''Anmerkung ''' ''Für Deutschland (irgendwas.de) ist IMMER die ''[[Www.denic.de|''DENIC'']]''verantwortlich.''<br> |
- | ''Für Deutschland (irgendwas.de) ist IMMER die ''[[Www.denic.de|''DENIC'']]''verantwortlich.''<br> | + | |
- | '''Zurück zum Thema''' | + | '''Zurück zum Thema''' |
Ziel ist, Klaus, welcher "http://www.web.de" eintippt auf den zugehörigen Webserver "213.165.64.75" zu verweisen. Und genau dort tritt die DNS-Namensauflösung in Kraft. Diese ordet also jedem Webserver einen oder mehrere Namen zu. Aufgebaut ist dies einfach wie eine Tabelle: <br> | Ziel ist, Klaus, welcher "http://www.web.de" eintippt auf den zugehörigen Webserver "213.165.64.75" zu verweisen. Und genau dort tritt die DNS-Namensauflösung in Kraft. Diese ordet also jedem Webserver einen oder mehrere Namen zu. Aufgebaut ist dies einfach wie eine Tabelle: <br> | ||
Zeile 86: | Zeile 85: | ||
Dies geschieht folgendermaßen: | Dies geschieht folgendermaßen: | ||
- | <br> | + | <source lang="bash"> |
+ | sudo vim /etc/bind/named.conf.options | ||
+ | ################ | ||
+ | #nameserverweiterleitung | ||
+ | forwarders { | ||
+ | 68.87.76.178; #Comcast DNS server | ||
+ | }; | ||
+ | #das bedeutet, dass alle DNS-Anfragen, die nicht beantwortet werden können an den DNS-Server unter angegebener IP weitergeleitet werden. | ||
+ | </source> <br> | ||
Die eigenen DNS-Einträge werden nun in sogenannte Zonen unterteilt. Also ich möchte zum Beispiel, dass der Nutzer, wenn er "web.server" eingibt auf den hauseigenen Webserver geleitet wird. In dem Fall heißt die Zone "web.server" in den Zonennamen kann man die gewohnten Zeichen der URL's verwenden. | Die eigenen DNS-Einträge werden nun in sogenannte Zonen unterteilt. Also ich möchte zum Beispiel, dass der Nutzer, wenn er "web.server" eingibt auf den hauseigenen Webserver geleitet wird. In dem Fall heißt die Zone "web.server" in den Zonennamen kann man die gewohnten Zeichen der URL's verwenden. | ||
Zeile 92: | Zeile 99: | ||
Eine neue Zone definiert man so: | Eine neue Zone definiert man so: | ||
- | + | ==== Zone anlegen ==== | |
- | = | + | <source lang="bash"> |
+ | sudo vim /etc/bind/named.conf.local | ||
- | + | ###########SEKUNDÄRZIEL########### | |
+ | #this zone redirects ALL incoming requests | ||
+ | #zone "." { | ||
+ | # type master; | ||
+ | # file "/etc/bind/zones/lockdown.db"; | ||
+ | #}; | ||
- | <br> | + | #WEB Domain |
+ | zone "web.server" { | ||
+ | type master; | ||
+ | file "/etc/bind/zones/web.server.db"; | ||
+ | }; | ||
+ | |||
+ | #For reverse DNS | ||
+ | zone "1.168.192.in-addr.arpa" { | ||
+ | type master; | ||
+ | file "/etc/bind/zones/rev.1.168.192.in-addr.arpa"; | ||
+ | }; | ||
+ | </source> | ||
+ | |||
+ | ==== Zone bearbeiten ==== | ||
+ | |||
+ | ===== Vorwärts ===== | ||
+ | |||
+ | <source lang="bash"> | ||
+ | sudo vim /etc/bind/zones/web.server.db | ||
+ | ###################################### | ||
+ | $TTL 2D | ||
+ | |||
+ | @ IN SOA www.web.server. mail.web.server. ( | ||
+ | 2007062024 ;Serial | ||
+ | 8H ;Refresh | ||
+ | 2H ;Retry | ||
+ | 4W ;Expire | ||
+ | 2D ); ;TTL Negativ Cache | ||
+ | |||
+ | @ IN NS www.web.server. | ||
+ | IN A 192.168.1.10 | ||
+ | |||
+ | www IN A 192.168.1.10 | ||
+ | gw IN A 192.168.1.1 | ||
+ | </source> | ||
+ | |||
+ | ===== Rückwärts ===== | ||
+ | |||
+ | <source lang="bash"> | ||
+ | sudo vim /etc/bind/zones/rev.1.168.192.in-addr.arpa | ||
+ | ###################################### | ||
+ | $TTL 2D | ||
+ | |||
+ | @ IN SOA www.web.server. mail.web.server. ( | ||
+ | 2007062024 ;Serial | ||
+ | 8H ;Refresh | ||
+ | 2H ;Retry | ||
+ | 4W ;Expire | ||
+ | 2D );TTL Negative Cache | ||
+ | |||
+ | @ IN NS www.web.server. | ||
+ | 1 IN PTR gw.web.server. | ||
+ | 10 IN PTR www.web.server. | ||
+ | </source> | ||
+ | |||
+ | ===== Sekundärziel ===== | ||
+ | |||
+ | <source lang="bash"> | ||
+ | sudo vim /etc/bind/zones/lockdown.db | ||
+ | ###################################### | ||
+ | $TTL 600 | ||
+ | @ IN SOA www.web.server. mail.web.server. ( | ||
+ | 2010062046 ; serial | ||
+ | 21600 ; refresh 6 houres | ||
+ | 3600 ;retry 1hour | ||
+ | 604800 ;expire | ||
+ | 86400 ) ;min TTL 1 day | ||
+ | NS www.web.server. | ||
+ | www IN A 192.168.1.10 | ||
+ | * IN CNAME www | ||
+ | </source> | ||
+ | |||
+ | === Wildcards === | ||
+ | |||
+ | Auch hier können sogenannte Wildcards für die Zonen verwandt werden. Zum Beispiel steht "." für alle Aufrufe (Sekundärziel) und "*" für ein bestimmtes Zeichen oder eine bestimmte Zeichenkette.<br> | ||
=== Neustart des DNS-Servers === | === Neustart des DNS-Servers === | ||
Zeile 109: | Zeile 196: | ||
<source lang="bash"> | <source lang="bash"> | ||
+ | #roy@testserver:~$ dig web.server #analog dazu | ||
roy@testserver:~$ dig roy-bohn.de | roy@testserver:~$ dig roy-bohn.de | ||
Zeile 124: | Zeile 212: | ||
;; Query time: 104 msec | ;; Query time: 104 msec | ||
- | ;; SERVER: | + | ;; SERVER: xx.xx.xx.xx#53(xx.xx.xx.xx) |
;; WHEN: Wed Oct 27 22:05:03 2010 | ;; WHEN: Wed Oct 27 22:05:03 2010 | ||
;; MSG SIZE rcvd: 45 | ;; MSG SIZE rcvd: 45 | ||
- | </source> | + | </source> |
+ | |||
+ | == Einrichten des Nutzer-PC == | ||
+ | |||
+ | Nun, eigentlich muss man den Nutzer nur noch davon überzeugen/zwingen den neu installieren unt funktions-geprobten DNS-Server zu verwenden. | ||
+ | |||
+ | Dies würde auf 2 Wegen funktionieren. | ||
+ | |||
+ | *durch das automatische beziehen des DNS-Servers | ||
+ | *durch das manuelle einstellen des DNS-Servers | ||
+ | |||
+ | === Die automatische Konfiguration (der schwierigere Weg) === | ||
+ | |||
+ | Dieser Weg führt zwangsweise über das verstehen der Arbeit eines DHCP-Servers. Dieser dient ja eigentlich dazu, eine automatische Einrichtung eines Netzwerkes zu realisieren. Durch das automatische beziehen der IP-Adresse,der Subnetz-Maske und des Gateways, wird auch der DNS und meist auch der sekundäre DNS-Server (nicht Sekundärziel!) festgelegt. | ||
+ | |||
+ | Also muss man nun dem DHCP-Server sagen, dass er die IP des neu installierten DNS-Servers weitergeben soll und nicht die, die der ISP oder der Hersteller vorgibt. | ||
+ | |||
+ | Ich möchte hier an der Stelle nicht weiter darauf eingehen. | ||
+ | |||
+ | === Die manuelle Konfiguration (der leichtere Weg) === | ||
+ | |||
+ | Man gibt in der IP-Konfiguration des Systems einfach den neuen DNS-Server an. Das bedeutet bei "Windows": | ||
+ | |||
+ | *Netzwerk / Netzwerk und Freigabecenter | ||
+ | *Adaptereinstellungen | ||
+ | *Rechtsklick auf das betroffene Netzwerk | ||
+ | *einmaliges anklicken von IPv4 dann "Eigenschaften" | ||
+ | *Dann in die Zeile des DNS-Servers die IP des neuen Servers eintragen | ||
+ | |||
+ | fertig. | ||
+ | |||
+ | [[Category:Bash]][[Category:Ubuntu]][[Category:DNS]] |
Aktuelle Version vom 16:04, 14. Apr. 2011
Inhaltsverzeichnis |
Einen eigenen DNS-Server betreiben
Okay, fangen wir mit der Problemstellung an:
Die Idee
Eine eigene DNS-Auflösung zu betreiben, genau wie bei den "großen" wie "T-Online (Speedport)" oder "Fritz!-Box".
Die erweiterte Konfiguration der beiden DSL-Router kann über eine Weboberfläche realisiert werden. In der Bedienungsanleitung steht:
...
- verbinden Sie Ihren Rechner mit dem WLAN der Box
- geben Sie in die Adresszeile Ihres Browsers "speedport.ip" oder "fritz.box" ein.
...
Das Sekundärziel
Sekundärziel war, vielleicht eine später zu verwendende allgemeine DNS-Weiterleitung zu realisieren, welche JEDEN ankommenden HTTP-Request auf einen bestimmten Server weiterleiten, wie bei T-Online bei MC Donalds, dort wird, sobald ein Nutzer nicht angemeldet ist, egal welche Webseite er aufruft, auf eine Anmeldeseite weitergeleitet wird. Dies hätte ich auch gern als kleinen Zusatz mit umgesetzt.
Die Verständnisfrage DNS
Okay, was ist eigentlich eine DNS-Namensauflösung? Ich möchte versuchen es auf einer ganz einfachen Ebene zu erklären.
Die DNS-Namensauflösung brauchen wir bei jedem Aufruf einer Internetseite.
Beispiel zur DNS-Namensauflösung
Klaus würde gern, um seine Emails zu checken die Webseite "web.de" öffnen. Also gibt er in seinen Browser:
"http://www.web.de" ein. Nun besteht das Internet ja nur aus Servern mit IP-Adressen in der Form: xxx.xxx.xxx.xxx also ist es nötig, den Server von "web.de" mit der zugehörigen IP-Adresse "213.165.64.75" zu verknüpfen.
Anmerkung Für Deutschland (irgendwas.de) ist IMMER die DENICverantwortlich.
Zurück zum Thema
Ziel ist, Klaus, welcher "http://www.web.de" eintippt auf den zugehörigen Webserver "213.165.64.75" zu verweisen. Und genau dort tritt die DNS-Namensauflösung in Kraft. Diese ordet also jedem Webserver einen oder mehrere Namen zu. Aufgebaut ist dies einfach wie eine Tabelle:
www.web.de | 213.165.64.75 |
www.roy-bohn.de | 193.202.110.164 |
Also wäre es das Selbe, wenn Klaus statt "http://www.web.de" "http://213.165.64.75" eingeben würde.
Die Verwaltung der DNS-Tabelle übernimmt die Denic und verlangt natürlich Geld dafür.
Das DNS-Server-Netz
Jeder größere Anbieter, darunter auch T-Online und Vodafone, bieten mittlerweile Ihren eigenen DNS-Server an. Welcher die Nutzeranfragen der verbundenen Nutzer beantwortet. Das heißt, es versucht jeder DNS-Server ersteinmal alle anfragen, welche auf Ihn treffen zu beantworten, kann er es nicht, so gibt er die Arbeit einfach an den nächsten DNS-Server ab, in der Hoffung, dass er diese beantworten kann.
Unser DNS-Server
Wir müssen also unseren DNS-Server vor allen anderen positionieren, um die Nutzeranfragen vorab "wegzuschnappen". Genauso macht es "speedport.ip" oder "fritz.box". Sie sagen einfach, dass, wenn der Nutzer diese URL's eingibt, immer auf den Router verwiesen werden.
Fazit
Wir brauchen einen DNS-Server, der alle Nutzeranfragen beantwortet und die anderen zu nächsten DNS-Server schickt.
Die Einrichtung
Paketinstallation
Ich habe einen Ubuntu-Server und installiere das Softwarepaket für den DNS-Server wie folgt:
sudo apt-get install bind9
Einrichtung
Soweit so gut, als erstes möchten wir nun entscheiden, was mit den DNS-Anfragen passiert, die nicht beantwortet werden können.
Dies geschieht folgendermaßen:
sudo vim /etc/bind/named.conf.options ################ #nameserverweiterleitung forwarders { 68.87.76.178; #Comcast DNS server }; #das bedeutet, dass alle DNS-Anfragen, die nicht beantwortet werden können an den DNS-Server unter angegebener IP weitergeleitet werden.
Die eigenen DNS-Einträge werden nun in sogenannte Zonen unterteilt. Also ich möchte zum Beispiel, dass der Nutzer, wenn er "web.server" eingibt auf den hauseigenen Webserver geleitet wird. In dem Fall heißt die Zone "web.server" in den Zonennamen kann man die gewohnten Zeichen der URL's verwenden.
Eine neue Zone definiert man so:
Zone anlegen
sudo vim /etc/bind/named.conf.local ###########SEKUNDÄRZIEL########### #this zone redirects ALL incoming requests #zone "." { # type master; # file "/etc/bind/zones/lockdown.db"; #}; #WEB Domain zone "web.server" { type master; file "/etc/bind/zones/web.server.db"; }; #For reverse DNS zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/zones/rev.1.168.192.in-addr.arpa"; };
Zone bearbeiten
Vorwärts
sudo vim /etc/bind/zones/web.server.db ###################################### $TTL 2D @ IN SOA www.web.server. mail.web.server. ( 2007062024 ;Serial 8H ;Refresh 2H ;Retry 4W ;Expire 2D ); ;TTL Negativ Cache @ IN NS www.web.server. IN A 192.168.1.10 www IN A 192.168.1.10 gw IN A 192.168.1.1
Rückwärts
sudo vim /etc/bind/zones/rev.1.168.192.in-addr.arpa ###################################### $TTL 2D @ IN SOA www.web.server. mail.web.server. ( 2007062024 ;Serial 8H ;Refresh 2H ;Retry 4W ;Expire 2D );TTL Negative Cache @ IN NS www.web.server. 1 IN PTR gw.web.server. 10 IN PTR www.web.server.
Sekundärziel
sudo vim /etc/bind/zones/lockdown.db ###################################### $TTL 600 @ IN SOA www.web.server. mail.web.server. ( 2010062046 ; serial 21600 ; refresh 6 houres 3600 ;retry 1hour 604800 ;expire 86400 ) ;min TTL 1 day NS www.web.server. www IN A 192.168.1.10 * IN CNAME www
Wildcards
Auch hier können sogenannte Wildcards für die Zonen verwandt werden. Zum Beispiel steht "." für alle Aufrufe (Sekundärziel) und "*" für ein bestimmtes Zeichen oder eine bestimmte Zeichenkette.
Neustart des DNS-Servers
sudo service bind9 restart
Testen der Konfiguration
#roy@testserver:~$ dig web.server #analog dazu roy@testserver:~$ dig roy-bohn.de ; <<>> DiG 9.5.1-P2.1 <<>> roy-bohn.de ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31451 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;roy-bohn.de. IN A ;; ANSWER SECTION: roy-bohn.de. 3600 IN A 193.202.110.164 ;; Query time: 104 msec ;; SERVER: xx.xx.xx.xx#53(xx.xx.xx.xx) ;; WHEN: Wed Oct 27 22:05:03 2010 ;; MSG SIZE rcvd: 45
Einrichten des Nutzer-PC
Nun, eigentlich muss man den Nutzer nur noch davon überzeugen/zwingen den neu installieren unt funktions-geprobten DNS-Server zu verwenden.
Dies würde auf 2 Wegen funktionieren.
- durch das automatische beziehen des DNS-Servers
- durch das manuelle einstellen des DNS-Servers
Die automatische Konfiguration (der schwierigere Weg)
Dieser Weg führt zwangsweise über das verstehen der Arbeit eines DHCP-Servers. Dieser dient ja eigentlich dazu, eine automatische Einrichtung eines Netzwerkes zu realisieren. Durch das automatische beziehen der IP-Adresse,der Subnetz-Maske und des Gateways, wird auch der DNS und meist auch der sekundäre DNS-Server (nicht Sekundärziel!) festgelegt.
Also muss man nun dem DHCP-Server sagen, dass er die IP des neu installierten DNS-Servers weitergeben soll und nicht die, die der ISP oder der Hersteller vorgibt.
Ich möchte hier an der Stelle nicht weiter darauf eingehen.
Die manuelle Konfiguration (der leichtere Weg)
Man gibt in der IP-Konfiguration des Systems einfach den neuen DNS-Server an. Das bedeutet bei "Windows":
- Netzwerk / Netzwerk und Freigabecenter
- Adaptereinstellungen
- Rechtsklick auf das betroffene Netzwerk
- einmaliges anklicken von IPv4 dann "Eigenschaften"
- Dann in die Zeile des DNS-Servers die IP des neuen Servers eintragen
fertig.