/usr/share/doc/HOWTO/de-html/DE-DNS-HOWTO-3.html is in doc-linux-de 2003.10-5.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
<TITLE>DNS HOWTO: Ein »caching-only«-Nameserver</TITLE>
<LINK HREF="DE-DNS-HOWTO-4.html" REL=next>
<LINK HREF="DE-DNS-HOWTO-2.html" REL=previous>
<LINK HREF="DE-DNS-HOWTO.html#toc3" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-DNS-HOWTO-4.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-DNS-HOWTO-2.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-DNS-HOWTO.html#toc3"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="DE-DNS-HOWTO-caching"></A> <A NAME="s3">3.</A> <A HREF="DE-DNS-HOWTO.html#toc3">Ein »caching-only«-Nameserver</A></H2>
<P><B>Ein erster Ausblick auf die DNS-Konfiguration - sehr praktisch für
Benutzer, die sich ins Internet einwählen.</B></P>
<P>Ein »caching-only« Nameserver (ich werde den englischen Begriff weiterverwenden,
weil sich »nur-Zwischenspeicher« nicht besonders schön anhört) wird auf
Namensanfragen antworten und sich bei der nächsten Anfrage an die alte
Antwort erinnern. Dieses Vorgehen verkürzt vor allem die Wartezeit bei jeder
weiteren Anfrage - besonders, wenn man nur eine langsame Verbindung hat.</P>
<P>Zuerst wird eine Datei namens <CODE>/etc/named.conf</CODE> gebraucht. Sie
wird bei jedem Start vom named eingelesen. Erstmal sollte sie einfach nur das
folgende enthalten:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
// Konfigurationsdatei für einen caching-only Nameserver
options {
directory "/var/named";
// Wenn Verbindungen über eine Firewall gehen müssen und das nicht
// so funktioniert, wie es sollte, hilft es vielleicht, die folgende
// Zeile auszukommentieren.
// query-source port 53;
};
zone "." {
type hint;
file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Die »<CODE>directory</CODE>«-Zeile sagt dem named, wo er nach Dateien suchen soll.
Alle noch folgenden Dateien gehören in dieses Verzeichnis (oder einem
Unterverzeichnis relativ hierzu). Also ist <CODE>pz</CODE> ein Unterverzeichnis in
<CODE>/var/named</CODE>: <CODE>/var/named/pz</CODE>. <CODE>/var/named</CODE> ist nach
dem <EM>Linux File system Standard</EM> das für den Nameserver vorgesehene
Verzeichnis für die Konfigurationsdateien eines Nameservers.</P>
<P>Die Datei <CODE>/var/named/root.hints</CODE> sollte die folgenden Daten
beinhalten:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
;
; Wenn diese Datei bereits existiert, könnten hier
; einführende Kommentare stehen.
; Falls nicht - keine Panik ;-).
;
. 6D IN NS G.ROOT-SERVERS.NET.
. 6D IN NS J.ROOT-SERVERS.NET.
. 6D IN NS K.ROOT-SERVERS.NET.
. 6D IN NS L.ROOT-SERVERS.NET.
. 6D IN NS M.ROOT-SERVERS.NET.
. 6D IN NS A.ROOT-SERVERS.NET.
. 6D IN NS H.ROOT-SERVERS.NET.
. 6D IN NS B.ROOT-SERVERS.NET.
. 6D IN NS C.ROOT-SERVERS.NET.
. 6D IN NS D.ROOT-SERVERS.NET.
. 6D IN NS E.ROOT-SERVERS.NET.
. 6D IN NS I.ROOT-SERVERS.NET.
. 6D IN NS F.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET. 5w6d16h IN A 192.112.36.4
J.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.10
K.ROOT-SERVERS.NET. 5w6d16h IN A 193.0.14.129
L.ROOT-SERVERS.NET. 5w6d16h IN A 198.32.64.12
M.ROOT-SERVERS.NET. 5w6d16h IN A 202.12.27.33
A.ROOT-SERVERS.NET. 5w6d16h IN A 198.41.0.4
H.ROOT-SERVERS.NET. 5w6d16h IN A 128.63.2.53
B.ROOT-SERVERS.NET. 5w6d16h IN A 128.9.0.107
C.ROOT-SERVERS.NET. 5w6d16h IN A 192.33.4.12
D.ROOT-SERVERS.NET. 5w6d16h IN A 128.8.10.90
E.ROOT-SERVERS.NET. 5w6d16h IN A 192.203.230.10
I.ROOT-SERVERS.NET. 5w6d16h IN A 192.36.148.17
F.ROOT-SERVERS.NET. 5w6d16h IN A 192.5.5.241
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Diese Datei enthält die Hauptnameserver des Internet; auch
Root-Nameserver genannt. Da sich diese Daten gelegentlich ändern, muss sie
regelmässig erneuert werden. Mehr darüber gibt es im Abschnitt
<A HREF="DE-DNS-HOWTO-6.html#DE-DNS-HOWTO-maint">Wartung</A>.</P>
<P>Der nächste zu erklärende Abschnitt in der <CODE>named.conf</CODE>-Datei ist die
letzte <CODE>Zone</CODE>. Darauf werde ich aber erst später zurückkommen. Erstmal
wird jetzt eine Datei namens <CODE>127.0.0</CODE> im Unterverzeichnis
<CODE>pz</CODE> erstellt:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
@ IN SOA ns.linux.test. hostmaster.linux.test. (
1 ; Serial
8H ; Refresh
2H ; Retry
1W ; Expire
1D) ; Minimum TTL
NS ns.linux.test.
1 PTR localhost.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Der nächste Schritt ist die Erstellung einer
<CODE>/etc/resolv.conf</CODE>-Datei, die so aussehen sollte:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
search unterdomain.eigene-domain.de eigene-domain.de
nameserver 127.0.0.1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Die »<CODE>search</CODE>«-Zeile definiert die Suchreihenfolge der Domains, zu
denen ein Rechner gehören könnte, der eine Anfrage an den named durchführt.
Die »<CODE>nameserver</CODE>«-Zeile enthält die Adresse vom eigenen Nameserver. In
diesem Fall ist das der eigene Computer, da dass der Rechner sein wird, auf
dem der named eingerichtet wird (127.0.0.1 ist richtig, ganz egal, was die
Maschine sonst noch für Adressen hat). Wenn man mehrere Nameserver auflisten
möchte, macht man das, indem für jeden Server eine eigene
»<CODE>nameserver</CODE>«-Zeile eingefügt wird. Der named selber wird
diese Datei nie einlesen, sondern der resolver. Das ist ein Programm,
welches die Anfragen an den named durchführt.</P>
<P>Eine kleine Beschreibung, was diese Datei bewirkt: Wenn ein
Client-Programm versucht, einen Computer namens <CODE>bla</CODE> zu finden, dann
wird zuerst nach <CODE>bla.unterdomain.eigene-domain.de</CODE> gesucht,
anschliessend nach <CODE>bla.eigene-domain.de</CODE> und erst zuletzt nach <CODE>bla</CODE>.
Wenn versucht wird, den Rechner <CODE>sunsite.unc.edu</CODE> zu finden, wird zuerst
nach <CODE>sunsite.unc.edu.unterdomain.eigene-domain.de</CODE> (ja - das ist nicht
sinnvoll, aber so funktioniert es nunmal...), dann nach
<CODE>sunsite.unc.edu.eigene-domain.de</CODE> und erst zuletzt nach
<CODE>sunsite.unc.edu</CODE> gesucht. Aus diesem Grund sollte man nicht zu viele
Domains in die search-Zeile schreiben, da es lange dauern kann bis alle
durchsucht wurden.</P>
<P>Das Beispiel geht davon aus, dass man zu der Domain
<CODE>unterdomain.eigene-domain.de</CODE> gehört. Der eigene Rechner wird dann
vermutlich <CODE>eigener-Rechner.unterdomain.eigene-domain.de</CODE> heissen. Auf
keinen Fall sollte die search-Zeile die eigene TLD (Top Level Domain, in
diesem Fall »<CODE>de</CODE>«) enthalten. Wenn man regelmässig Verbindungen zu
Computern in anderen Domains aufbaut, dann wird diese wie folgt zusätzlich
eingetragen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
search unterdomain.eigene-domain.de eigene-domain.de andere-domain.com
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Und so weiter. Natürlich sollten existierende Domainnamen anstelle meiner
ausgedachten benutzt werden. Ausserdem sollte man darauf achten, dass am
Ende der Domainnamen keine Punkte stehen - wieso das wichtig ist, wird
später erklärt.</P>
<P>Der nächste Schritt hängt von der verwendeten libc-Version ab. Entweder
muss man die Datei <CODE>/etc/nsswitch.conf</CODE> oder die Datei
<CODE>/etc/host.conf</CODE> anpassen. Wenn bereits eine <CODE>nsswitch.conf</CODE>
existiert, muss diese geändert werden - falls nicht, passt man die
<CODE>host.conf</CODE> an.</P>
<P><B>/etc/nsswitch.conf</B></P>
<P>In dieser etwas längeren Datei wird eingestellt, aus welcher Datei oder
Datenbank Daten zu einem bestimmten Dienst geholt werden. Sie enthält
normalerweise gleich am Anfang sehr hilfreiche Kommentare, die gelesen
werden sollten. Die mit »<CODE>hosts:</CODE>« beginnende Zeile sollte wie folgt
lauten:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
hosts: files dns
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wenn es noch keine Zeile mit »<CODE>hosts:</CODE>« am Anfang gibt, dann wird die
oben gezeigte einfach hinzugefügt. Die Zeile besagt, dass Programme zuerst
in der <CODE>/etc/hosts</CODE>-Datei nachschauen sollen und erst dann das DNS
nach den Vorgaben in der <CODE>resolv.conf</CODE> zur Aufschlüsselung von
Rechnernamen genutzt wird.</P>
<P><B>/etc/host.conf</B> </P>
<P>Diese Datei enthält vermutlich mehrere Zeilen. Eine davon müsste mit
<CODE>order</CODE> beginnen und sollte wie die folgende aussehen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
order hosts,bind
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wenn es keine »<CODE>order</CODE>«-Zeile gibt, wird sie hinzugefügt. Sie
bewirkt, dass die Routinen, die die Computernamen aufschlüsseln, zuerst in
der <CODE>/etc/hosts</CODE> nachschauen und dann beim Nameserver anfragen, der
laut <CODE>resolv.conf</CODE> der Rechner mit der IP 127.0.0.1 ist.</P>
<H2><A NAME="ss3.1">3.1</A> <A HREF="DE-DNS-HOWTO.html#toc3.1">Starten des named</A>
</H2>
<P>Nachdem das alles erledigt ist, ist es an der Zeit, den named das erste
Mal zu starten. Eventuell ist vorher noch die Verbindung ins Internet zu
starten. Dann gibt man</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ndc start/
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>ein. Sollte das nicht funktionieren, klappt statt
dessen vielleicht der folgende Befehl:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
/usr/sbin/ndc start
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wenn auch das nicht das gewünschte Ergebnis liefert, bleibt nur ein
Blick in den Abschnitt
<A HREF="DE-DNS-HOWTO-8.html#DE-DNS-HOWTO-qanda">Fragen und Antworten</A>. Ein Blick in die Datei, in
der der syslog Nachrichten speichert (üblicherweise heisst diese
<CODE>/var/adm/messages</CODE> - sie kann aber auch im Verzeichnis
<CODE>/var/log</CODE> gefunden werden oder nicht <CODE>messages</CODE> sondern
<CODE>syslog</CODE> heissen...), während der named gestartet wird (<CODE>tail -f
/var/log/messages</CODE>) sollte etwas Ähnliches wie das folgende zeigen:</P>
<P>(Zeilen, die mit \ enden, werden in der nächsten Zeile fortgeführt)</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Feb 15 01:26:17 roke named[6091]: starting. named 8.1.1 Sat Feb 14 \
00:18:20 MET 1998 janl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named
Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0)
Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \
(IN) loaded (serial 1)
Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo)
Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0)
Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040
Feb 15 01:26:17 roke named[6092]: Ready to answer queries.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wenn der named Fehler in der Konfiguration findet, meldet er im Logfile
unter anderem den Name der Datei, die den Fehler enthält: entweder
<CODE>named.conf</CODE> oder <CODE>root.hints</CODE> - hoffe ich :-). Dann wird der named
beendet und die Datei muss überarbeitet werden.</P>
<P>Ansonsten können die Einstellungen jetzt getestet werden. Mit
<CODE>nslookup</CODE> kann man seine Arbeit kontrollieren.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
$ nslookup
Default Server: localhost
Address: 127.0.0.1
>
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wenn dieses auf dem Bildschirm erscheint, läuft es. Hoffentlich. Wenn
etwas anderes auftaucht, müssen alle Einstellungen von Anfang an
kontrolliert werden. Jedesmal, wenn die <CODE>named.conf</CODE>-Datei verändert
wurde, muss der named mit dem Befehl </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
named restart
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>neu gestartet werden.</P>
<P>Ansonsten kann jetzt eine erste Anfrage gemacht werden. Zuerst versucht
man einen Rechner herauszufinden, der sich »in der Nähe« befindet.
<CODE>pat.uio.no</CODE> befindet sich in meiner Nähe - an der Universität in Oslo:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
> pat.uio.no
Server: localhost
Address: 127.0.0.1
Name: pat.uio.no
Address: 129.240.130.16
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P><CODE>nslookup</CODE> hat jetzt den gerade konfigurierten named nach dem Rechner
<CODE>pat.uio.no</CODE> gefragt. Um darauf antworten zu können, fragt dieser einen
der Nameserver aus der <CODE>root.hints</CODE>-Datei und bahnt sich von dort aus
seinen Weg zum vollen Namen des Rechners. Vielleicht dauert es ein
wenig, bis das Ergebnis gezeigt wird, weil zuerst alle Domains aus der
<CODE>/etc/resolv.conf</CODE> durchsucht werden.</P>
<P>Macht man die gleiche Anfrage nochmal, bekommt man dieses Ergebnis:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
> pat.uio.no
Server: localhost
Address: 127.0.0.1
Non-authoritative answer:
Name: pat.uio.no
Address: 129.240.2.50
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Man beachte die »<CODE>Non-authoritative answer:</CODE>«-Zeile, die dieses mal
zusätzlich erscheint. Sie bedeutet, dass der named dieses Mal nicht im Netz
nachgefragt hat, sondern dass die Informationen aus seinem Cache stammen.
Durch die »<CODE>Non-authorative answer:</CODE>« wird man über die (sehr kleine)
Möglichkeit informiert, dass diese zwischengespeicherten Daten
<EM>eventuell</EM> nicht mehr aktuell sind. Wenn <CODE>nslookup</CODE> diese Zeile bei
der zweiten Anfrage ausgibt, ist das ein sicheres Zeichen dafür, dass die
Daten zwischengespeichert werden und dass der named wie gewünscht
funktioniert. <CODE>nslookup</CODE> wird beendet, indem man »<CODE>exit</CODE>« eingibt.</P>
<H2><A NAME="ss3.2">3.2</A> <A HREF="DE-DNS-HOWTO.html#toc3.2">Was noch verbessert werden kann</A>
</H2>
<P>In grossen, gut organisierten wissenschaftlichen oder ISP (Internet
Service Provider)-Netzen sieht man gelegentlich, dass die
Netzwerkadministratoren sogenannte »forwarder«-DNS-Server eingerichtet
haben, die dazu beitragen, dass die interne und externe Netzwerkbelastung
klein bleibt. Es ist nicht leicht, herauszufinden, ob man sich in so einem
Netz befindet - oder nicht. Es ist aber auch nicht wichtig und indem man den
DNS-Server vom eigenen Provider als »forwarder« benutzt, kann man die
Antwortzeiten auf Anfragen erheblich verkürzen und die Netzwerkbelastung
sehr niedrig halten. Gerade für Leute mit Modem ist das ein nicht
unerheblicher Vorteil. Um ein Beispiel nennen zu können, gehe ich davon aus,
dass der Netz-Provider zwei Nameserver hat, die man benutzen kann und die
die IPs <CODE>10.0.0.1</CODE> und <CODE>10.1.0.1</CODE> haben. Dann werden in die Datei
<CODE>named.conf</CODE> in den Anfangsabschnitt »options« die folgenden Zeilen
eingefügt:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
forward first;
forwarders {
10.0.0.1;
10.1.0.1;
};
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Jetzt den Nameserver neu starten und mit <CODE>nslookup</CODE> testen. Er sollte
die gleichen Ergebnisse wie vorher liefern.</P>
<H2><A NAME="ss3.3">3.3</A> <A HREF="DE-DNS-HOWTO.html#toc3.3">Gratulation</A>
</H2>
<P>Damit ist die Installation eines »caching-only« Nameservers beendet. Zeit
für ein Bier, eine Milch oder was auch immer man zur Feier des Tages trinken
möchte.</P>
<HR>
<A HREF="DE-DNS-HOWTO-4.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-DNS-HOWTO-2.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-DNS-HOWTO.html#toc3"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>
|