This file is indexed.

/usr/share/doc/HOWTO/de-html/DE-Netzwerk-HOWTO-8.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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
 <TITLE>Linux Netzwerk HOWTO : Neue Netzwerkf&auml;higkeiten mit Kernel 2.2       </TITLE>
 <LINK HREF="DE-Netzwerk-HOWTO-9.html" REL=next>
 <LINK HREF="DE-Netzwerk-HOWTO-7.html" REL=previous>
 <LINK HREF="DE-Netzwerk-HOWTO.html#toc8" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-Netzwerk-HOWTO-9.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-Netzwerk-HOWTO-7.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-Netzwerk-HOWTO.html#toc8"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="DE-NET3-HOWTO-neu-mit-Kernel-22"></A> <A NAME="s8">8.</A> <A HREF="DE-Netzwerk-HOWTO.html#toc8">Neue Netzwerkf&auml;higkeiten mit Kernel 2.2       </A></H2>

<P>Der Kernel 2.2 hat die Routing-F&auml;higkeiten von Linux wesentlich verbessert.
Ungl&uuml;cklicherweise gibt es fast keine Dokumentation zur Nutzung der neuen
F&auml;higkeiten und wenn vorhanden ist sie schwer zu finden.</P>
<P>Ich habe einige Zeit darin investiert und bereits einige Dinge erreicht. Mit
der Zeit und mit wachsendem Verst&auml;ndnis werde ich diese Dokumentation 
erweitern.</P>
<P>Bis Kernel 2.0 nutzte Linux das Standardkommando <CODE>route</CODE> zum 
Erstellen von Routingregeln in einer einzigen Routingtabelle. Diese konnte
mit 
<BLOCKQUOTE><CODE>
<PRE>
netstat -rn
</PRE>
</CODE></BLOCKQUOTE>

auf der Kommandozeile angezeigt werden.</P>
<P>Mit neueren Kerneln (ab 2.1) gibt es eine weitere regelbasierte M&ouml;glichkeit,
die es erlaubt, mehrere Routingtabellen zu f&uuml;hren. Die neuen Regeln sind 
viel flexibler bei der Entscheidung, wie ein Paket gehandhabt wird. Es sind
nun Regeln m&ouml;glich, die nicht mehr nur auf der Zieladresse, sondern
auch auf der Quelladresse, dem TOS (Type of Service) Feld des Paketes oder 
der Schnittstelle auf der das Paket ankam, basieren k&ouml;nnen.</P>

<H2><A NAME="ss8.1">8.1</A> <A HREF="DE-Netzwerk-HOWTO.html#toc8.1">Die Grundlagen</A>
</H2>

<P>Die Routingtabelle kann so angezeigt werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ip route
</PRE>
</CODE></BLOCKQUOTE>
</P>

<P>Auf meinem Rechner ergibt sich folgende Ausgabe:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
207.149.43.62 dev eth0  scope link
207.149.43.0/24 dev eth0  proto kernel  scope link  src 207.149.43.62
default via 207.149.43.1 dev eth0
</PRE>
</CODE></BLOCKQUOTE>
</P>

<P>Die erste Zeile »207.149.43.62 dev eth0 scope link« ist dabei die 
Routingregel f&uuml;r die Schnittstelle.</P>
<P>Die zweite Zeile 
»207.149.43.0/24 dev eth0 proto kernel scope link src 207.149.43.62«
ist eine Regel, die aussagt: alles nach 207.149.43.0 mu&szlig; &uuml;ber 
207.149.43.62 versandt werden.</P>
<P>Die dritte Zeile »default via 207.149.43.1 dev eth0«
ist die Regel f&uuml;r die Defaultroute.</P>

<H3>Nutzen dieser Informationen</H3>

<P>Jetzt nachdem wir uns eine einfache Routingtabelle angesehen haben, ist
es Zeit, mit ihr zu arbeiten. Dazu sollte man zuerst die 
englischsprachige Dokumentation zum <EM>Policy Based Routing</EM>
lesen, die von folgender Adresse bezogen werden kann:
<BLOCKQUOTE><CODE>
<A HREF="http://www.compendium.com.ar/policy-routing.txt">http://www.compendium.com.ar/policy-routing.txt</A></CODE></BLOCKQUOTE>

Wenn Sie dieser Text verwirrt, dann
macht das nichts - es ist ein verwirrender Text.
Aber er bietet eine vollst&auml;ndige Beschreibung dessen, was man mit dem
neuen Routing alles anstellen kann.</P>

<H2><A NAME="ss8.2">8.2</A> <A HREF="DE-Netzwerk-HOWTO.html#toc8.2">Anlegen einer Route mit dem ip Befehl</A>
</H2>

<P>Im letzten Abschnitt haben wir das Anzeigen und die Bedeutung der
Ausgabe der Routingtabelle besprochen. Gl&uuml;cklicherweise &auml;hnelt
die Ausgabe der Tabelle der Syntax zu ihrer Erzeugung:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ip route add 207.149.43.62 dev eth0  scope link
ip route add 207.149.43.0/24 dev eth0 proto kernel scope link src 207.149.43.62
ip route add 127.0.0.0/8 dev lo  scope link
ip route add default via 207.149.43.1 dev eth0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wie Sie sehen, sind Ausgabe und Kommandos fast identisch, wenn man
mal von dem <CODE>ip route add</CODE> vor jeder Zeile absieht.</P>

<H2><A NAME="ss8.3">8.3</A> <A HREF="DE-Netzwerk-HOWTO.html#toc8.3">NAT mit dem Kernel 2.2 nutzen</A>
</H2>

<P>Die IP Network Address Translation Funktionalit&auml;t ist so ziemlich der
standardisierte »Big Brother« des Linux IP Masquerading. NAT ist in
gewisser Hinsicht im <EM>RFC&nbsp;1631</EM> spezifiziert. Es bietet 
M&ouml;glichkeiten, die das IP-Masquerading nicht bietet. Damit ist es eher 
f&uuml;r die Nutzung f&uuml;r Firmen Firewall-Router und noch gr&ouml;&szlig;ere 
Installationen geeignet.</P>
<P>Eine Alpha Implementierung von NAT f&uuml;r den Linux 2.0.29 Kernel wurde
von Michael Hasenstein 
(<CODE>
<A HREF="mailto:Michael.Hasenstein@informatik.tu-chemnitz.de">Michael.Hasenstein@informatik.tu-chemnitz.de</A></CODE>) entwickelt.
Michaels Dokumentation und Implementierung sind verf&uuml;gbar unter:</P>
<P>
<BLOCKQUOTE><CODE>
<A HREF="http://www.suse.de/~mha/HyperNews/get/linux-ip-nat.html">http://www.suse.de/~mha/HyperNews/get/linux-ip-nat.html</A></CODE></BLOCKQUOTE>
</P>
<P>Der wesentlich verbesserte TCP/IP Stack des 2.2er Linux Kernel enth&auml;lt
bereits die NAT-Funktionalit&auml;t. Diese M&ouml;glichkeit macht eine Zusatzl&ouml;sung
wie von Michael Hasenstein unn&ouml;tig.</P>
<P>Um sie zu aktivieren, m&uuml;ssen folgende Kerneloptionen gew&auml;hlt werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
CONFIG_IP_ADVANCED_ROUTER,
CONFIG_IP_MULTIPLE_TABLES (auch bekannt als Policy Routing)
CONFIG_IP_ROUTE_NAT (auch bekannt als Fast NAT)
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Ben&ouml;tigen sie granularere NAT Regeln, dann m&ouml;chten Sie ebenfalls
die Firewallfunktionalit&auml;t aktivieren:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
CONFIG_IP_FIREWALL
CONFIG_IP_ROUTE_FWMARK.
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Um diese Kernelfunktionalit&auml;t auch nutzen zu k&ouml;nnen, ben&ouml;tigt 
man das <CODE>ip</CODE> Programm von Alexey Kuznyetsov, welches
von folgendem Server bezogen werden kann:</P>
<P>
<BLOCKQUOTE><CODE>
<A HREF="ftp://ftp.inr.ac.ru/ip-routing/">ftp.inr.ac.ru:/ip-routing</A></CODE></BLOCKQUOTE>
</P>

<H3>NAT f&uuml;r eingehende Pakete</H3>

<P>Ist der Kernel richtig konfiguriert und sind alle Tools installiert, kann man
mit folgendem Kommando die Adress&uuml;bersetzung f&uuml;r Pakete einrichten.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ip route add nat &lt;ext-addr>[/&lt;masklen>] via &lt;int-addr>
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Diese Regel wird in allen eingehenden Paketen mit der Zieladresse »ext-addr«
(also die Adresse, die von au&szlig;en z.B. vom Internet sichtbar ist) die 
Zieladresse nach »int-addr« um&auml;ndern (das ist eine Adresse im internen
Netzwerk, hinter dem Gateway bzw. der Firewall). Das Paket wird dann
gem&auml;&szlig; der lokalen Routing Regeln weitergeleitet.
Es ist m&ouml;glich, entweder einzelne oder ganze Bereiche von Hostadressen
zu ver&auml;ndern.</P>
<P>Beispiele:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ip route add nat 195.113.148.34 via 192.168.0.2
ip route add nat 195.113.148.32/27 via 192.168.0.0
</PRE>
</CODE></BLOCKQUOTE>
</P>

<P>Das erste Kommando macht die interne Adresse 192.168.0.2 nach au&szlig;en hin
als 195.113.148.34 zug&auml;nglich. Das zweite Beispiel zeigt das Abbilden
des Adre&szlig;bereiches 192.168.0.0-31 auf den Bereich 195.113.148.32-63.</P>

<H2><A NAME="ss8.4">8.4</A> <A HREF="DE-Netzwerk-HOWTO.html#toc8.4">Kernel 2.2 ip Kommandoreferenz (in Arbeit)</A>
</H2>

<P>Haben Sie das Paket <CODE>iproute2</CODE> installiert, kann durch den
einfachen Aufruf von <CODE>ip</CODE> die grundlegende Syntax angezeigt
werden.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ip
Usage: ip [ OPTIONS ] OBJECT [ COMMAND [ ARGUMENTS ]]
where  OBJECT := { link | addr | route | rule | neigh | tunnel |
                   maddr | mroute | monitor }
       OPTIONS := { -V[ersion] | -s[tatistics] | -r[esolve] |
                    -f[amily] { inet | inet6 | dnet | link } | -o[neline] }
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H3>Zur Bedeutung der Parameter:</H3>

<P>»OBJECT« spezifiert das Objekt, f&uuml;r das Informationen 
ermittelt oder mit dem anderen Kommandos durchgef&uuml;hrt werden sollen.
Die von der aktuellen Implementation unterst&uuml;tzten Typen sind:</P>

<P>
<DL>
<DT><B>link</B><DD>
<P>eine Netzwerkschnittstelle z.B. <CODE>eth0</CODE> oder <CODE>ppp0</CODE></P>
<DT><B>address</B><DD>
<P>die IP (IPv4 oder IPv6) Adresse der Schnittstelle</P>
<DT><B>neigh</B><DD>
<P>ein ARP oder NDISC Cache Eintrag</P>
<DT><B>route</B><DD>
<P>ein Eintrag der Routingtabelle</P>
<DT><B>rule</B><DD>
<P>eine Regel in der Routing Policy Datenbank</P>
<DT><B>maddress</B><DD>
<P>eine Multicast Adresse</P>
<DT><B>mroute</B><DD>
<P>ein Multicast Routing Cache Eintrag</P>
<DT><B>tunnel</B><DD>
<P>Objekt, um zu entscheiden, ob IP Tunneling verwendet wird</P>
</DL>
</P>

<P>Der Umfang an m&ouml;glichen Optionen jedes Objekttypes h&auml;ngt vom Typ der
durchzuf&uuml;hrenden Aktion ab. Ganz grundlegend ist es f&uuml;r jedes Objekt
m&ouml;glich, ein »add«, »delete« oder ein »show« 
durchzuf&uuml;hren. Nicht alle Objekte bieten weitere Kommandos.
Nat&uuml;rlich ist f&uuml;r alle Objekte das Kommando »help« m&ouml;glich.
Dieses gibt die Syntax f&uuml;r das jeweilige Objekt aus.</P>
<P>Wird kein Kommando angegeben, wird das Standardkommando ausgef&uuml;hrt. Das ist
typischerweise »show«. K&ouml;nnen keine Informationen zum abgefragten
Objekt ausgegeben werden, wird nur die Hilfe ausgegeben.</P>

<P>»ARGUMENTS« ist eine Liste von Argumenten, die kommando- und
objektspezifisch sind. Es gibt zwei Typen f&uuml;r Argumente:</P>

<P>»Flags« diese bestehen aus einem Schl&uuml;sselwort gefolgt von
einem Wert. F&uuml;r die einfachere Benutzung sind f&uuml;r Kommandoargumente
oft Standardwerte vorgesehen. So ist der Parameter »dev>« 
standardm&auml;&szlig;ig auf »ip link« gesetzt.</P>

<H3>Zur Bedeutung der Optionen</H3>


<P>
<DL>
<DT><B>-V, -Version</B><DD>
<P>Zeigt die Versionsnummer des benutzten <CODE>ip</CODE> 
Programmes an.</P>

<DT><B>-s, -stats, -statistics</B><DD>
<P>Diese Option f&uuml;hrt dazu, da&szlig; zus&auml;tzliche Informationen 
ausgegeben werden. Wird die Option mehrfach angegeben,
erfolgen noch mehr Ausgaben.</P>

<DT><B>-f, -family {inet, inet6, link}</B><DD>
<P>Erm&ouml;glicht das Angeben der zu verwendenden Protokollfamilie.</P>
<P>
<DL>
<DT><B>inet</B><DD>
<P>IPv4 (der aktuelle Internetstandard)</P>
<DT><B>inet6</B><DD>
<P>IPv6 (der kommende IPv4 Nachfolger)</P>
<DT><B>link</B><DD>
<P>steht f&uuml;r eine physische Verbindung</P>
</DL>
</P>
<P>Wird diese Option nicht angegeben, versucht das Programm 
die Protokollfamilie selbst zu bestimmen. Sind daf&uuml;r nicht 
genug Informationen gegeben, werden die
Standardeinstellungen verwendet.</P>

<DT><B>-o, -oneline</B><DD>
<P>Bei der Ausgabe wird pro Datensatz nur eine Zeile verwendet.</P>

<DT><B>-r, -resolve</B><DD>
<P>Mit dieser Option nutzt das Programm den lokalen
Aufl&ouml;sungsdienst (z.B. DNS) um Namen statt IP Adressen auszugeben.</P>
</DL>
</P>

<H3>Anwenderfehler</H3>

<P>Alle Operationen des <CODE>ip</CODE> Kommandos sind dynamisch.
Ist die angegebene Syntax fehlerhaft, wird die Systemkonfiguration
nicht ver&auml;ndert. Es gibt nur eine Ausnahme: das »ip link« 
Kommando, das zum &Auml;ndern der Schnittstelleneigenschaften
genutzt wird.</P>

<P>Es ist schwierig, alle Fehlermeldungen anzugeben (speziell die bei
Syntaxfehlern). Typischerweise sollte die Bedeutung einer Fehlermeldung
im Kontext des Objektes klar sein.</P>
<P>Typische Fehler sind:
<OL>
<LI>Der Kernel unters&uuml;tzt Netlink nicht. Die Fehlermeldung:
<BLOCKQUOTE><CODE>
<PRE>
Cannot open netlink socket: Invalid value
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI>Der Kernel unterst&uuml;tzt RTNETLINK nicht. Je nach Kommando wird
eine der folgenden Ausgaben angezeigt:
<BLOCKQUOTE><CODE>
<PRE>
Cannot talk to rtnetlink: Connection refused 
Cannot send dump request: Connection refused
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI>Die Kerneloption CONFIG_IP_MULTIPLE_TABLES 
ist nicht aktiv. In diesem Fall schl&auml;gt jede Benutzung des 
Kommandos <CODE>ip rule</CODE> fehl. Beispiel:
<BLOCKQUOTE><CODE>
<PRE>
ip rule list RTNETLINK 
error: Invalid argument 
dump terminated
</PRE>
</CODE></BLOCKQUOTE>
</LI>
</OL>
</P>

<HR>
<A HREF="DE-Netzwerk-HOWTO-9.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-Netzwerk-HOWTO-7.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-Netzwerk-HOWTO.html#toc8"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>