/usr/share/doc/HOWTO/de-html/DE-ISDN-HOWTO-7.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 399 400 401 402 403 404 405 406 407 408 409 410 411 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
<TITLE>Linux ISDN HOWTO: Routing </TITLE>
<LINK HREF="DE-ISDN-HOWTO-8.html" REL=next>
<LINK HREF="DE-ISDN-HOWTO-6.html" REL=previous>
<LINK HREF="DE-ISDN-HOWTO.html#toc7" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-ISDN-HOWTO-8.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-ISDN-HOWTO-6.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-ISDN-HOWTO.html#toc7"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="DE-ISDN-HOWTO-routing"></A> <A NAME="s7">7.</A> <A HREF="DE-ISDN-HOWTO.html#toc7">Routing </A> <!--ISDN!Routing--> <!--Routing--> <!--Netzwerk!Routing--> </H2>
<P> </P>
<H2><A NAME="DE-ISDN-HOWTO-routingWas"></A> <A NAME="ss7.1">7.1</A> <A HREF="DE-ISDN-HOWTO.html#toc7.1">Was ist Routing? </A>
</H2>
<P>In einem lokalen Netzwerk ist das Leben einfach: wenn ein
TCP/IP-Paket zu einem anderen Rechner gesendet werden soll,
wird dieses auf dem Ethernet verschickt. </P>
<P>Ist der Rechner an das Internet
oder an ein größeres Netzwerk (WAN) angeschlossen, ist die
Aufgabe schon etwas schwieriger, denn wenn der Ziel-Rechner
bzw. die Ziel-IP-Nummer nicht im lokalen Ethernet erreichbar ist,
so muß
dem Kernel gesagt werden, daß alle nicht lokal zustellbaren
Pakete freundlicherweise von einem Gatewayrechner
weitergeleitet werden.</P>
<P>Komplizierter ist es, wenn der betreffende Rechner selbst ein
Gatewayrechner ist und mehrere Netzdevices wie Ethernetkarten,
Modems, ISDN-Karten etc. zur Verfügung hat und jeweils über diese
Devices unterschiedliche Rechner/Netze erreichbar sind.
Das ist die Aufgabe vom Routing:</P>
<P>
<BLOCKQUOTE>
Für jede IP-Nummer muß definiert werden, auf welchem
Weg (Route) diese erreicht werden kann.
</BLOCKQUOTE>
</P>
<P>Man unterscheidet folgende Typen:</P>
<P>
<DL>
<DT><B>Netzrouten</B><DD>
<P>Hier wird angeben, wie ein komplettes Netz erreichbar
ist. Als <EM>Beispiel 1</EM> wollen wir von einem lokalen
Ethernet ausgehen, wobei das Netz 192.168.1.0
mit der Netmask 255.255.255.0 über das Device
<CODE>eth0</CODE> erreichbar ist.</P>
<DT><B>Hostrouten</B><DD>
<P>Man definiert, wie ein einzelner Rechner erreichbar ist.
So ist der Rechner 192.168.0.1 in <EM>Beispiel 2</EM>
mittels einer syncPPP Verbindung über das Device
<CODE>ippp0</CODE> erreichbar.</P>
<DT><B>Default-Route</B><DD>
<P>
<!--
Default Route
-->
<!--
Netzwerk!Default Route
-->
Im Internet gibt es recht viele IP-Nummern - es ist daher
mühsam und langweilig, für alle einzelnen IP-Nummern oder
Netze einzelne Routing-Einträge zu machen. Daher gibt
es die Möglichkeit, zu sagen, daß alle IP-Nummern, für
die keine spezielle Regel vorhanden ist, an den Rechner mit
der IP-Nummer 192.168.0.1 geschickt werden sollen. Dieses
ist <EM>Beispiel 3</EM>.</P>
<P>Wobei beachtet werden sollte, daß es im allgemeinen keinen
Sinn macht, mehr als eine Default-Route anzugeben.</P>
</DL>
</P>
<H2><A NAME="DE-ISDN-HOWTO-routingWie"></A> <A NAME="ss7.2">7.2</A> <A HREF="DE-ISDN-HOWTO.html#toc7.2">Wie konfiguriert man das Routing? </A>
</H2>
<P>Die Routingeinträge werden dem Kernel zur Laufzeit
mit dem Kommando <CODE>route</CODE> mitgeteilt und wieder entzogen.</P>
<H3>SuSE Methode <!--/etc/route.conf--> <!--/sbin/init.d/route--> <!--Routing!/etc/route.conf--> <!--Routing!/sbin/init.d/route--> <!--Netzwerk!Routing!/etc/route.conf--> <!--Netzwerk!Routing!/sbin/init.d/route--> </H3>
<P>Bei SuSE können die Routingeinträge fest in die Datei
<CODE>/etc/route.conf</CODE>
eingetragen werden, die beim Booten oder durch einen
Runlevelwechsel vom Skript
<CODE>/sbin/init.d/route</CODE> ausgewertet wird.</P>
<P>Die Einträge für die obigen Beispiele sehen so aus:
<BLOCKQUOTE><CODE>
<PRE>
# Beispiel 1:
192.168.1.0 0.0.0.0 255.255.255.0 eth0
# Beispiel 2:
192.168.0.1 0.0.0.0 255.255.255.255 ippp0
# Beispiel 3:
default 192.168.0.1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Die <EM>1. Spalte</EM> gibt das Ziel an, also das Netz, die IP-Nummer,
oder das Schlüsselwort <CODE>default</CODE>.
In der <EM>3. Spalte</EM> steht, falls notwendig, die zugehörige
Netmask.
Die <EM>2. Spalte</EM> legt den Gatewayrechner fest, an den die
Anfragen geschickt werden sollen.
In der <EM>4. Spalte</EM> steht das zu verwendene Device.</P>
<P>Hier sieht man auch in der 3. Zeile,
daß bei Verwendung eines Gatewayrechners die Angabe des Devices
nicht nötig ist, da sie selbständig ermittelt wird.
Allerdings muß in diesem Beispiel die Hostroute auf
192.168.0.1 definiert sein, bevor man sie zum Setzen
der Defaultroute nutzen kann. Die Reihenfolge
ist wichtig.</P>
<P>Um die Routingtabelle manuell zu setzen oder zu löschen,
gibt man folgendes ein:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
/sbin/init.d/route start
/sbin/init.d/route stop
</PRE>
</CODE></BLOCKQUOTE>
</P>
<H3>Manuelle Methode <!--Routing!route--> <!--Netzwerk!Routing!route--> </H3>
<P>Natürlich kann man die einzelnen Routing-Einträge auch manuell
mit dem <CODE>route</CODE> Befehl setzen:
<BLOCKQUOTE><CODE>
<PRE>
# Beispiel 1:
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
# Beispiel 2:
route add -host 192.168.0.1 dev ippp0
# Beispiel 3:
route add default gw 192.168.0.1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Weitere Informationen zu <CODE>route</CODE> finden sich in
<CODE>man route</CODE>.</P>
<H3>Löschen von Routing-Einträgen </H3>
<P>Routing-Einträge können zum einem direkt gelöscht werden,
sie werden aber auch automatisch gelöscht, wenn das
zugrundeliegende Netzdevice gelöscht oder umkonfiguriert wird.</P>
<P>Dies hat in diesem Zusammenhang einen unerwünschten Nebeneffekt.
Der <CODE>ipppd</CODE> baut die Verbindung auf und bekommt eine
neue IP-Nummer vom Server zugewiesen, wobei selbständig
eine neue Hostroute auf die IP-Nummer des Gegners
eingerichtet wird.</P>
<P>Allerdings wird eine eventuell vorhandene Defaultroute über
dieses Device gelöscht. </P>
<P>Durch die PPP-Option <CODE>defaultroute</CODE>
könnte man sich automatisch wieder eine Defaultroute
anlegen lassen.
Allerdings ist diese Methode nicht sehr flexibel,
vielleicht will man ja doch keine Defaultroute, und man
hätte hiermit keine Möglichkeit zu steuern, wie sich beim
Verbindungsabbau verhalten werden soll.
Daher wird beim Verbindungauf- und abbau jeweils ein
Skript gestartet, siehe Abschnitt
<A HREF="#DE-ISDN-HOWTO-ipup">Kontrollieren der Routingtabelle beim Verbindungsauf- und abbau</A>.</P>
<H2><A NAME="DE-ISDN-HOWTO-ipup"></A> <A NAME="ss7.3">7.3</A> <A HREF="DE-ISDN-HOWTO.html#toc7.3">Kontrollieren der Routingtabelle beim Verbindungsauf- und abbau </A>
</H2>
<H3>Die Skripte ip-up/ip-down <!--ipppd!/etc/ppp/ip-up--> <!--ipppd!/etc/ppp/ip-down--> <!--/etc/ppp/ip-up--> <!--/etc/ppp/ip-down--> <!--ISDN!ipppd!/etc/ppp/ip-up--> <!--ISDN!ipppd!/etc/ppp/ip-down--> <!--PPP!/etc/ppp/ip-up--> <!--PPP!/etc/ppp/ip-down--> </H3>
<P>Der <CODE>ipppd</CODE> bietet die einfache Möglichkeit,
beim Verbindungsaufbau das Skript
<CODE>/etc/ppp/ip-up</CODE> und beim Abbau
<CODE>/etc/ppp/ip-down</CODE> zu starten, wobei jeweils
die folgenden Parameter über den neuen Zustand
übergeben werden:</P>
<P>
<UL>
<LI> <CODE>$1</CODE>: Interface</LI>
<LI> <CODE>$2</CODE>: Device</LI>
<LI> <CODE>$3</CODE>: Geschwindigkeit
(nur aus Kompatibilitätsgründen)</LI>
<LI> <CODE>$4</CODE>: lokale IP-Nummer</LI>
<LI> <CODE>$5</CODE>: IP-Nummer des Gegners</LI>
</UL>
</P>
<P>Durch Installation geeigneter Skripte kann also die
Default-Route neu gesetzt werden.
Die Skripte könnten jeweils so aussehen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
#!/bin/sh
/sbin/route add default gw $5
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Bei SuSE gibt es ein Skript <CODE>/etc/ppp/ip-up</CODE>,
welches für den <EM>Hausgebrauch</EM> ausreicht. Die
Routen werden aufgrund der Konfigurationsdateien
gesetzt und wieder hergestellt. Weitere Kommandos
können vom Administrator eingefügt werden, um z.B. E-Mails
zu verschicken.</P>
<P>Das Skript <CODE>ip-down</CODE> ist ein symbolischer Link auf
<CODE>ip-up</CODE>, so daß man nur eine Datei zu verwalten hat.</P>
<H3>Was machen die Skripte ip-up/ip-down? </H3>
<P>Es wird geprüft, ob das Interface <CODE>ipppx</CODE> ist; sollte also bei
Analog-PPP nicht stören. Wer dort etwas eintragen will,
sollte die Stelle leicht finden.</P>
<P>Wenn das Skript nach dem Verbindungsaufbau als
<CODE>ip-up</CODE> aufgerufen wird,
wird eine Default-Route auf die gerade zugewiesene IP-Nummer
gesetzt.</P>
<P>Wenn das Skript nach dem Abbau der Verbindung als <CODE>ip-down</CODE>
aufgerufen wird, dann wird das Interface gelöscht.
Das Interface wird wie in <CODE>/etc/rc.config</CODE>
wieder neu angelegt, es wird also wieder auf die
ursprünglichen IP-Nummer gesetzt.
Nach den Angaben in <CODE>/etc/route.conf</CODE> werden die
Routingeinträge für dieses Device neu eingerichtet.
Somit ist dial-on-demand wieder möglich.
Ist dort keine Default-Route angegeben, wird auch keine gesetzt.</P>
<P>Falls dial-on-demand nicht gewünscht wird, so darf in
der Datei <CODE>/etc/route.conf</CODE> bzw. in YaST keine
Default-Route (Default-Gateway) angegeben werden. Dadurch
existiert nur während einer Verbindung eine Default-Route; diese
wird beim Verbindungsabbau gelöcht und nicht neu angelegt.
Die Verbindung kann dann manuell oder durch ein Skript mit
dem Kommando
<BLOCKQUOTE><CODE>
<PRE>
isdnctrl dial ippp0
</PRE>
</CODE></BLOCKQUOTE>
aufgebaut werden. Alternativ geht dieses auch durch das
manuelle Setzen der Default-Route.</P>
<P>Dadurch kann z.B. auch erreicht werden, daß mit verschiedenen
Providern gearbeitet wird. In dem Fall muß man ja
sowieso entscheiden, welche
Verbindung nun hochgefahren werden soll, z.B.:
<BLOCKQUOTE><CODE>
<PRE>
isdnctrl dial ippp17
</PRE>
</CODE></BLOCKQUOTE>
</P>
<H2><A NAME="DE-ISDN-HOWTO-uebungRoute"></A> <A NAME="ss7.4">7.4</A> <A HREF="DE-ISDN-HOWTO.html#toc7.4">Übung: Kontrolliere die IP-Nummer und die Routing-Tabelle </A>
</H2>
<P>Folgende Übung sollte jetzt durchlaufen werden:
<OL>
<LI>Überwache, wie in Abschnitt
<A HREF="DE-ISDN-HOWTO-3.html#DE-ISDN-HOWTO-lessVLM">Betrachte messages</A>
beschrieben, die Datei <CODE>/var/log/messages</CODE>.</LI>
<LI>Prüfe <CODE>ip-up</CODE> und <CODE>ip-down</CODE>:
<P>
<BLOCKQUOTE><CODE>
<PRE>
# ls -la /etc/ppp/ip-*
lrwxrwxrwx 1 root root 5 Mar 20 10:16 /etc/ppp/ip-down -> ip-up
-rwxr-xr-x 1 root root 1813 Mar 24 23:03 /etc/ppp/ip-up
</PRE>
</CODE></BLOCKQUOTE>
Siehe auch Abschnitt
<A HREF="DE-ISDN-HOWTO-11.html#DE-ISDN-HOWTO-installation">Installation</A>.</P>
</LI>
<LI>Prüfe die IP-Nummern und die Routingtabelle <EM>vor</EM>
einer Verbindung
<P>
<BLOCKQUOTE><CODE>
<PRE>
# ifconfig ippp0
ippp0 Link encap:Point-Point Protocol
inet addr:192.168.0.99 P-t-P:192.168.0.1 Mask:255.0.0.0
UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 ippp0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 2 lo
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 ippp0
</PRE>
</CODE></BLOCKQUOTE>
</P>
</LI>
<LI>Nun sollte man eine Verbindung initiieren.
Dazu kann man entweder ein Paket z.B. mit
<CODE>ping 141.1.1.1</CODE> verschicken oder das Wählen direkt
mit dem Befehl
<BLOCKQUOTE><CODE>
<PRE>
isdnctrl dial ippp0
</PRE>
</CODE></BLOCKQUOTE>
verlangen.
Als Beispiel bekommen wir die IP-Nummer
1.2.3.4 zugewiesen, der Gegner habe die
IP-Nummer 5.6.7.8 .
</LI>
<LI>Prüfe die IP-Nummer und die Routingtabelle <EM>während</EM>
einer Verbindung
<P>
<BLOCKQUOTE><CODE>
<PRE>
# ifconfig ippp0
ippp0 Link encap:Point-Point Protocol
inet addr:1.2.3.4 P-t-P:5.6.7.8 Mask:255.0.0.0
UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:2 errors:0 dropped:0 overruns:0
TX packets:3 errors:0 dropped:0 overruns:0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
5.6.7.8 0.0.0.0 255.255.255.255 UH 0 0 0 ippp0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 2 lo
0.0.0.0 5.6.7.8 0.0.0.0 UG 0 0 0 ippp0
</PRE>
</CODE></BLOCKQUOTE>
</P>
</LI>
<LI> Wir gehen in die große weite Welt:
<P>Bestimme eine existierende IP-Nummer; die einzige,
die ich mir merken kann, ist die des DNS-Server von
ECRC:
<BLOCKQUOTE><CODE>
<PRE>
traceroute -n 141.1.1.1
</PRE>
</CODE></BLOCKQUOTE>
Man beachte, daß wir noch keinen DNS-Servive benutzen
können, daher <CODE>-n</CODE>.</P>
</LI>
<LI>Jetzt wartet man auf den Timeout, bis aufgelegt wird, und
betrachtet die Datei <CODE>/var/log/messages</CODE>, z.B.:
<BLOCKQUOTE><CODE>
<PRE>
kernel: isdn_net: local hangup ippp0
kernel: ippp0: Chargesum is 0
isdnlog: Apr 03 09:20:49 tei 70 calling Eunet-N with KfrI I Normal call clearing (User)
ipppd[135]: Modem hangup
ipppd[135]: Connection terminated.
ipppd[135]: taking down PHASE_DEAD link 0, linkunit: 0
ipppd[135]: sent [0][LCP TermReq id=0x2 6c 69 6e 6b 20 63 6 c 6f 73 65 64]
ipppd[135]: LCP is down
ipppd[135]: link 0 closed , linkunit: 0
ipppd[135]: reinit_unit: 0
ipppd[135]: Connect[0]: /dev/ippp0, fd: 6
</PRE>
</CODE></BLOCKQUOTE>
</LI>
<LI>IP-Nummern und Routing prüfen:
<P>sie müssen jetzt wieder genauso gesetzt sein, wie
<EM>vor</EM> dem Verbindungsaufbau.</P>
</LI>
</OL>
</P>
<HR>
<A HREF="DE-ISDN-HOWTO-8.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-ISDN-HOWTO-6.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-ISDN-HOWTO.html#toc7"><IMG SRC="toc.png" ALT="Inhalt"></A>
</BODY>
</HTML>
|