This file is indexed.

/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&uuml;r
Benutzer, die sich ins Internet einw&auml;hlen.</B></P>

<P>Ein »caching-only« Nameserver (ich werde den englischen Begriff weiterverwenden,
weil sich »nur-Zwischenspeicher« nicht besonders sch&ouml;n anh&ouml;rt) wird auf
Namensanfragen antworten und sich bei der n&auml;chsten Anfrage an die alte
Antwort erinnern. Dieses Vorgehen verk&uuml;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&uuml;r einen caching-only Nameserver

options {
        directory "/var/named";

        // Wenn Verbindungen &uuml;ber eine Firewall gehen m&uuml;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&ouml;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&uuml;r den Nameserver vorgesehene
Verzeichnis f&uuml;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&ouml;nnten hier 
; einf&uuml;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&auml;lt die Hauptnameserver des Internet; auch
Root-Nameserver genannt. Da sich diese Daten gelegentlich &auml;ndern, muss sie
regelm&auml;ssig erneuert werden. Mehr dar&uuml;ber gibt es im Abschnitt 
<A HREF="DE-DNS-HOWTO-6.html#DE-DNS-HOWTO-maint">Wartung</A>.</P>

<P>Der n&auml;chste zu erkl&auml;rende Abschnitt in der <CODE>named.conf</CODE>-Datei ist die
letzte <CODE>Zone</CODE>. Darauf werde ich aber erst sp&auml;ter zur&uuml;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&auml;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&ouml;ren k&ouml;nnte, der eine Anfrage an den named durchf&uuml;hrt.
Die »<CODE>nameserver</CODE>«-Zeile enth&auml;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&uuml;r Adressen hat). Wenn man mehrere Nameserver auflisten
m&ouml;chte, macht man das, indem f&uuml;r jeden Server eine eigene
»<CODE>nameserver</CODE>«-Zeile eingef&uuml;gt wird.  Der named selber wird
diese Datei nie einlesen, sondern der resolver. Das ist ein Programm,
welches die Anfragen an den named durchf&uuml;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&ouml;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&auml;ssig Verbindungen zu
Computern in anderen Domains aufbaut, dann wird diese wie folgt zus&auml;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&uuml;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&auml;ter erkl&auml;rt.</P>

<P>Der n&auml;chste Schritt h&auml;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&auml;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&auml;ngeren Datei wird eingestellt, aus welcher Datei oder
Datenbank Daten zu einem bestimmten Dienst geholt werden. Sie enth&auml;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&uuml;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&uuml;sselung von
Rechnernamen genutzt wird.</P>

<P><B>/etc/host.conf</B> </P>

<P>Diese Datei enth&auml;lt vermutlich mehrere Zeilen. Eine davon m&uuml;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&uuml;gt. Sie
bewirkt, dass die Routinen, die die Computernamen aufschl&uuml;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&uuml;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 (&uuml;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&auml;hrend der named gestartet wird (<CODE>tail -f
/var/log/messages</CODE>) sollte etwas &Auml;hnliches wie das folgende zeigen:</P>

<P>(Zeilen, die mit \ enden, werden in der n&auml;chsten Zeile fortgef&uuml;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&auml;lt: entweder
<CODE>named.conf</CODE> oder <CODE>root.hints</CODE> - hoffe ich :-). Dann wird der named
beendet und die Datei muss &uuml;berarbeitet werden.</P>

<P>Ansonsten k&ouml;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&auml;uft es. Hoffentlich. Wenn
etwas anderes auftaucht, m&uuml;ssen alle Einstellungen von Anfang an
kontrolliert werden. Jedesmal, wenn die <CODE>named.conf</CODE>-Datei ver&auml;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&auml;he« befindet.
<CODE>pat.uio.no</CODE> befindet sich in meiner N&auml;he - an der Universit&auml;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&ouml;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&auml;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 &uuml;ber die (sehr kleine)
M&ouml;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&uuml;r, dass die
Daten zwischengespeichert werden und dass der named wie gew&uuml;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&uuml;rzen und die Netzwerkbelastung
sehr niedrig halten. Gerade f&uuml;r Leute mit Modem ist das ein nicht
unerheblicher Vorteil. Um ein Beispiel nennen zu k&ouml;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&uuml;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&uuml;r ein Bier, eine Milch oder was auch immer man zur Feier des Tages trinken
m&ouml;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>