This file is indexed.

/usr/share/doc/HOWTO/de-html/DE-Netzwerk-HOWTO-4.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
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
<!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 : Grundkonfiguration       </TITLE>
 <LINK HREF="DE-Netzwerk-HOWTO-5.html" REL=next>
 <LINK HREF="DE-Netzwerk-HOWTO-3.html" REL=previous>
 <LINK HREF="DE-Netzwerk-HOWTO.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-Netzwerk-HOWTO-5.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-Netzwerk-HOWTO-3.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-Netzwerk-HOWTO.html#toc4"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="DE-NET3-HOWTO-Grundkonfiguration"></A> <A NAME="s4">4.</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4">Grundkonfiguration       </A></H2>

<P>Die folgenden Abschnitte sollte man gut durchlesen, denn ihr Verst&auml;ndnis
ist sehr wichtig, bevor man mit der tats&auml;chlichen Konfiguration beginnen
kann. Es handelt sich um grundlegende Prinzipien, die unabh&auml;ngig davon
sind, welche Art von Netzwerk letztendlich verwendet wird.</P>

<H2><A NAME="ss4.1">4.1</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.1">Was brauche ich f&uuml;r den Anfang?</A>
</H2>

<P>Einige Dinge ben&ouml;tigt man, bevor man sich mit der Zusammenstellung und
Konfiguration seines Netzwerkes besch&auml;ftigen kann. Die wichtigsten
davon sind:</P>

<H3>Aktuelle Kernel Quelldateien</H3>

<P>Viele der aktuellen Distributionen kommen bereits
mit vorkompilierten Kernel und unterst&uuml;tzen typische PC-Hardware.
Zus&auml;tzlich sind bereits alle im Kernel verf&uuml;gbaren Treiber als
Module kompiliert. Deshalb ist es oft m&ouml;glich, auf das 
Kernelkompilieren zu verzichten. Beispiele sind 3COM, NE2000 
und Intel Netzwerkkarten sowie die weitverbreiteten
Billigkarten mit Realtek Chipsatz. Dieser Abschnitt bietet
die notwendigen Informationen, wenn es trotzdem notwendig wird,
ein Kernelupdate durchzuf&uuml;hren, weil die eigene Hardware erst 
in neueren Kernelversionen unterst&uuml;tzt wird.</P>
<P>Der derzeit installierte Kernel hat oft nicht die Treiber f&uuml;r die
gew&uuml;nschten Hardware- und Netzwerk-Protokolle eingebunden. Hier ist eine
Neukompilation des Kernels mit den entsprechenden Optionen notwendig.</P>
<P>F&uuml;r Nutzer der gro&szlig;en Distributionen wie Redhat, Debian
oder SuSE ist das typischerweise nicht notwendig. Solange
weitverbreitete Hardware eingesetzt wird, sollte sich keine
Notwendigkeit zum Kompilieren des Kernels ergeben.</P>
<P>Die aktuellen Kernelsourcen k&ouml;nnen z.B. von 
<BLOCKQUOTE><CODE>
<A HREF="http://www.de.kernel.org/pub/linux/kernel">www.de.kernel.org/pub/linux/kernel</A></CODE></BLOCKQUOTE>

bezogen werden. Das ist zwar nicht die offizielle Seite, dennoch
bietet sie eine hohe Bandbreite und ist recht schnell. Die offizielle
Seite ist <CODE>ftp.kernel.org</CODE>, diese ist jedoch oft schwer &uuml;berlastet.
Benutzen Sie deshalb m&ouml;glichst einen Mirror.</P>
<P>Normalerweise wird das Archiv mit den Quelltexten in das Verzeichnis
<CODE>/usr/src/linux</CODE> entpackt. Weiterf&uuml;hrende Informationen dazu,
wie man Patches einspielt und den Kernel &uuml;bersetzt, findet man im
<EM>
<A HREF="DE-Kernel-HOWTO.html">Kernel HOWTO</A></EM>. 
Die Konfiguration der verschiedenen Module beschreibt das
<EM>
<A HREF="http://www.tldp.org/HOWTO/Modules/index.html">Modules mini-HOWTO</A></EM> (Englisch).
Die Datei <CODE>README</CODE> aus den Kernelsourcen ist eine gute 
Informationsquelle, seien Sie also ein t&uuml;chtiger Leser.</P>
<P>Solange nicht besonders auf eine besondere Kernel-Version verwiesen
wird, sollte man bei den Standard-Kernels bleiben. Dies sind die
Versionen mit gerader zweiter Ziffer. Die Entwickler-Kernel,
gekennzeichnet durch eine ungerade zweite Ziffer wie derzeit 2.1.x,
k&ouml;nnen strukturelle Ver&auml;nderungen oder Test-Code enthalten, die 
im Zusammenspiel mit anderen Programmen des Systems zu Problemen f&uuml;hren
k&ouml;nnen. Wer sich nicht sicher ist, da&szlig; er mit derartigen
Schwierigkeiten umgehen kann, sollte bei den Standard-Versionen
bleiben.</P>

<H3>Aktuelle Hilfsprogramme        <!--NetTools-->       <!--Netzwerk!NetTools--></H3>

<P>Diese Programme (englisch: Network Tools) dienen dazu, die Netzwerk
Devices, Kernel-Schnittstellen zur Hardware, zu konfigurieren. Damit
k&ouml;nnen also zum Beispiel Netzwerkadressen zugeordnet werden oder
Routen definiert werden.</P>
<P>Normalerweise kommen alle neueren Linux Distributionen mit diesen
Hilfsprogrammen. Wer sie bei der Erstinstallation weggelassen hat, mu&szlig;
diese in jedem Fall installieren.</P>
<P>Wer keine fertige Distribution verwendet, mu&szlig; sich die Quellen selbst
besorgen und die n&ouml;tigen Programme kompilieren. Dies ist aber nicht
weiter schwierig.</P>
<P>Die Programme werden von Philip Blundell betreut und k&ouml;nnen 
von Freshmeat oder direkt &uuml;ber die Homepage bezogen werden:</P>
<P>
<UL>
<LI><CODE>
<A HREF="http://freshmeat.net/projects/net-tools/?topic_id=150">http://freshmeat.net/projects/net-tools/?topic_id=150</A></CODE></LI>
<LI><CODE>
<A HREF="http://www.tazenda.demon.co.uk/phil/net-tools/">http://www.tazenda.demon.co.uk/phil/net-tools/</A></CODE></LI>
</UL>
</P>

<P>Auf jeden Fall mu&szlig; man sich vergewissern, da&szlig; die Version sich auch mit
dem eingesetzten Kernel vertr&auml;gt. Um die gegenw&auml;rtig, also als dieser
Text geschrieben wurde, aktuelle Version zu installieren, geht man wie
folgt vor:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
cd /usr/src
tar xvfz net-tools-1.32-alpha.tar.gz
cd net-tools-1.32-alpha
make config
make
make install
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>
<!--
ipfwadm!Bezugsquelle
-->

Wer au&szlig;erdem auch beabsichtigt, eine Firewall aufzusetzen oder IP
Masquerading zu verwenden, wird dar&uuml;ber hinaus je nach Kernel
Programme wie <CODE>ipfwadm</CODE> oder <CODE>ipmasqadm</CODE> ben&ouml;tigen.
Deren Installation werden unter anderem in der 
<EM>
<A HREF="http://www.tldp.org/HOWTO/Firewall-HOWTO.html">Firewall and Proxy Server HOWTO</A></EM> (Englisch) und der
<EM>
<A HREF="http://www.tldp.org/HOWTO/IP-Masquerade-HOWTO/index.html">Linux IP Masquerade HOWTO</A></EM> (Englisch) beschrieben.</P>

<H3>Anwendungsprogramme        <!--NetKit-->       <!--Netzwerk!NetKit--></H3>

<P>Mit <EM>Anwendungen</EM> sind hier Programme wie <CODE>telnet</CODE> oder
<CODE>ftp</CODE> sowie die zugeh&ouml;rigen Server gemeint. David Holland
(<CODE>
<A HREF="mailto:dholland@hcs.harvard.edu">dholland@hcs.harvard.edu</A></CODE>) verwaltet inzwischen eine
Distribution mit den am weitesten verbreiteten Programmen. Man
erh&auml;lt sie hier:
<BLOCKQUOTE><CODE>
<A HREF="ftp://ftp.uk.linux.org/pub/linux/Networking/base">ftp.uk.linux.org:/pub/linux/Networking/base</A></CODE></BLOCKQUOTE>
</P>
<P>Zur Installation der derzeit aktuellen Version geht man folgenderma&szlig;en
vor:
<BLOCKQUOTE><CODE>
<PRE>
cd /usr/src
tar xvfz /pub/net/NetKit-B-0.08.tar.gz
cd NetKit-B-0.08
more README
vi MCONFIG
make
make install
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H3>Adressen       <!--IP!Adresse-->      <!--IP!Netmask-->      <!--IP!Broadcast Adresse-->      <!--Netmask-->      <!--Broadcast Adresse-->      <!--Netzwerk!Netmask-->      <!--Netzwerk!IP Adressen-->      <!--Netzwerk!Broadcast Adresse--></H3>

<P>Die reinen Internet Protokoll Adressen bestehen aus 4 Bytes.
Standardm&auml;&szlig;ig schreibt man diese in einer durch Punkte getrennten
Dezimalschreibweise: Jedes Byte wird in eine Dezimalzahl umgewandelt
(0-255), wobei f&uuml;hrende Nullen weggelassen werden. Diese vier Zahlen 
werden dann, durch einen Dezimalpunkt ».«
getrennt, hintereinander aufgeschrieben. F&uuml;r gew&ouml;hnlich bekommt jedes
Interface eines Rechners eine eigene IP Adresse. Es ist zwar erlaubt,
da&szlig; verschiedene Schnittstellen eines Rechners dieselbe Adresse
verwenden, dies wird aber normalerweise nicht gemacht.</P>
<P>Ein Internet Protokoll Netzwerk besteht aus einer fortlaufenden Sequenz
von IP Adressen. Alle Adressen innerhalb eines solchen Netzwerkes haben
einige Ziffern mit den anderen gemeinsam. Dieser &uuml;bereinstimmende Teil
wird als »Netzwerk-Anteil« bezeichnet, die verbleibenden
Ziffern bilden den Host-Anteil (Rechner-Teil). Die Anzahl an Bits die bei allen
Adressen im Netz gleich ist, bezeichnet man als <EM>Netmask</EM>. Ihre
Aufgabe ist es, festzustellen, ob ein Rechner zu diesem Netzwerk geh&ouml;rt,
oder nicht. Hier ein Beispiel:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
-----------------  ---------------
Host Address       192.168.110.23
Network Mask       255.255.255.0
Network Portion    192.168.110.
Host portion                  .23
-----------------  ---------------
Network Address    192.168.110.0
Broadcast Address  192.168.110.255
-----------------  ---------------
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Jede Adresse, die bitweise mit der Netmask durch ein logisches UND
verkn&uuml;pft wird, ergibt so die Adresse des Netzwerkes, zu der sie
geh&ouml;rt. Die Netzwerk-Adresse stellt deshalb immer die zahlenm&auml;&szlig;ig
kleinste Adresse des Adre&szlig;bereichs des Netzwerkes dar, und der 
Host-Anteil ist immer Null.</P>
<P>Die Broadcast Adresse ist eine besondere Adresse, auf die jeder Rechner
eines Netzwerkes zus&auml;tzlich zu seiner eigenen, eindeutigen reagiert. An
diese Adresse werden Datagramme gesendet, die jeder Rechner im Netzwerk
erhalten soll. Einige besondere Datentypen wie Routing-Informationen
oder Warnungen werden &uuml;ber diese Broadcast Adresse verbreitet, damit
alle Rechner sie gleichzeitig erhalten. Es gibt zwei verwendete Standards
daf&uuml;r, wie eine solche Broadcast Adresse aussieht. Am weitesten
verbreitet ist es, die h&ouml;chste Nummer des Adre&szlig;bereiches zu verwenden,
im obigen Beispiel also die <CODE>192.168.110.255</CODE>. Aus verschiedenen
Gr&uuml;nden wird manchmal auch die Netzwerk-Adresse f&uuml;r diesen Zweck verwendet. 
In der Praxis ist es egal, welche dieser Adressen verwandt wird. Es mu&szlig;
nur sichergestellt sein, da&szlig; alle Rechner des Netzes mit derselben
Broadcast-Adresse konfiguriert werden.</P>
<P>In einer recht fr&uuml;hen Phase der Entwicklung des IP Protokolles wurden
einige willk&uuml;rlich gew&auml;hlte Bereiche des Adre&szlig;raumes zu Netzwerken
zusammengefa&szlig;t, die man als Klassen bezeichnet. Diese Klassen stellen
die Standard-Gr&ouml;&szlig;en f&uuml;r ein Netzwerk dar, die Aufteilung ist wie folgt:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
------------------------------------------------------------
|  Netzwerk | Netmask       | Netzwerk Adressen            |
|  Klasse   |               |                              |
------------------------------------------------------------
|     A     | 255.0.0.0     | 0.0.0.0    - 127.255.255.255 |
|     B     | 255.255.0.0   | 128.0.0.0  - 191.255.255.255 |
|     C     | 255.255.255.0 | 192.0.0.0  - 223.255.255.255 |
| Multicast | 240.0.0.0     | 224.0.0.0  - 239.255.255.255 |
------------------------------------------------------------
</PRE>
</CODE></BLOCKQUOTE>
</P>


<P>Welcher dieser Adressen man verwenden sollte, h&auml;ngt vom jeweiligen 
Anwendungsfall ab; eventuell mu&szlig; man eine Kombination der unten 
aufgef&uuml;hrten Aktionen durchf&uuml;hren. </P>
<P>
<DL>
<DT><B>Anbinden eines einzelnen Linux-Rechners in ein bestehendes Netz</B><DD>
<P>In diesem Fall mu&szlig; man sich an den Administrator des Netzes wenden und
ihn um folgende Informationen bitten:
<UL>
<LI>IP Adresse f&uuml;r den Rechner</LI>
<LI>IP Netzwerk Adresse</LI>
<LI>IP Broadcast Adresse</LI>
<LI>IP Netmask</LI>
<LI>Adresse des Routers</LI>
<LI>Adresse des Domain Name Servers</LI>
</UL>

Mit diesen Angaben kann man dann sein Netzwerk unter Linux
konfigurieren. </P>

<DT><B>Neubildung eines Netzwerkes, da&szlig; keine Verbindung zum Internet 
haben wird.</B><DD>
<P>
<!--
IP!private Adressen
-->

<!--
Netzwerk!private IP Adressen
-->

Wer sich ein kleines privates Netzwerk zulegen will und nicht
beabsichtigt, dieses jemals mit dem Internet zu verbinden, kann im
Prinzip seine Adressen v&ouml;llig frei ausw&auml;hlen. Aus Sicherheitsgr&uuml;nden,
und um trotzdem eine gewisse Konsistenz in der Adressenvergabe zu
wahren, wurden jedoch einige Bereiche des Adre&szlig;raumes speziell f&uuml;r
diesen Zweck reserviert. Sie sind im <EM>RFC&nbsp;1597</EM> festgelegt:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
------------------------------------------------------------
|            Adressbereiche f. private Nutzung             |
------------------------------------------------------------
| Netzwerk | Netmask       | Netzwerk Adressen             |
| Klasse   |               |                               |
------------------------------------------------------------
|    A     | 255.0.0.0     | 10.0.0.0    - 10.255.255.255  |
|    B     | 255.255.0.0   | 172.16.0.0  - 172.31.255.255  |
|    C     | 255.255.255.0 | 192.168.0.0 - 192.168.255.255 |
------------------------------------------------------------
</PRE>
</CODE></BLOCKQUOTE>
</P>

<P>Zuerst sollte man sich &uuml;berlegen, wie gro&szlig; das eigene Netz sein soll und
dann einen geeigneten Bereich ausw&auml;hlen.</P>
</DL>
</P>

<H2><A NAME="ss4.2">4.2</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.2">Wo mu&szlig; ich die Konfiguration durchf&uuml;hren?</A>
</H2>

<P>Unter Linux gibt es unterschiedliche Ans&auml;tze, wie die Boot-Prozedur
abl&auml;uft. In jedem Fall wird aber, nachdem der Kernel geladen ist, ein
Programm mit dem Namen <CODE>init</CODE> gestartet. <CODE>init</CODE> liest dann die
Konfigurationsdatei <CODE>/etc/inittab</CODE> und beginnt den eigentlichen
Boot-Proze&szlig;. Es gibt verschiedene Versionen des <CODE>init</CODE>-Programmes,
und das ist auch bereits der Hauptgrund f&uuml;r die unterschiedlichen
Bootkonzepte der verschiedenen Distributionen. Heute scheint jeder
zur System V Variante, die von Miguel van Smoorenburg entwickelt wurde,
zu tendieren.</P>
<P>Trotz des Faktes, da&szlig; das <CODE>init</CODE> Programm immer dasselbe
ist, wird das Booten des System von jeder Distribution anders
gel&ouml;st.</P>
<P>F&uuml;r gew&ouml;hnlich enth&auml;lt <CODE>/etc/inittab</CODE> einen Eintrag der Form
<BLOCKQUOTE><CODE>
<PRE>
si::sysinit:/etc/init.d/boot
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Diese Zeile legt den Namen desjenigen Shell-Skriptes fest, das den
Bootproze&szlig; steuert. In gewisser Weise handelt es sich um das
&auml;quivalent zu der Datei <CODE>autoexec.bat</CODE> in MS-DOS.</P>
<P>Meist werden von diesem Skript aus weitere Skripte aufgerufen, und oft
ist eines davon dann f&uuml;r die Konfiguration des Netzwerkes zust&auml;ndig. </P>
<P>Die folgende Tabelle gibt einen Anhaltspunkt, welche Dateien das f&uuml;r die
diversen Distributionen sind:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
-------------------------------------------------------------------------------
Distrib. |Schnittstellen Konfig./Routing              |Server Initialisierung
-------------------------------------------------------------------------------
Debian   |/etc/init.d/network                         |/etc/init.d/netbase     
         |                                            |/etc/init.d/netstd_init
         |                                            |/etc/init.d/netstd_nfs
         |                                            |/etc/init.d/netstd_misc
-------------------------------------------------------------------------------
SuSE     |/etc/init.d/network                         |/etc/init.d/nfsserver
         |                                            |/etc/init.d/inetd
-------------------------------------------------------------------------------
Slackware|/etc/rc.d/rc.inet1                          |/etc/rc.d/rc.inet2 
-------------------------------------------------------------------------------
RedHat   |/etc/sysconfig/network-scripts/ifup-&lt;ifname>|/etc/rc.d/init.d/network
-------------------------------------------------------------------------------
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Bitte beachten Sie, da&szlig; Debian, RedHat und neuere SuSE-Versionen ganze
Verzeichnisse mit Skripten zum Starten von Systemdiensten nutzen.
Und gew&ouml;hnlich sind die Konfigurationsdaten nicht in diesen Skripten
enthalten. RedHat und neuere SuSE-Versionen sichern die Konfigurationsdaten
im Verzeichnis <CODE>/etc/sysconfig</CODE>, von wo diese durch die Bootskripte
ausgelesen werden. F&uuml;r weitere Details des Bootprozesses sollten
die <CODE>/etc/initab</CODE> und die <CODE>init</CODE>-Dokumentation gelesen
werden. Das Linux Journal hat dazu einen 
<BLOCKQUOTE><CODE>
<A HREF="http://www.iar.unlp.edu.ar/~fede/revistas/lj/Magazines/LJ56/3016.html">http://www.iar.unlp.edu.ar/~fede/revistas/lj/Magazines/LJ56/3016.html</A></CODE></BLOCKQUOTE>
 
ins Netz gestellt.</P>
<P>Die meisten modernen Distributionen stellen ein Programm zur Verf&uuml;gung,
mit dem man die g&auml;ngigsten Netzwerk Schnittstellen konfigurieren kann.
Es lohnt sich auf jeden Fall, diese Programme auszuprobieren, bevor man
sich an eine manuelle Installation macht.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
-------------------------------------------------
Distribution   | Netzwerk Konfigurationsprogramm
-------------------------------------------------
RedHat         | /sbin/netcfg
Slackware      | /sbin/netconfig
SuSE           | /sbin/yast
-------------------------------------------------
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H2><A NAME="ss4.3">4.3</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.3">Anlegen von Netzwerk Schnittstellen        </A>
<!--Netzwerk!Device--></H2>

<P>In vielen Varianten von Unix haben die verschiedenen Netzwerk Devices
feste Eintr&auml;ge im Verzeichnis <CODE>/dev</CODE>. Nicht so bei Linux. Hier
werden diese Eintr&auml;ge dynamisch von der Software angelegt, die
entsprechenden Dateien in <CODE>/dev</CODE> m&uuml;ssen also nicht vorhanden
sein.</P>
<P>In fast allen F&auml;llen werden die Device-Eintr&auml;ge f&uuml;r das Netzwerk
automatisch von den jeweiligen Treibern angelegt, sobald diese bei der
Initialisierung die entsprechende Hardware vorfinden. So legt der
Ethernet-Treiber z.B. die Schnittstellen <CODE>eth[0..n]</CODE> an,
durchnumeriert in der Reihenfolge, in der die Hardware gefunden wird.
Der ersten Karte wird der Eintrag <CODE>eth0</CODE> zugeordnet, der zweiten 
<CODE>eth1</CODE> usw.</P>
<P>Manche Device-Eintr&auml;ge, insbesondere f&uuml;r SLIP und PPP, werden
jedoch erst durch die Ausf&uuml;hrung von Benutzerprogrammen angelegt. Auch 
in diesem Fall gilt die sequentielle Durchnumerierung, sie werden eben nur
nicht bereits beim Booten des Systems angelegt. Das liegt daran, da&szlig; sich die
Anzahl der aktiven SLIP oder PPP Ger&auml;te bei laufendem Betrieb
&auml;ndern kann - im Gegensatz zu Ethernetkarten. Diese F&auml;lle werden sp&auml;ter
genauer behandelt.</P>

<H2><A NAME="ss4.4">4.4</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.4">Konfiguration von Netzwerk Schnittstellen (Kernel 2.0 und 2.2)        </A>
<!--ifconfig-->       <!--Netzwerk!ifconfig--></H2>

<P>Hat man sich alle ben&ouml;tigten Programme und Informationen besorgt, kann
mit der Konfiguration der Netzwerk Schnittstelle begonnen werden. Mit
Konfiguration ist dabei gemeint, der Schnittstelle ihre Adresse
zuzuteilen sowie f&uuml;r andere einstellbare Parameter die richtigen Werte
einzusetzen. Das hierf&uuml;r am meisten verwendete Programm ist 
<CODE>ifconfig</CODE>, was f&uuml;r Interface Configure, also
Schnittstellenkonfiguration, steht. </P>
<P>Ein typisches Beispiel f&uuml;r den Einsatz von <CODE>ifconfig</CODE> ist etwa</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>In diesem Fall wird die Schnittstelle <CODE>eth0</CODE> mit der Adresse 
<CODE>192.168.0.1</CODE> sowie der Netmask <CODE>255.255.255.0</CODE> konfiguriert.
Das abschlie&szlig;ende <CODE>up</CODE> aktiviert die Schnittstelle. Zum 
Entfernen der Schnittstelle reicht ein Aufruf von:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ifconfig eth0 down
</PRE>
</CODE></BLOCKQUOTE>
</P>

<P>Der Kernel hat f&uuml;r viele der Konfigurationsparameter voreingestellte 
Standardwerte. So kann man nat&uuml;rlich Netzwerkadresse und
Broadcastadresse f&uuml;r eine Schnittstelle festlegen. Tut man dies nicht,
wie im obigen Beispiel, dann versucht der Kernel f&uuml;r diese Parameter
vern&uuml;nftige Werte anzunehmen. Dies macht er anhand der Netzwerk-Klasse
der angegebenen IP-Adresse. In diesem Fall w&auml;re das ein Klasse-C Netz,
dementsprechend w&uuml;rde der Kernel <CODE>192.168.0.0</CODE> als Netzwerk-Adresse
und <CODE>192.168.0.255</CODE> als Broadcast-Adresse benutzen.</P>
<P><CODE>ifconfig</CODE> besitzt unz&auml;hlige Parameter. Die wichtigsten davon sind
<DL>
<DT><B>up</B><DD>
<P>Aktiviert die Schnittstelle.</P>

<DT><B>down</B><DD>
<P>Deaktiviert die Schnittstelle.</P>

<DT><B>[-]arp</B><DD>
<P>(De-)aktiviert das ARP-Protokoll
(Adress Resolution Protocol) zur
Aufl&ouml;sung von Adressen f&uuml;r diese Schnittstelle.</P>

<DT><B>[-]allmulti</B><DD>
<P>Ein-/Ausschalten des All-Multicast Modus. Ist er
eingeschaltet, so werden alle Multicastpakete vom
Netzwerk empfangen unabh&auml;ngig davon, ob sie an die
Schnittstelle adressiert sind oder nicht.</P>

<DT><B>mtu N</B><DD>
<P>Legt die <EM>MTU</EM> (Maximum Transfer Unit) fest.</P>

<DT><B>netmask addr</B><DD>
<P>Legt die Netmask f&uuml;r die Schnittstelle fest.</P>

<DT><B>irq addr</B><DD>
<P>Legt den verwendeten Interrupt der Hardware fest. Dies
funktioniert aber nur f&uuml;r einige wenige Ger&auml;te.</P>

<DT><B>[-]broadcast [addr]</B><DD>
<P>Damit kann die
Adresse f&uuml;r Broadcast-Meldungen festgelegt werden oder die Annahme
solcher Pakete abgeschaltet werden.</P>

<DT><B>[-]pointopoint [addr]</B><DD>
<P>Hiermit
wird die Adresse des Rechners am anderen Ende der Verbindung festgelegt.
Dieses findet z.B. im Falle von SLIP und PPP Verbindungen
Verwendung.</P>

<DT><B>hw &lt;type&gt; &lt;addr&gt;</B><DD>
<P>Damit lassen sich f&uuml;r bestimmte
Netzwerk-Typen die Hardware Adressen festlegen. Das ist f&uuml;r Ethernet
kaum n&uuml;tzlich, f&uuml;r andere Typen wie AX.25 aber schon.</P>
</DL>
</P>
<P><CODE>ifconfig</CODE> kann im Prinzip zur Konfiguration jeder beliebigen
Netzwerk Schnittstelle verwendet werden. Einige Programme wie <CODE>pppd</CODE>
oder <CODE>dip</CODE> machen dies jedoch selbst&auml;ndig, soda&szlig; sich ein manueller
Aufruf von <CODE>ifconfig</CODE> in diesem Fall er&uuml;brigt.</P>
<P>Mit dem Kernel 2.2 sind eine Anzahl von Optionen hinzugekommen. Dazu
geh&ouml;ren unter anderem Tunneling- und IPV6-Optionen. Die zus&auml;tzlichen
Optionen sind im Folgenden aufgef&uuml;hrt.</P>
<P>
<DL>
<DT><B>[-]promisc</B><DD>
<P>Mit dieser Option kann 
der <EM>Promiscuous Mode</EM> der Schnittstelle
aktiviert/deaktiviert werden. Ist er eingeschaltet, empf&auml;ngt die
Schnittstelle alle Packete aus dem Netzwerk gleichg&uuml;ltig ob sie an
die Schnittstelle adressiert waren oder nicht.</P>

<DT><B>metric N</B><DD>
<P>Dieser Parameter setzt die 
Metrik einer Schnittstelle.</P>

<DT><B>dstaddr addr</B><DD>
<P>Setzt die Remote IP Adresse bei Point-to-Point
Verbindungen (wie PPP). Dieser Parameter ist jedoch &uuml;berholt, 
stattdessen sollte die Option <CODE>pointopoint</CODE> verwendet werden.</P>

<DT><B>add addr prefixlen</B><DD>
<P>Setzt eine IPv6 Adresse f&uuml;r eine 
Schnittstelle.</P>

<DT><B>del addr prefixlen</B><DD>
<P>Entfernt die IPv6 Adresse einer 
Schnittstelle.</P>

<DT><B>tunnel aa.bb.cc.dd</B><DD>
<P>Erzeugt ein neues SIT (IPv6-in-IPv4) 
Device das zum angegebenen Ziel tunnelt.</P>

<DT><B>io_addr addr</B><DD>
<P>Setzt die I/O-Basisadresse f&uuml;r dieses Ger&auml;t.</P>

<DT><B>mem_start addr</B><DD>
<P>Setzt die Startadresse f&uuml;r den Shared Memory 
Bereich, der durch dieses Ger&auml;t genutzt wird. Nur wenige Ger&auml;te ben&ouml;tigen
diese Option.</P>

<DT><B>media type</B><DD>
<P>Setzt den physikalischen Anschlu&szlig; oder den
Medientyp, der vom Ger&auml;t verwendet wird. Nicht alle Ger&auml;te k&ouml;nnen
diese Einstellung &auml;ndern, und  bei denjenigen,  bei  denen dies 
m&ouml;glich ist, variieren die unterst&uuml;tzten Werte.  Typische Werte
f&uuml;r <CODE>type</CODE> sind <CODE>10base2</CODE> (Thin Ethernet), 
<CODE>10baseT</CODE> (Twisted-Pair 10Mbps Ethernet), 
<CODE>AUI</CODE> (externer Transceiver) und so
weiter. Der spezielle Medientyp <CODE>auto</CODE> kann benutzt
werden, damit der Treiber automatischen den Typ des
Mediums erkennt. Wiederum unterst&uuml;tzen dies nicht
alle Treiber.</P>

<DT><B>hw class address</B><DD>
<P>Setzt die Hardwareadresse dieser
Schnittstelle, wenn der Ger&auml;tetreiber diese Operation unterst&uuml;tzt.
Das Schl&uuml;sselwort mu&szlig; vom Namen der Hardwareklasse
und der ASCII-Darstellung der Hardwareadresse
gefolgt werden. Zur Zeit werden unter anderem folgende 
Hardwareklassen unterst&uuml;tzt: <CODE>ether</CODE> (Ethernet), <CODE>ax25</CODE> (AMPR AX.25),
<CODE>ARCnet</CODE> und <CODE>netrom</CODE> (AMPR NET/ROM).</P>

<DT><B>multicast</B><DD>
<P>Setzt die Multicastflag der Schnittstelle.
Dies sollte im Normalfall nicht ben&ouml;tigt werden, da die
Treiber die Flag selbst setzen.</P>

<DT><B>address</B><DD>
<P>Die IP-Adresse, die der Schnittstelle zugewiesen wird.</P>

<DT><B>txqueuelen length</B><DD>
<P>Setzt die L&auml;nge der Sendewarteschlange des Ger&auml;ts.
Es kann n&uuml;tzlich sein, diesen Wert auf eine kleinen
Wert f&uuml;r langsame Ger&auml;te mit hoher Paketlaufzeit
(Modems, ISDN) zu setzen, um zu verhindern, da&szlig;
schnelle Gro&szlig;&uuml;bertragungen interaktiven Verkehr wie
Telnet zu sehr st&ouml;ren.</P>
</DL>
</P>

<H2><A NAME="DE-NET3-HOWTO-Konfiguration-Name-Resolver"></A> <A NAME="ss4.5">4.5</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.5">Konfiguration der Namensaufl&ouml;sung        </A>
       <!--Name Resolver!Grundlagen-->       <!--Netzwerk!Name Resolver-->       <!--DNS!Grundlagen-->       <!--Netzwerk!DNS--></H2>

<P>Die Namensaufl&ouml;sung (Name Resolver) ist ein Teil der Standardbibliothek 
von Linux. Ihre Aufgabe ist es, benutzerfreundliche Rechnernamen wie
<CODE>ftp.funet.fi</CODE> in rechnerfreundliche IP-Adressen wie
<CODE>128.214.248.6</CODE> zu &uuml;bersetzen.</P>

<H3>Aus was besteht ein Name?        <!--Domain-->       <!--Netzwerk!Domain-->       <!--Subdomain-->       <!--Netzwerk!Subdomain--></H3>

<P>Jeder ist wohl inzwischen mit Rechnernamen im Internet vertraut, doch
mancher versteht nicht genau, wie sie gebildet werden. Namen im Internet
haben eine hierarchische Struktur, bilden also so etwas wie einen Baum
mit Ver&auml;stelungen. Eine <EM>Domain</EM> ist eine Gruppe von Namen. Eine
solche <EM>Domain</EM> kann wiederum unterteilt sein in mehrere
<EM>Subdomains</EM>. Eine <EM>Toplevel Domain</EM> ist eine <EM>Domain</EM>, die
nicht mehr <EM>Subdomain</EM> einer anderen ist. Diese <EM>Toplevel
Domains</EM> sind im <EM>RFC&nbsp;920</EM> festgelegt. Beispiele f&uuml;r die bekanntesten 
<EM>Toplevel Domains</EM> sind:</P>
<P>
<DL>
<DT><B>COM</B><DD>
<P>Kommerzielle Organisationen</P>

<DT><B>EDU</B><DD>
<P>Bildung und Lehre</P>

<DT><B>GOV</B><DD>
<P>Regierungsstellen</P>

<DT><B>MIL</B><DD>
<P>Milit&auml;rische Organisationen</P>

<DT><B>ORG</B><DD>
<P>Andere Organisationen</P>

<DT><B>NET</B><DD>
<P>Mit dem Internet zusammenh&auml;ngende Organisationen</P>

<DT><B>L&auml;nderkennzeichen</B><DD>
<P>Diese sind gebildet aus zwei Buchstaben, die f&uuml;r
ein Land stehen.</P>
</DL>
</P>
<P>Jede dieser h&ouml;chsten Dom&auml;nen hat nun Unterdom&auml;nen. So gibt es f&uuml;r viele
L&auml;nder wieder eine Unterteilung entsprechend der h&ouml;chsten Dom&auml;nen, also
etwa <CODE>com.au</CODE> und <CODE>gov.au</CODE> f&uuml;r kommerzielle und staatliche
Organisationen in Australien. Aus historischen Gr&uuml;nden liegen praktisch
alle nicht l&auml;nderspezifischen Toplevel Dom&auml;nen in den USA, obwohl auch
diese einen spezifischen L&auml;nder-Code (<CODE>.us</CODE>) besitzen.</P>
<P>Jede der Toplevel Dom&auml;nen hat Subdom&auml;nen. Die Toplevel Dom&auml;nen, die
auf L&auml;nderkennzeichen basieren sind oft in Subdom&auml;nen, welche die com,
edu, gov, mil und org Dom&auml;nen nachbilden, unterteilt. So stehen com.au
und gov.au z.B. f&uuml;r kommerzielle Organisationen und Regierungsorganisationen 
von Australien. Das ist jedoch keine allgemeing&uuml;ltige Regel, das Verfahren
wird durch die Beh&ouml;rden jeder Dom&auml;ne selbst festgelegt.</P>
<P>Die n&auml;chste Ebene der Unterteilung stellt meist der Name der
Organisation dar. Weitere Unterdom&auml;nen sind dann sehr unterschiedlich,
oft basieren sie auf internen Strukturen der jeweiligen Organisation,
jedoch kann der Netzadministrator jedes ihm sinnvoll erscheinende
Kriterium zur Unterteilung verwenden.</P>

<P>
<!--
Fully Qualified Domain Name
-->
</P>
<P>Der erste, am weitesten links stehende Teil des Namens ist immer der
eindeutige Name des jeweiligen Rechners, man bezeichnet ihn als
<EM>Hostname</EM>, der &uuml;brige Teil rechts davon wird <EM>Domainname</EM>
genannt. Beide zusammen bilden den <EM>Fully Qualified Domain Name</EM>.</P>
<P>Am Beispiel meines eigenen Mailservers ist der vollst&auml;ndige
Dom&auml;nenname <CODE>perf.no.itg.telstra.com.au</CODE>. Das hei&szlig;t, der Rechnername
(<EM>Hostname</EM>) ist <CODE>perf</CODE>, der <EM>Domainname</EM>
<CODE>no.itg.telstra.com.au</CODE>. Die oberste Dom&auml;ne (<EM>Toplevel Domain</EM>)
ist Australien (<CODE>.au</CODE>) und es handelt sich um eine kommerzielle
Organisation (<CODE>.com</CODE>). Der Name der Firma ist <CODE>telstra</CODE>, und die
Namensgebung der internen Unterdom&auml;nen basiert auf der Firmenstruktur,
in diesem Fall befindet sich der Rechner in der Information Technology
Group, Sektion Network Operation.</P>
<P>Typischerweise sind Dom&auml;nennamen k&uuml;rzer. Mein ISP (Internet Service
Provider) z.B. nutzt <CODE>systemy.it</CODE>. Meine Non-Profit Organisation
hei&szlig;t <CODE>linux.it</CODE> ohne irgendeine <CODE>com</CODE> oder <CODE>org</CODE> Subdom&auml;ne.
Mein eigener Rechner ist <CODE>morgana.systemy.it</CODE> und 
<CODE>rubini@linux.it</CODE> ist die g&uuml;ltige E-Mail Adresse. Zu beachten ist,
da&szlig; der Besitzer der Dom&auml;ne ebenso das Recht hat, Hostnamen zu registrieren
wie Subdom&auml;nen. So kann die LUG I (Linux User Group Italy) die Dom&auml;ne
<CODE>pluto.linux.it</CODE> nutzen, da der Besitzer von <CODE>linux.it</CODE>
einverstanden war und eine Subdom&auml;ne f&uuml;r die LUG ge&ouml;ffnet hat.</P>

<H3>Welche Informationen brauche ich?</H3>

<P>Nat&uuml;rlich mu&szlig; man wissen, zu welcher Dom&auml;ne der Rechner geh&ouml;ren soll.
Weiterhin ben&ouml;tigt die Software, die das &uuml;bersetzen von Namen in g&uuml;ltige
IP-Adressen &uuml;bernimmt, die Adresse eines <EM>Domain Name Servers</EM>,
dessen IP-Nummer man sich ebenfalls besorgen mu&szlig;.</P>
<P>Es gibt insgesamt drei Dateien, die editiert werden m&uuml;ssen, auf jede von
ihnen wird im folgenden eingegangen.</P>

<H3>/etc/resolv.conf        <!--Name Resolver!/etc/resolv.conf-->       <!--/etc/resolv.conf-->       <!--DNS!/etc/resolv.conf--></H3>

<P><CODE>/etc/resolv.conf</CODE> ist die zentrale Konfigurationsdatei f&uuml;r den
Name Resolver. Das Format ist sehr einfach, es ist eine Textdatei mit
einem Schl&uuml;sselwort pro Zeile. Normalerweise werden drei davon benutzt,
dies sind:
<DL>
<DT><B>domain</B><DD>
<P>Dieser Eintrag bestimmt den Namen der lokalen Domain.</P>

<DT><B>search</B><DD>
<P>Mit diesem Eintrag kann man die Namen von zus&auml;tzlichen
Dom&auml;nen angeben, in denen nach einem Hostnamen gesucht wird.</P>

<DT><B>nameserver</B><DD>
<P>Mit diesem Eintrag - es k&ouml;nnen mehrere davon angegeben
werden - gibt man die IP Adresse eines Domain Name Servers an.</P>
</DL>
</P>
<P>Eine typische Datei <CODE>/etc/resolv.conf</CODE> sieht etwa so aus:
<BLOCKQUOTE><CODE>
<PRE>
domain maths.wu.edu.au
search maths.wu.edu.au wu.edu.au
nameserver 192.168.10.1
nameserver 192.168.12.1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>In diesem Beispiel ist der Standard Domain Name, der an nicht
vollst&auml;ndige angegebene Rechnernamen angeh&auml;ngt wird,
<CODE>maths.wu.edu.au</CODE>. Wird der Rechner in dieser Domain nicht
gefunden, wird auch in der Dom&auml;ne <CODE>wu.edu.au</CODE> gesucht. Weiterhin
sind zwei unabh&auml;ngige Nameserver Eintr&auml;ge vorhanden. Beide k&ouml;nnen von
der Name Resolver Software benutzt werden, um Namen aufzul&ouml;sen.</P>

<H3>/etc/host.conf        <!--Name Resolver!/etc/host.conf-->       <!--/etc/host.conf-->       <!--DNS!/etc/host.conf--></H3>

<P>In der Datei <CODE>/etc/host.conf</CODE> k&ouml;nnen einige Verhaltensweisen der
Name Resolving Software festgelegt werden. Das Format dieser Datei ist
ausf&uuml;hrlich in der Manual Page zu <CODE>resolv(8)</CODE> beschrieben. Jedoch
wird in praktisch allen F&auml;llen das folgende Beispiel ausreichend sein:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
                          
order hosts,bind                                          
multi on  
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Mit diesen Eintr&auml;gen wird festgelegt, da&szlig; die Software zun&auml;chst in der
Datei <CODE>/etc/hosts</CODE> nach einer Namen - Adressen Zuordnung sucht,
bevor der Nameserver gefragt wird. Au&szlig;erdem sollen alle g&uuml;ltigen
Adre&szlig;eintr&auml;ge, die in <CODE>/etc/hosts</CODE> gefunden werden, als Antwort
geliefert werden, und nicht nur der erste.</P>

<H3>/etc/hosts        <!--Name Resolver!/etc/hosts-->       <!--/etc/hosts-->       <!--DNS!/etc/hosts--></H3>


<P>In der Datei <CODE>/etc/hosts</CODE> k&ouml;nnen die IP Adressen von lokalen
Rechnern eingetragen werden. Ein Rechner, dessen Namen in dieser Datei
auftaucht, wird auch ohne eine Nachfrage bei dem Domain Name Server
gefunden. Der Nachteil dabei ist aber, da&szlig; man diese Datei selber auf
dem aktuellen Stand halten mu&szlig;, wenn sich die IP Adresse eines hier
eingetragenen Rechners &auml;ndert. In einem gut verwalteten System wird man
hier meist nur Eintr&auml;ge f&uuml;r das Loopback Interface sowie den lokalen
Rechnernamen vorfinden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
127.0.0.1      localhost loopback
192.168.0.1    name.dieses.rechners
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wie man am ersten Eintrag sieht, sind auch mehrere Namen je
Adre&szlig;eintrag erlaubt.</P>

<H3>Einrichten eines Name Servers</H3>

<P>Soll ein eigener lokaler Name Server betrieben werden, ist das nicht
schwer. Dazu sollte die 
<EM>
<A HREF="DE-DNS-HOWTO.html">DNS HOWTO</A></EM>
und die mit der BIND (Berkeley Internet Name Domain) Version
ausgelieferte Dokumentation zu Rate gezogen werden.</P>

<H2><A NAME="ss4.6">4.6</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.6">Die Konfiguration des Loopback Interface        </A>
<!--Loopback Device-->       <!--Netzwerk!Loopback Device--></H2>

<P>Das <CODE>loopback</CODE> Interface ist eine spezielle Schnittstelle, &uuml;ber die
man eine Verbindung zum eigenen Rechner aufbauen kann. Es gibt einige
Gr&uuml;nde, warum dies sinnvoll sein kann, zum Beispiel wenn man Netzwerk
Software testen will, ohne dabei von anderen Teilnehmern des Netzes
gest&ouml;rt zu werden. Die Standard IP Adresse f&uuml;r dieses Loopback
Interface ist <CODE>127.0.0.1</CODE>. Gleich auf welchem Rechner man
arbeitet, ein </P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
telnet 127.0.0.1 
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>baut immer eine Verbindung zum lokalen Rechner auf.</P>
<P>Die Konfiguration dieser Schnittstelle ist &auml;u&szlig;erst einfach und sollte
auf jeden Fall vorgenommen werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ifconfig lo 127.0.0.1
route add -host 127.0.0.1 lo
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Der <CODE>route</CODE>-Befehl wird im n&auml;chsten Kapitel ausf&uuml;hrlich behandelt.</P>

<H2><A NAME="ss4.7">4.7</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.7">Routing        </A>
<!--Routing-->       <!--Netzwerk!Routing-->       <!--IP!Routing--></H2>

<P><EM>Routing</EM> ist ein wichtiges Thema, es lie&szlig;en sich leicht B&auml;nde damit
f&uuml;llen. Obwohl die meisten nur recht geringe Anspr&uuml;che an das Routing
haben, trifft das f&uuml;r einige nicht zu. Im folgenden werden nur die
grundlegenden Aspekte des Routing behandelt. Wer weitergehende
Informationen zu diesem Thema ben&ouml;tigt, der sei auf die
Literaturhinweise zu Beginn dieses Dokumentes verwiesen.</P>
<P>Zun&auml;chst zum Begriff selber: Was ist <EM>IP Routing</EM>? Hier ist die
Definition, die ich selber verwende:</P>
<P>
<BLOCKQUOTE>
IP Routing ist der Proze&szlig;, &uuml;ber den ein Rechner mit
unterschiedlichen Netzwerkanbindungen entscheidet, &uuml;ber welche
Verbindung ein empfangenes IP Datagramm weitergeleitet werden soll.
</BLOCKQUOTE>
</P>
<P>Dies soll an einem Beispiel eines typischen Routers in einem B&uuml;ro
verdeutlicht werden. Dieser habe eine PPP Verbindung zum Internet,
bedient &uuml;ber einige Ethernet Segmente lokale Workstations und ist &uuml;ber
eine weitere PPP Verbindung mit einer Zweigstelle des B&uuml;ros verbunden. 
Empf&auml;ngt dieser Router nun ein Datagramm von irgendeiner dieser 
Verbindungen, so
wird &uuml;ber das Routing festgelegt, &uuml;ber welche der Verbindungen das
Datagramm weitergereicht wird. Jeder Rechner ben&ouml;tigt das Routing, denn
selbst der einfachste Rechner im Netzwerk besitzt mindestens zwei
Netzwerk Schnittstellen, n&auml;mlich das Loopback Interface sowie die
normale Schnittstelle zum restlichen Netzwerk, also Ethernet, PPP oder
SLIP.</P>
<P>Also, wie funktioniert nun dieses Routing? Jeder einzelne Rechner hat
eine eigene Liste mit Vorschriften f&uuml;r das Routing, man nennt sie die
<EM>Routing Table</EM>. In Kernelversion 2.4 enth&auml;lt diese Tabelle 
acht Spalten. Wichtig sind die ersten drei Spalten. Spalte eins
enth&auml;lt die Schnittstelle, &uuml;ber die Datenpakete weitergeleitet werden,
wenn sie an das in der zweiten Spalte angegebene Ziel (eine Rechner-
oder Netzadresse) gerichtet sind. Spalte drei enth&auml;lt die optionale 
IP Adresse eines anderen Rechners (Gateway), der das Datenpaket zu 
seinem n&auml;chsten Etappenziel leitet. Unter Linux kann man sich die
Routing Tabelle mit dem folgenden Befehl ansehen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
cat /proc/net/route
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Alternativ kann man die folgenden Kommandos benutzen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
/sbin/route -n
netstat -r
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Der eigentliche Vorgang des Routing ist sehr einfach: Ein eingehendes
Datenpaket wird entgegengenommen, seine Zieladresse wird untersucht und
mit den Eintr&auml;gen in der Tabelle verglichen. Der Eintrag, der der
Zieladresse am besten entspricht, wird selektiert und das Datenpaket an
die in diesem Eintrag festgelegte Schnittstelle weitergeleitet.  
Ist f&uuml;r die Adresse auch ein Gateway eingetragen, wird das Paket an
diesen Rechner adressiert, andernfalls wird angenommen, da&szlig; der
Zielrechner zu dem Netzwerk geh&ouml;rt, mit dem die benutzte Schnittstelle
verbunden ist. </P>
<P>
<!--
Routing!route
-->

<!--
Netzwerk!Routing!route
-->

<!--
IP!Routing!route
-->

Um die Routing Tabelle zu ver&auml;ndern, gibt es einen speziellen Befehl.
Dieser Befehl &uuml;bernimmt die Kommandozeilenargumente und setzt sie in die
entsprechenden Systemaufrufe um, die den Kernel dazu veranlassen, die
entsprechenden Eintr&auml;ge in der Routing Tabelle hinzuzuf&uuml;gen, zu entfernen
oder zu ver&auml;ndern. Aus naheliegenden Gr&uuml;nden hei&szlig;t dieser Befehl
<CODE>route</CODE>.</P>
<P>Ein einfaches Beispiel: Nehmen wir an, wir wollen einen Rechner
an ein vorhandenes LAN anschlie&szlig;en. Dieses sei ein Klasse C Netz mit 
der Adresse <CODE>192.168.1.0</CODE>. Unsere eigene IP Adresse ist 
<CODE>192.168.1.10</CODE>, und der Rechner <CODE>192.168.1.1</CODE> ist ein Router 
mit Verbindung zum Internet.</P>
<P>Zun&auml;chst mu&szlig; nat&uuml;rlich die Schnittstelle wie bereits beschrieben
konfiguriert werden, also etwa</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Als n&auml;chstes mu&szlig; die Routing Tabelle erweitert werden, so 
da&szlig; Datagramme an alle Adressen <CODE>192.168.1.*</CODE> direkt 
&uuml;ber die Schnittstelle <CODE>eth0</CODE> geleitet werden:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
route add -net 192.168.0.0 netmask 255.255.255.0 eth0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>&Uuml;ber den Schalter <CODE>-net</CODE> im obigen Befehl wird dem <CODE>route</CODE>
Programm mitgeteilt, da&szlig; es sich um einen Eintrag f&uuml;r ein ganzes
Netzwerk handelt. Die andere Alternative ist ein Aufruf mit
<CODE>-host</CODE>, bei dem nur eine IP Adresse mitgegeben wird.</P>
<P>Mittels diesem Eintrag ist der eigene Rechner nun in der Lage, zu allen
anderen Rechnern im lokalen Ethernet IP Verbindungen aufzubauen. Doch
was ist mit Rechnern, die sich au&szlig;erhalb dieses Netzes befinden?</P>
<P>
<!--
Default Route
-->

<!--
Netzwerk!Default Route
-->

Es w&auml;re sehr umst&auml;ndlich und nicht praktikabel, f&uuml;r jedes denkbare
Netzwerk einen entsprechenden Eintrag anzuf&uuml;gen. Aus diesem Grund gibt
es eine Standardeinstellung, in der festgelegt wird, wie mit Paketen zu
verfahren ist, die nicht gesondert in der Routing Tabelle aufgef&uuml;hrt sind:
die <EM>Default Route</EM>. Im obigen Beispiel hei&szlig;t das: Alles was nicht
im lokalen Netz ist, wird &uuml;ber den Router weitergeleitet - der wird dann
schon wissen, wie mit dem Paket zu verfahren ist. Den entsprechenden
Eintrag in der Routing Tabelle erzeugt man folgenderma&szlig;en:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
route add default gw 192.168.1.1 eth0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Durch den Parameter <CODE>gw</CODE> wird dem <CODE>route</CODE>-Befehl mitgeteilt, da&szlig;
die folgende Adresse die IP-Adresse eines Gateway Rechners oder eines
Routers ist, an den die Pakete weitergeleitet werden.</P>
<P>Die komplette Konfiguration sieht also so aus:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
route add -net 192.168.0.0 netmask 255.255.255.0 eth0
route add default gw 192.168.1.1 eth0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Ein Blick in die <CODE>rc</CODE>-Dateien, die beim Bootproze&szlig; das Netzwerk
initialisieren, sollte &auml;hnliche Eintr&auml;ge wenn auch mit anderen
Adressen zu Tage bringen, denn es ist eine sehr verbreitete
Konfiguration.</P>
<P>Wir k&ouml;nnen uns nun an ein etwas komplizierteres Beispiel wagen. Nehmen
wir an, wir wollten einen einfachen Router konfigurieren, z.B. den
bereits erw&auml;hnten mit mehreren lokalen Netzen und einer PPP Verbindung
zum Internet. F&uuml;r drei lokale Ethernet Segmente w&uuml;rde die Routing Tabelle
etwa folgenderma&szlig;en aufgebaut:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
route add 192.168.1.0 netmask 255.255.255.0 eth0
route add 192.168.2.0 netmask 255.255.255.0 eth1
route add 192.168.3.0 netmask 255.255.255.0 eth2
route add default ppp0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>F&uuml;r jede der an diesen Router angeschlossenen Workstations h&auml;tte die
Routing Tabelle dieselbe einfache Form wie im vorangegangenen Beispiel.
Lediglich der Router mu&szlig; alle drei Netzwerke separat auff&uuml;hren, da er ja
die Aufteilung der Datenpakete auf diese Netze durchf&uuml;hren mu&szlig;. Bleibt
also nur noch die Frage, warum in der Default Route der Eintrag <CODE>gw</CODE>
fehlt. Der Grund daf&uuml;r ist, da&szlig; es sich bei einer PPP-Verbindung
wie auch bei einer Verbindung &uuml;ber das SLIP Protokoll um eine
Verbindung zwischen genau zwei Rechnern handelt. Der Kernel »wei&szlig;«
also, welchen Rechner er &uuml;ber die PPP-Verbindung anspricht, und die
zus&auml;tzliche Angabe einer Gateway-Adresse ist in diesem Falle &uuml;berfl&uuml;ssig.
Lediglich f&uuml;r Ethernet-, Arcnet- oder Token Ring Verbindungen ist die
Angabe einer Gatewayadresse zwingend vorgeschrieben, da hier &uuml;ber eine
Verbindung eine gro&szlig;e Zahl an Rechnern erreicht werden kann.</P>

<H3>Was macht das routed Programm?        <!--Routing!routed-->       <!--Netzwerk!Routing!routed-->       <!--IP!Routing!routed-->       <!--Routing!gated-->       <!--gated-->       <!--Netzwerk!Routing!gated-->       <!--IP!Routing!gated--></H3>

<P>Die oben beschriebene Konfiguration ist f&uuml;r einfache Netzwerke
mit nur wenigen, unver&auml;nderlichen Pfaden zu den unterschiedlichen
Zielen optimiert. In einem komplexen Netzwerk werden die Dinge jedoch etwas
schwieriger. Doch zum Gl&uuml;ck betrifft das nur die wenigsten.</P>
<P>Das gr&ouml;&szlig;te Problem des manuellen oder statischen Routing, das im vorigen
Abschnitt beschrieben wurde, tritt auf, wenn ein Rechner im Netzwerk 
ausf&auml;llt, der als Router arbeitet. In diesem Fall besteht 
die einzige M&ouml;glichkeit,
ein Datenpaket dennoch zum Ziel weiterzuleiten darin, von Hand
einzugreifen und die entsprechenden Routen manuell zu &auml;ndern -
vorausgesetzt nat&uuml;rlich, es existiert solch ein alternativer Weg.
Das ist umst&auml;ndlich, langsam und fehleranf&auml;llig. Deshalb wurden
unterschiedliche Mechanismen entwickelt, um die Routing Tabelle
automatisch anzupassen, falls ein Netzwerkfehler auftritt und 
»Umwege«
zum Ziel bekannt sind. All diese Techniken bezeichnet man als
dynamische Routing Protokolle.</P>
<P>
<!--
Routing!RIP
-->

<!--
Routing!OSPF
-->
 
<!--
Netzwerk!Routing!RIP
-->

<!--
Netzwerk!Routing!OSPF
-->

<!--
IP!Routing!RIP
-->

<!--
IP!Routing!OSPF
-->

Die bekanntesten dynamischen Protokolle sind RIP
(Routing Information Protocol) und OSPF
(Open Shortest Path First Protocol). RIP ist
besonders in kleinen Netzwerken wie mittelgro&szlig;en Betrieben oder
Geb&auml;ude-Netzwerken sehr verbreitet. OSPF ist moderner und insbesondere
darauf ausgelegt, in gro&szlig;en Netzwerken benutzt zu werden, in denen es
eine gro&szlig;e Zahl an Wegen durch das Netzwerk gibt. Die am weitesten
verbreiteten Vertreter dieser Protokolle sind <CODE>routed</CODE> (RIP) und
<CODE>gated</CODE> (OSPF). <CODE>routed</CODE> ist normalerweise Bestandteil jeder
Linux Distribution, ansonst bekommt man es mit dem Paket NetKit (s.o.).</P>
<P>Ein Beispiel f&uuml;r die Verwendung dynamischen Routings ist die folgende
Konfiguration:
<BLOCKQUOTE><CODE>
<PRE>
    192.168.1.0 /                         192.168.2.0 /
       255.255.255.0                         255.255.255.0
     -                                     -
     |                                     |
     |   /-----\                 /-----\   |
     |   |     |ppp0   //    ppp0|     |   |
eth0 |---|  A  |------//---------|  B  |---| eth0
     |   |     |     //          |     |   |
     |   \-----/                 \-----/   |
     |      \ ppp1             ppp1 /      |
     -       \                     /       -
              \                   /
               \                 /
                \               /
                 \             /
                  \           /
                   \         /
                    \       /
                     \     /
                  ppp0\   /ppp1
                     /-----\
                     |     |
                     |  C  |
                     |     |
                     \-----/
                        |eth0
                        |
                   |---------|
                   192.168.3.0 /
                      255.255.255.0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Es gibt drei Router: A, B und C. Jeder ist f&uuml;r ein Ethernet Segment mit
einem Klasse C IP Netzwerk (Netmask 255.255.255.0) zust&auml;ndig.
Dar&uuml;berhinaus verf&uuml;gt jeder Router &uuml;ber jeweils eine PPP-Verbindung zu
jedem der anderen beiden Router; diese bilden also ein Dreieck.</P>
<P>Ganz offensichtlich k&ouml;nnte die Routing Tabelle f&uuml;r Router A folgenderma&szlig;en
aussehen:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
route add -net 192.168.2.0 netmask 255.255.255.0 ppp0
route add -net 192.168.3.0 netmask 255.255.255.0 ppp1
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Dies funktioniert aber nur, solange die Verbindung zwischen Router A und
B besteht. Bricht diese Verbindung zusammen, k&ouml;nnen Rechner des
Ethernet Segmentes von Router A keinen Rechner des Segmentes von Router
B mehr erreichen, da A die Datagramme &uuml;ber die PPP-Verbindung an B
weiterreichen will. Sie k&ouml;nnen immernoch Verbindungen zu den Rechnern
des Segmentes C aufbauen, und diese wiederum k&ouml;nnen problemlos mit
Rechnern im Segment B kommunizieren, da die Verbindung zwischen B und C
immernoch besteht.</P>
<P>Es w&auml;re also naheliegend, da&szlig; A die an B gerichteten Pakete an C sendet
und diese dann von C an B weitergeleitet werden. F&uuml;r genau diese Art
von Problemen sind die dynamischen Protokolle wie RIP ausgelegt. W&uuml;rde
auf jedem der drei Router A, B und C ein Routing Daemon laufen, w&uuml;rden
diese im Falle eines Netzwerkfehlers die Routing Tabellen der drei
Router automatisch den neuen Gegebenheiten anpassen.
Ein derartiges Netz zu konfigurieren ist sehr einfach, es sind lediglich
zwei Schritte notwendig. Hier das Beispiel f&uuml;r Router A:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
route add -net 192.168.1.0 netmask 255.255.255.0 eth0
/usr/sbin/routed
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Der Routing Daemon <CODE>routed</CODE> erkennt beim Start automatisch alle
aktiven Netzwerkschnittstellen und sendet und erkennt &uuml;ber diese
Schnittstellen Meldungen, um festzustellen, ob &Auml;nderungen in der Routing
Tabelle n&ouml;tig sind.</P>
<P>Die war nur eine sehr kurze Beschreibung, was dynamisches Routing ist,
und in welchen F&auml;llen man es verwendet. Wer genauere Informationen
ben&ouml;tigt, sei auf die am Anfang dieses Textes genannten Quellen
verwiesen.</P>
<P>Wichtige Punkte im Zusammenhang mit dynamischen Routing sind:
<OL>
<LI>Einen Routing Daemon ben&ouml;tigt nur, wer auf seinem Rechner mehrere
verschiedene m&ouml;gliche Routen zu einer Zieladresse besitzt. Eine
Beispielanwendung daf&uuml;r w&auml;re der Einsatz von IP Masquerading.</LI>
<LI>Der Routing Daemon &auml;ndert automatisch die Routing Tabelle, 
um sie an &Auml;nderungen im Netzwerk anzupassen.</LI>
<LI>RIP ist f&uuml;r kleine bis mittelgro&szlig;e Netzwerke ausgelegt.</LI>
</OL>
</P>

<H2><A NAME="ss4.8">4.8</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.8">Die Konfiguration von Netzwerk Servern und Diensten        </A>
<!--Netzwerk!Daemon-->       <!--Netzwerk!Port-->       <!--Port-->       <!--inetd-->       <!--Netzwerk!inetd--></H2>

<P>Netzwerk Server und Dienste bezeichnet diejenigen Programme, die es
einem Nutzer von au&szlig;erhalb (Remote User) erlauben, ihren Rechner
zu benutzen. Dieser Nutzer stellt eine Netzwerkverbindung zu ihrem
Rechner, oder besser zu einem Server-Programm auf ihrem Rechner, her.
Dieser Server, man nennt ihn auch Netzwerk Daemon, &uuml;berwacht einen
<EM>Port</EM>. Er nimmt ankommende Verbindungsw&uuml;nsche entgegen und f&uuml;hrt
dann die jeweiligen Aktionen aus. Es gibt zwei unterschiedliche
Methoden, wie ein solcher Netzwerk-Daemon arbeitet:
<DL>
<DT><B>Standalone</B><DD>
<P>Der Daemon &uuml;berwacht selber den Port. Im Falle einer
ankommenden Verbindung &uuml;bernimmt der Daemon selbst die Arbeit und stellt
die gew&uuml;nschte Dienstleistung zur Verf&uuml;gung.</P>

<DT><B>inetd Servers</B><DD>
<P>Der <CODE>inetd</CODE> Server ist ein
besonderer Daemon, der allgemein darauf spezialisiert ist, eingehende
Netzwerkverbindungen zu beantworten. Er besitzt eine eigene
Konfigurationsdatei, in der festgelegt wird, welche Programme er starten
mu&szlig;, wenn auf einem Port eine TCP oder UDP Anfrage eintrifft. Diese
Ports werden in einer anderen Datei beschrieben, davon sp&auml;ter mehr.</P>
</DL>

Es gibt zwei wichtige Konfigurationsdateien, die an die eigenen
Bed&uuml;rfnisse angepa&szlig;t werden m&uuml;ssen. Dies sind <CODE>/etc/services</CODE>,
in der den unterschiedlichen Portnummern Namen zugeordnet werden, und 
<CODE>/etc/inetd.conf</CODE>, die Konfigurationsdatei des <CODE>inetd</CODE>
Netzwerk Daemons. </P>

<H3>/etc/services        <!--inetd!/etc/services-->       <!--Netzwerk!inetd!/etc/services-->       <!--/etc/services--></H3>

<P>Die Datei <CODE>/etc/services</CODE> ist eine einfache Datenbasis, die jedem
Port einen f&uuml;r Menschen leichter verst&auml;ndlichen Namen zuordnet. Das
Format dieser Datei ist sehr einfach: Es handelt sich um eine Textdatei,
und jede Zeile stellt einen Eintrag der Datenbasis dar. Ein solcher
Eintrag besteht aus drei Feldern, die durch beliebig viele Leerzeichen
getrennt sind. Diese drei Felder sind:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
Name      Port/Protokoll       Aliases     # Kommentar
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>
<DL>
<DT><B>Name</B><DD>
<P>Ein einzelnes Wort, welches den jeweiligen Service
beschreibt.</P>

<DT><B>Port/Protokoll</B><DD>
<P>Dieses Feld besteht aus zwei Eintr&auml;gen.
<DL>
<DT><B>Port</B><DD>
<P>Eine Zahl, die die Portnummer angibt, unter der
der jeweilige Service angesprochen werden kann. Die meisten der
&uuml;blichen Services haben festgelegte Nummern. Dieses wird in
<EM>RFC&nbsp;1340</EM> beschrieben.</P>
<DT><B>Protokoll</B><DD>
<P>Je nach verwendetem Protokoll steht hier 
<CODE>tcp</CODE> oder <CODE>udp</CODE>.</P>
</DL>

Es ist wichtig darauf hinzuweisen, da&szlig; ein Eintrag <CODE>18/tcp</CODE> etwas
ganz anderes ist als ein Eintrag <CODE>18/udp</CODE>. Es gibt keinen
technischen Grund, warum ein Service &uuml;ber beide Protokolle zur Verf&uuml;gung
stehen sollte. Nur in seltenen Ausnahmef&auml;llen ist dies der Fall, dann
wird man beide Eintr&auml;ge, also f&uuml;r <CODE>udp</CODE> und <CODE>tcp</CODE> finden.</P>

<DT><B>Aliases</B><DD>
<P>Zus&auml;tzliche Namen, unter denen dieser Service
angesprochen werden kann.</P>
</DL>

Jeglicher Text nach dem Hash-Zeichen (<CODE>#</CODE>) wird ignoriert.</P>

<H3>Ein Beispiel f&uuml;r /etc/services</H3>

<P>Alle modernen Linux Distributionen enthalten bereits eine gute Version
dieser Datei. Falls aber jemand seinen eigenen Rechner von Grund auf
selber aufbauen will, hier ist die mit der Debian Distribution
gelieferte Version.
<BLOCKQUOTE><CODE>
<PRE>
# /etc/services:
#
# Netzwerk Dienstes, Internet Ausf&uuml;hrung
#
# Man beachte, da&szlig; es zur Zeit die Politik von IANA ist, eine einzelne,
# gut bekannte Port Nummer sowohl f&uuml;r TCP als auch UDP zuzuweisen. Daher
# gibt es oft auch einen UDP Eintrag, obwohl das entsprechende Protokoll
# UDP garnicht unterst&uuml;tzt.
# Aktualisiert durch RFC 1340, "Assigned Numbers" (Juli 1992). Nicht
# alle Ports sind enthalten, sondern nur die weiter verbreiteten.

tcpmux          1/tcp                           # TCP port service multiplexer
echo            7/tcp
echo            7/udp
discard         9/tcp           sink null
discard         9/udp           sink null
systat          11/tcp          users
daytime         13/tcp
daytime         13/udp
netstat         15/tcp
qotd            17/tcp          quote
msp             18/tcp                          # message send protocol
msp             18/udp                          # message send protocol
chargen         19/tcp          ttytst source
chargen         19/udp          ttytst source
ftp-data        20/tcp
ftp             21/tcp
ssh             22/tcp                          # SSH Remote Login Protocol
ssh             22/udp                          # SSH Remote Login Protocol
telnet          23/tcp
# 24 - privat
smtp            25/tcp          mail
# 26 - nicht zugewiesen
time            37/tcp          timserver
time            37/udp          timserver
rlp             39/udp          resource        # resource location
nameserver      42/tcp          name            # IEN 116
whois           43/tcp          nicname
re-mail-ck      50/tcp                          # Remote Mail Checking Protocol
re-mail-ck      50/udp                          # Remote Mail Checking Protocol
domain          53/tcp          nameserver      # name-domain server
domain          53/udp          nameserver
mtp             57/tcp                          # deprecated
bootps          67/tcp                          # BOOTP server
bootps          67/udp
bootpc          68/tcp                          # BOOTP client
bootpc          68/udp
tftp            69/udp
gopher          70/tcp                          # Internet Gopher
gopher          70/udp
rje             77/tcp          netrjs
finger          79/tcp
www             80/tcp          http            # WorldWideWeb HTTP
www             80/udp                          # HyperText Transfer Protocol
link            87/tcp          ttylink
kerberos        88/tcp          kerberos5 krb5  # Kerberos v5
kerberos        88/udp          kerberos5 krb5  # Kerberos v5
supdup          95/tcp
# 100 - reserviert
hostnames       101/tcp         hostname        # usually from sri-nic
iso-tsap        102/tcp         tsap            # part of ISODE.
csnet-ns        105/tcp         cso-ns          # also used by CSO name server
csnet-ns        105/udp         cso-ns
rtelnet         107/tcp                         # Remote Telnet
rtelnet         107/udp
pop-2           109/tcp         postoffice      # POP version 2
pop-2           109/udp
pop-3           110/tcp                         # POP version 3
pop-3           110/udp
sunrpc          111/tcp         portmapper      # RPC 4.0 portmapper TCP
sunrpc          111/udp         portmapper      # RPC 4.0 portmapper UDP
auth            113/tcp         authentication tap ident
sftp            115/tcp
uucp-path       117/tcp
nntp            119/tcp         readnews untp   # USENET News Transfer Protocol
ntp             123/tcp
ntp             123/udp                         # Network Time Protocol
netbios-ns      137/tcp                         # NETBIOS Name Service
netbios-ns      137/udp
netbios-dgm     138/tcp                         # NETBIOS Datagram Service
netbios-dgm     138/udp
netbios-ssn     139/tcp                         # NETBIOS session service
netbios-ssn     139/udp
imap2           143/tcp                         # Interim Mail Access Proto v2
imap2           143/udp
snmp            161/udp                         # Simple Net Mgmt Proto
snmp-trap       162/udp         snmptrap        # Traps for SNMP
cmip-man        163/tcp                         # ISO mgmt over IP (CMOT)
cmip-man        163/udp
cmip-agent      164/tcp
cmip-agent      164/udp
xdmcp           177/tcp                         # X Display Mgr. Control Proto
xdmcp           177/udp
nextstep        178/tcp         NeXTStep NextStep       # NeXTStep window
nextstep        178/udp         NeXTStep NextStep       # server
bgp             179/tcp                         # Border Gateway Proto.
bgp             179/udp
prospero        191/tcp                         # Cliff Neuman's Prospero
prospero        191/udp
irc             194/tcp                         # Internet Relay Chat
irc             194/udp
smux            199/tcp                         # SNMP Unix Multiplexer
smux            199/udp
at-rtmp         201/tcp                         # AppleTalk routing
at-rtmp         201/udp
at-nbp          202/tcp                         # AppleTalk name binding
at-nbp          202/udp
at-echo         204/tcp                         # AppleTalk echo
at-echo         204/udp
at-zis          206/tcp                         # AppleTalk zone information
at-zis          206/udp
z3950           210/tcp         wais            # NISO Z39.50 database
z3950           210/udp         wais
ipx             213/tcp                         # IPX
ipx             213/udp
imap3           220/tcp                         # Interactive Mail Access
imap3           220/udp                         # Protocol v3
ulistserv       372/tcp                         # UNIX Listserv
ulistserv       372/udp
#
# spezielle UNIX Dienste
#
exec            512/tcp
biff            512/udp         comsat
login           513/tcp
who             513/udp         whod
shell           514/tcp         cmd             # no passwords used
syslog          514/udp
printer         515/tcp         spooler         # line printer spooler
talk            517/udp
ntalk           518/udp
route           520/udp         router routed   # RIP
timed           525/udp         timeserver
tempo           526/tcp         newdate
courier         530/tcp         rpc
conference      531/tcp         chat
netnews         532/tcp         readnews
netwall         533/udp                         # -for emergency broadcasts
uucp            540/tcp         uucpd           # uucp daemon
remotefs        556/tcp         rfs_server rfs  # Brunhoff remote filesystem
klogin          543/tcp                         # Kerberized `rlogin' (v5)
kshell          544/tcp         krcmd           # Kerberized `rsh' (v5)
kerberos-adm    749/tcp                         # Kerberos `kadmin' (v5)
#
webster         765/tcp                         # Network dictionary
webster         765/udp
#
# Aus "Assigned Numbers":
#
#> Die registrierten Ports werden nicht von der IANA kontrolliert
#> und k&ouml;nnen auf den meisten Systemen von Prozessen gew&ouml;hnlicher
#> Benutzer verwendet werden.
#
#> Ports werden in TCP [45,106] verwendet, um die Endpunkte von
#> logischen Verbindungen, die f&uuml;r l&auml;nger dauernden Austausch
#> von Daten verwendet werden, zu kennzeichnen. Um Dienste f&uuml;r
#> unbekannte Nutzer anzubieten, wird ein Port definiert, um
#> Kontakt zu diesem Service aufzunehmen. Diese Liste definiert die
#> Ports, die von den Server Prozessen f&uuml;r die Kontaktaufnahme 
#> verwendet werden. W&auml;hrend IANA die Benutzung dieser Ports nicht
#> kontrollieren kann, registriert sie die Verwendung dieser Ports.
#
ingreslock      1524/tcp
ingreslock      1524/udp
prospero-np     1525/tcp                # Prospero non-privileged
prospero-np     1525/udp
rfe             5002/tcp                # Radio Free Ethernet
rfe             5002/udp                # Actually uses UDP only
bbs             7000/tcp                # BBS service
#
#
# Kerberos (Athena/MIT Projekt) Dienste
# Man beachte, da&szlig; diese f&uuml;r Kerberos v4 und nicht offiziell sind.
# Auf Rechner, die v4 verwenden, sollte vor diesen das Hash Zeichen
# entfernt werden und die obigen v5 Eintr&auml;ge auskommentiert werden.
#
kerberos4       750/udp         kdc     # Kerberos (server) udp
kerberos4       750/tcp         kdc     # Kerberos (server) tcp
kerberos_master 751/udp                 # Kerberos authentication
kerberos_master 751/tcp                 # Kerberos authentication
passwd_server   752/udp                 # Kerberos passwd server
krb_prop        754/tcp                 # Kerberos slave propagation
krbupdate       760/tcp         kreg    # Kerberos registration
kpasswd         761/tcp         kpwd    # Kerberos "passwd"
kpop            1109/tcp                # Pop with Kerberos
knetd           2053/tcp                # Kerberos de-multiplexor
zephyr-srv      2102/udp                # Zephyr server
zephyr-clt      2103/udp                # Zephyr serv-hm connection
zephyr-hm       2104/udp                # Zephyr hostmanager
eklogin         2105/tcp                # Kerberos encrypted rlogin
#
# Nicht offizielle aber (f&uuml;r NetBSD) notwenige Dienste
#
supfilesrv      871/tcp                 # SUP server
supfiledbg      1127/tcp                # SUP debugging
#
# Datagram Delivery Protocol Dienste
#
rtmp            1/ddp                   # Routing Table Maintenance Protocol
nbp             2/ddp                   # Name Binding Protocol
echo            4/ddp                   # AppleTalk Echo Protocol
zip             6/ddp                   # Zone Information Protocol
#
# Debian GNU/Linux Dienste
rmtcfg          1236/tcp                # Gracilis Packeten remote config server
xtel            1313/tcp                # french minitel
cfinger         2003/tcp                # GNU Finger
postgres        4321/tcp                # POSTGRES
mandelspawn     9359/udp        mandelbrot      # network mandelbrot

# Lokale Dienste
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Da immer wieder neue Dienste eingef&uuml;hrt werden, kann die 
Datei nie ganz aktuell sein. Um die eigene Kopie der Datei
aktuell zu halten, schlage ich vor, sie mit einer <CODE>/etc/services</CODE>
aus einer der aktuellen Distributionen abzugleichen.</P>

<H3>/etc/inetd.conf        <!--inetd!/etc/inetd.conf-->       <!--Netzwerk!inetd!/etc/inetd.conf-->       <!--/etc/inetd.conf--></H3>

<P>Die Datei <CODE>/etc/inetd.conf</CODE> ist die Konfigurationsdatei des
Server Daemons <CODE>inetd</CODE>. Bei einer eingehenden Anfrage nach einem
bestimmten Service sieht der Daemon in dieser Datei nach, was zu tun
ist. F&uuml;r jeden Service, den man anbieten will, mu&szlig; ein entsprechender
Eintrag vorhanden sein, in dem festgelegt wird, welcher Daemon bei
einer Anfrage gestartet werden soll, und wie dies zu geschehen hat.</P>
<P>Auch hier ist das Dateiformat sehr einfach; es handelt sich ebenfalls
um eine reine Textdatei, in der in jeder Zeile ein anzubietender
Service beschrieben wird. Das Zeichen <CODE>#</CODE> dient als
Kommentarzeichen, nachfolgender Text wird ignoriert. Jede Zeile
enth&auml;lt sieben Felder, die jeweils durch eine beliebige Anzahl von
Leerzeichen oder Tabulatoren voneinander getrennt sind. Die
Bezeichnungen der einzelnen Felder sind folgende:
<BLOCKQUOTE><CODE>
<PRE>
service  socket_type  proto  flags  user  server_path  server_args
</PRE>
</CODE></BLOCKQUOTE>

<DL>
<DT><B>service</B><DD>
<P>Name des Dienstes, entsprechend dem Eintrag in
<CODE>/etc/services</CODE>.</P>

<DT><B>socket_type</B><DD>
<P>Dieser Eintrag beschreibt den Typ des Socket,
der f&uuml;r den Dienst gilt. Erlaubte Eintr&auml;ge sind <CODE>stream</CODE>,
<CODE>dgram</CODE>, <CODE>raw</CODE>, <CODE>rdm</CODE> und <CODE>seqpacket</CODE>. Die Gr&uuml;nde
f&uuml;r die Unterteilung sind technischer Natur, aber als Faustregel
kann man davon ausgehen, da&szlig; praktisch alle TCP basierten
Dienste <CODE>stream</CODE> verwenden, w&auml;hrend UDP basierte Dienste
<CODE>dgram</CODE> benutzen. Nur in ganz seltenen F&auml;llen wird ein Dienst
einen anderen Typ verwenden.</P>

<DT><B>proto</B><DD>
<P>Das f&uuml;r diesen Service g&uuml;ltige Protokoll. Es
mu&szlig; mit dem Eintrag in <CODE>/etc/services</CODE> &uuml;bereinstimmen,
normalerweise also entweder <CODE>tcp</CODE> oder <CODE>udp</CODE>. F&uuml;r Server, die
Sun RPC (Remote Procedure Call) verwenden, lauten die Eintr&auml;ge
<CODE>rpc/tcp</CODE> oder <CODE>rpc/udp</CODE>.</P>

<DT><B>flags</B><DD>
<P>Hier gibt es nur zwei m&ouml;gliche Eintr&auml;ge. Dem
<CODE>inetd</CODE> Server wird damit angezeigt, ob das gestartete
Serverprogramm den Socket nach dem Start wieder freigibt oder nicht.
Danach entscheidet sich, ob f&uuml;r eine weitere eingehende Anfrage ein
neuer Proze&szlig; gestartet werden mu&szlig;, oder ob der laufende Proze&szlig;
auch die neuen Anfragen bearbeitet. Die Regeln hierf&uuml;r sind etwas
schwierig, aber auch hier gilt als Faustregel: TCP-Dienste
ben&ouml;tigen den Eintrag <CODE>nowait</CODE>, UDP-Dienste verwenden
<CODE>wait</CODE>. Es gibt hier aber etliche Ausnahmen, im Zweifelsfall sollte
man sich am Beispiel orientieren.</P>

<DT><B>user</B><DD>
<P>Dieser Eintrag legt den Nutzernamen entsprechend
<CODE>/etc/passwd</CODE> fest, mit dessen Rechten der Server gestartet
wird. Dies wird oft aus Sicherheitsgr&uuml;nden gemacht. Verwendet man
hier der Benutzer <CODE>nobody</CODE>, so werden die m&ouml;glichen
Folgesch&auml;den eingegrenzt, sollte doch jemand die
Sicherheitsmechanismen des Systems umgehen. Allerdings ben&ouml;tigen
viele Server die Rechte des Systemadministrators, weshalb hier
meist <CODE>root</CODE> steht.</P>

<DT><B>server_path</B><DD>
<P>Dies ist der Name inklusive vollem Pfad des zu
startenden Servers.</P>

<DT><B>server_args</B><DD>
<P>Dieser Eintrag umfa&szlig;t die gesamte restliche
Zeile und ist optional. Hier k&ouml;nnen zus&auml;tzliche Argumente f&uuml;r
das Serverprogramm &uuml;bergeben werden.</P>
</DL>
</P>

<H3>Ein Beispiel f&uuml;r /etc/inetd.conf</H3>

<P>Wie auch im Falle von <CODE>/etc/services</CODE> geh&ouml;rt ein
funktionierendes <CODE>/etc/inetd.conf</CODE> zum Standardumfang jeder
Distribution. Der Vollst&auml;ndigkeit halber hier die Version der 
Debian Distribution.</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
# /etc/inetd.conf: weitere Informationen finden sich in inetd(8) 
#
# Datenbank der Internet Server Konfiguration
#
#
# Modifiziert f&uuml;r Debian von Peter Tobias &lt;tobias@et-inf.fho-emden.de>
#
# &lt;service_name> &lt;sock_type> &lt;proto> &lt;flags> &lt;user> &lt;server_path> &lt;args>
#
# Interne Dienste
#
#echo           stream  tcp     nowait  root    internal
#echo           dgram   udp     wait    root    internal
discard         stream  tcp     nowait  root    internal
discard         dgram   udp     wait    root    internal
daytime         stream  tcp     nowait  root    internal
daytime         dgram   udp     wait    root    internal
#chargen        stream  tcp     nowait  root    internal
#chargen        dgram   udp     wait    root    internal
time            stream  tcp     nowait  root    internal
time            dgram   udp     wait    root    internal
#
# Dieses sind die Standardienste.
#
telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.telnetd
ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.ftpd
#fsp    dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.fspd
#
# Shell, login, exec und talk sind BSD Protokolle.
#
shell   stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rshd
login   stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rlogind
#exec   stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rexecd
talk    dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.talkd
ntalk   dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.ntalkd
#
# Mail, news und uucp Dienste
#
smtp    stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.smtpd  
#nntp   stream  tcp     nowait  news    /usr/sbin/tcpd  /usr/sbin/in.nntpd
#uucp   stream  tcp     nowait  uucp    /usr/sbin/tcpd  /usr/lib/uucp/uucico
#comsat dgram   udp     wait    root    /usr/sbin/tcpd  /usr/sbin/in.comsat
#
# POP
#
#pop-2  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.pop2d
#pop-3  stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.pop3d
#
# "cfinger" ist f&uuml;r den GNU finger Server, der f&uuml;r Debian verf&uuml;gbar ist.
# Hinweis: Die augenblickliche Implementation des "finger" Daemons
#          erlaubt es, als "root" gestartet zu werden.
#
#cfinger stream tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.cfingerd
#finger stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.fingerd
#netstat        stream  tcp     nowait  nobody  /usr/sbin/tcpd  /bin/netstat
#systat stream  tcp     nowait  nobody  /usr/sbin/tcpd  /bin/ps -auwwx
#
# Der TFTP Dienst wird vor allem f&uuml;r das Booten von anderen Rechner
# angeboten. Auf den meisten Rechnern l&auml;uft dieses nur, falls sie als
# Bootserver f&uuml;r andere Rechner dienen.
#
#tftp   dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd
#tftp   dgram   udp     wait    nobody  /usr/sbin/tcpd  /usr/sbin/in.tftpd /boot
#bootps dgram   udp     wait    root    /usr/sbin/bootpd        bootpd -i -t 120
#
# Kerberos Authentifikation Dienst (mu&szlig; eventuell ver&auml;ndert werden)
#
#klogin         stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rlogind -k
#eklogin        stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rlogind -k -x
#kshell         stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/in.rshd -k
#
# Dienste, die nur auf dem Kerberos Server laufen (mu&szlig; eventuell 
# ver&auml;ndert werden).
#
#krbupdate      stream tcp      nowait  root    /usr/sbin/tcpd  /usr/sbin/registerd
#kpasswd        stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/kpasswdd
#
# RPC basierte Dienste
#
#mountd/1       dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.mountd
#rstatd/1-3     dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.rstatd
#rusersd/2-3    dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.rusersd
#walld/1        dgram   rpc/udp wait    root    /usr/sbin/tcpd  /usr/sbin/rpc.rwalld
#
# Ende von inetd.conf.
ident           stream  tcp     nowait  nobody  /usr/sbin/identd        identd -i
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H2><A NAME="ss4.9">4.9</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.9">Weitere Konfigurationsdateien im Netzwerkumfeld</A>
</H2>

<P>Es gibt noch eine ganze Reihe an Dateien, die mit der
Netzwerkkonfiguration unter Linux zu tun haben. Die meisten davon wird
man nie ver&auml;ndern m&uuml;ssen, es lohnt sich aber dennoch, sie kurz
zu beschreiben, damit klar wird, was darinsteht, und wozu sie gut sind.</P>

<H3>/etc/protocols        <!--/etc/protocols-->       <!--Netzwerk!/etc/protocols--></H3>

<P><CODE>/etc/protocols</CODE> ist eine Datei, in der Protokollnamen und
Identifikationsnummern einander zugeordnet werden. Sie wird vorwiegend
von Programmierern verwendet, damit sie in ihren Programmen die Dienste
anhand ihres Namens verwenden k&ouml;nnen. Au&szlig;erdem verwenden Programmen wie
<CODE>tcpdump</CODE> diese Datei, um anstelle von Nummern Namen ausgeben zu k&ouml;nnen.
Die Standardsyntax dieser Datei ist
<BLOCKQUOTE><CODE>
<PRE>
Protokollname   Nummer   Alias
</PRE>
</CODE></BLOCKQUOTE>

Die Datei <CODE>/etc/protocols</CODE> der 
Debian Distribution sieht so aus:
<BLOCKQUOTE><CODE>
<PRE>
# /etc/protocols:
#
# Internet (IP) Protokolle
#
# F&uuml;r NetBSD basierend auf RFC 1340 (Assigned Numbers, Juli 1992)
# auf den neusten Stand gebracht.

ip      0       IP              # internet protocol, pseudo protocol number
icmp    1       ICMP            # internet control message protocol
igmp    2       IGMP            # Internet Group Management
ggp     3       GGP             # gateway-gateway protocol
ipencap 4       IP-ENCAP        # IP encapsulated in IP (officially ``IP'')
st      5       ST              # ST datagram mode
tcp     6       TCP             # transmission control protocol
egp     8       EGP             # exterior gateway protocol
pup     12      PUP             # PARC universal packet protocol
udp     17      UDP             # user datagram protocol
hmp     20      HMP             # host monitoring protocol
xns-idp 22      XNS-IDP         # Xerox NS IDP
rdp     27      RDP             # "reliable datagram" protocol
iso-tp4 29      ISO-TP4         # ISO Transport Protocol class 4
xtp     36      XTP             # Xpress Tranfer Protocol
ddp     37      DDP             # Datagram Delivery Protocol
idpr-cmtp       39      IDPR-CMTP       # IDPR Control Message Transport
rspf    73      RSPF            # Radio Shortest Path First.
vmtp    81      VMTP            # Versatile Message Transport
ospf    89      OSPFIGP         # Open Shortest Path First IGP
ipip    94      IPIP            # Yet Another IP encapsulation
encap   98      ENCAP           # Yet Another IP encapsulation
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H3>/etc/networks        <!--/etc/networks-->       <!--Netzwerk!/etc/networks--></H3>

<P>Die Datei <CODE>/etc/networks</CODE> hat eine &auml;hnliche Funktion wie
<CODE>/etc/hosts</CODE>. Sie stellt eine einfache Datenbasis f&uuml;r die
Zuordnung von Netzwerknamen und -adressen dar. Der einzige Unterschied
zu letzterem besteht darin, da&szlig; nur zwei Eintr&auml;ge je Zeile erlaubt sind,
und zwar folgenderma&szlig;en:
<BLOCKQUOTE><CODE>
<PRE>
Netzwerkname   Netzwerkadresse
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Auch hier ein kleines Beispiel:
<BLOCKQUOTE><CODE>
<PRE>
loopnet    127.0.0.0
localnet   192.168.0.0
amprnet    44.0.0.0
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>
<!--
Routing!/etc/networks
-->

Bei Programmen wie <CODE>route</CODE> wird ein Netzwerk, das einen Eintrag in
<CODE>/etc/networks</CODE> hat, mit seinem Namen anstelle der reinen
Netzwerkadresse angezeigt.</P>

<H2><A NAME="ss4.10">4.10</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.10">Netzwerksicherheit und Zugangskontrolle        </A>
<!--Netzwerk!Sicherheit--></H2>

<P>Zu Beginn dieses Abschnittes eine kleine Warnung: Einen Rechner oder gar
ein Netzwerk gegen unerlaubtes Eindringen abzusichern, ist ein &auml;u&szlig;erst
schwieriges Unterfangen. Ich selber betrachte mich nicht als Experten
auf diesem Gebiet, und obwohl die im folgenden beschriebenen Mechanismen
sicherlich hilfreich sind, m&ouml;chte ich all denen, die wirklich um die
Sicherheit ihres Systems besorgt sind, raten, selber geeignete Literatur
zu suchen. Im Internet findet man viele gute Hinweise dazu unter anderem
die <EM>
<A HREF="http://www.tldp.org/HOWTO/Security-HOWTO/index.html">Security HOWTO</A></EM> (Englisch).</P>
<P>Ein wichtiger Sicherheits-Grundsatz ist:
»Aktivieren Sie keine Dienste, die Sie nicht ben&ouml;tigen.«
Die meisten Distributionen sind heute mit einer Vielzahl von Servern
ausgestattet, die beim Bootproze&szlig; automatisch gestartet werden. Um ein
Mindestma&szlig; an Systemsicherheit zu gew&auml;hrleisten, sollten Sie sich die
Datei <CODE>/etc/inetd.conf</CODE> in Ruhe ansehen und alle nicht ben&ouml;tigten
Dienste durch Einf&uuml;gen eines <CODE>#</CODE> am Zeilenanfang
auszukommentieren. Gute »Kandidaten« hierf&uuml;r sind <CODE>shell</CODE>, 
<CODE>login</CODE>, <CODE>exec</CODE>, <CODE>uucp</CODE> und <CODE>ftp</CODE> sowie informelle Dienste wie
<CODE>finger</CODE>, <CODE>netstat</CODE> und <CODE>systat</CODE>.</P>
<P>Es gibt eine gro&szlig;e Zahl an Sicherheits- und Zugangskontrollmechanismen,
ich werde im folgenden die wichtigsten davon kurz beschreiben.</P>

<H3>/etc/ftpusers        <!--/etc/ftpusers-->       <!--FTP!/etc/ftpusers-->       <!--Netzwerk!FTP!/etc/ftpusers--></H3>

<P>Die Datei <CODE>/etc/ftpusers</CODE> bietet eine einfache M&ouml;glichkeit,
einzelne Personen vom Zugang &uuml;ber FTP auszuschlie&szlig;en. Die Datei
wird vom Daemonen <CODE>ftpd</CODE> gelesen, wenn eine FTP-Verbindung
aufgebaut wird. Die Datei enth&auml;lt einfach eine Liste mit den
Benutzernamen all derer, denen ein Login verboten werden soll. Hier ein
Beispiel:
<BLOCKQUOTE><CODE>
<PRE>
# /etc/ftpusers - Benutzer, die sich nicht per FTP 
#                 einloggen d&uuml;rfen
root
uucp
bin
mail
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H3>/etc/securetty        <!--/etc/securetty--></H3>

<P>Mit dieser Datei wird festgelegt, an welchen (virtuellen) Terminals
(<CODE>tty</CODE>s) sich der Systemverwalter <CODE>root</CODE> einloggen darf.
<CODE>/etc/securetty</CODE> wird vom Login-Programm, normalerweise
<CODE>/bin/login</CODE>, gelesen und enth&auml;lt eine Liste der erlaubten
Terminals. Auf allen anderen kann <CODE>root</CODE> sich <EM>nicht</EM> einloggen:
<BLOCKQUOTE><CODE>
<PRE>
# /etc/securetty - ttys, auf denen sich root einloggen
#                  darf
tty1
tty2
tty3
tty4
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H3>Die tcpd Hostzugangskontrolle        <!--tcpd-->       <!--Netzwerk!tcpd-->       <!--inetd!tcpd-->       <!--/etc/hosts.allow-->       <!--/etc/hosts.deny-->       <!--Netzwerk!/etc/hosts.allow-->       <!--Netzwerk!/etc/hosts.deny--></H3>

<P>Das Programm <CODE>tcpd</CODE> ist ihnen vielleicht schon in der Datei
<CODE>/etc/inetd.conf</CODE> aufgefallen. Es stellt Kontroll- und
Zugangskontrollmechanismen f&uuml;r diejenigen Dienste zur Verf&uuml;gung, f&uuml;r die
es konfiguriert wird.</P>
<P>Wird es von <CODE>inetd</CODE> gestartet, so liest es zwei Dateien, anhand derer
der Zugang zum &uuml;berwachten Server gew&auml;hrt oder verboten werden kann.</P>
<P>Die beiden Steuerdateien werden jeweils solange gelesen, bis ein
zutreffender Eintrag gefunden wird. Wird ein solcher zutreffender
Eintrag nicht gefunden, wird angenommen, da&szlig; der Zugang f&uuml;r jeden
erlaubt ist. Gelesen werden die Dateien in der Reihenfolge
<CODE>/etc/hosts.allow</CODE>, <CODE>/etc/hosts.deny</CODE>. Die beiden Dateien
werden in den folgenden Abschnitten beschrieben. F&uuml;r eine detaillierte
Beschreibung sei auf die Manual Pages verwiesen;
<CODE>host_access(5)</CODE> ist hier ein guter Startpunkt.</P>

<H3>/etc/hosts.allow</H3>

<P>Dies ist eine der Konfigurationsdateien des Programmes
<CODE>/usr/sbin/tcpd</CODE>. In <CODE>/etc/hosts.allow</CODE> wird eingestellt,
welchen anderen Rechnern der Zugang zu Diensten auf dem eigenen Rechner
gestattet werden soll. Das Dateiformat ist sehr einfach:
<BLOCKQUOTE><CODE>
<PRE>
# /etc/hosts.allow
#
# &lt;service list>: &lt;host list> [: command]
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>
<DL>
<DT><B>service list</B><DD>
<P>Eine durch Kommata getrennte Liste von Namen der
Dienste, f&uuml;r die der Eintrag gelten soll, z.B. <CODE>ftpd</CODE>, <CODE>telnetd</CODE>
oder <CODE>fingerd</CODE>.</P>

<DT><B>host list</B><DD>
<P>Eine durch Komma getrennte Liste von
Rechnernamen; es k&ouml;nnen hier auch IP-Adressen angegeben werden. Au&szlig;erdem
k&ouml;nnen Platzhalter verwendet werden. Beispiele hierf&uuml;r sind
<CODE>gw.vk2ktj.ampr.org</CODE> (bestimmter Rechner), <CODE>.uts.edu.au</CODE> (alle
Rechner deren Name mit dieser Zeichenkette endet) oder <CODE>44.</CODE> (alle
IP-Adressen, die mit der angegebenen Ziffernfolge beginnen). Weiterhin
existieren einige besondere, die die Konfiguration vereinfachen.
Einige davon sind <CODE>ALL</CODE> (jeder Rechner), <CODE>LOCAL</CODE> (Rechner ohne
Dezimalpunkt ».« im Namen, also solche der lokalen Domain) sowie
<CODE>PARANOID</CODE> (Rechner, deren Namen nicht der Adresse entspricht; dient
der Vermeidung von Spoofing). Ein letzter n&uuml;tzlicher Eintrag ist
<CODE>EXCEPT</CODE>. Dadurch k&ouml;nnen Listen mit Ausnahmen definiert werden, wie
in einem sp&auml;teren Beispiel erl&auml;utert wird.</P>

<DT><B>command</B><DD>
<P>Dies ist ein optionaler Parameter. Hier kann ein
Programm mit seinem vollst&auml;ndigen Pfad angegeben werden, welches jedesmal
ausgef&uuml;hrt wird, wenn die entsprechende Regel erf&uuml;llt ist. Es kann
beispielsweise ein Programm gestartet werden, das herauszufinden
versucht, wer gerade auf dem anderen Rechner eingelogged ist, oder eine
Meldung an den Systemadministrator schickt, da&szlig; gerade jemand versucht,
diesen Dienst zu nutzen. Zur Kommandogenerierung existieren einige
Platzhalter, die automatisch gesetzt werden: <CODE>%h</CODE> ist der Name des
Rechners, der die Verbindung aufbauen will, oder seine
IP-Adresse. <CODE>%d</CODE> ist der Name des Daemons, der gestartet werden soll.</P>
</DL>

Ein Beispiel:
<BLOCKQUOTE><CODE>
<PRE>
# /etc/hosts.allow
#
# Mail ist jedem erlaubt
in.smtpd: ALL
# Telnet und FTP nur von lokalen Rechnern sowie meinem
# Rechner zu Hause
telnetd, ftpd: LOCAL, meinrechner.zuhause.org.au
# Finger ist allen erlaubt, aber es wird protokolliert,
# woher die Anfrage kommt
fingerd: ALL: (finger @%h | mail -s "finger from %h" root)
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H3>/etc/hosts.deny</H3>

<P>Dies ist eine der Konfigurationsdateien des Programmes
<CODE>/usr/sbin/tcpd</CODE>. In <CODE>/etc/hosts.deny</CODE> wird eingestellt,
welchen Rechnern der Zugang zu Diensten auf dem eigenen Rechner
verboten werden soll.</P>
<P>Ein einfaches Beispiel sieht etwa so aus:
<BLOCKQUOTE><CODE>
<PRE>
# /etc/hosts.deny
#
# Kein Zugang f&uuml;r Rechner mit suspektem Namen
ALL: PARANOID
#
# Verbot f&uuml;r ALLE Rechner
ALL: ALL
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Der Eintrag <CODE>PARANOID</CODE> ist hier redundant, da der folgende Eintrag in
jedem Fall einen Zugang unterbindet. Jeder der beiden Eintr&auml;ge ist eine
sinnvolle Einstellung, abh&auml;ngig von den jeweiligen Bed&uuml;rfnissen.</P>
<P>Die sicherste Konfiguration ist ein Eintrag <CODE>ALL: ALL</CODE> in
<CODE>/etc/hosts.deny</CODE> zusammen mit einer Datei
<CODE>/etc/hosts.allow</CODE> in der im einzelnen festgelegt wird, f&uuml;r wen
der Zugang erlaubt wird.</P>

<H3>/etc/hosts.equiv        <!--/etc/hosts.equiv-->       <!--Netzwerk!/etc/hosts.equiv--></H3>

<P>Die Datei <CODE>/etc/hosts.equiv</CODE> erlaubt es, einzelnen Rechnern und
Benutzern den Zugang zur eigenen Maschine ohne Pa&szlig;wortabfrage zu
erm&ouml;glichen. Dies ist in einer sicheren Umgebung hilfreich, in der man
alle anderen Maschinen unter Kontrolle hat. Andernfalls ist es aber ein
gro&szlig;es Sicherheitsrisiko. Denn der eigene Rechner ist nur so sicher wie
der unsicherste Rechner, dem man vertraut. Wer gro&szlig;en Wert auf h&ouml;chste
Sicherheit legt, sollte diesen Mechanismus nicht verwenden, und auch den
Nutzern nahelegen, die Datei <CODE>.rhosts</CODE> nicht zu verwenden.</P>

<H3>Konfiguration des FTP-Daemons        <!--FTP!Sicherheit-->       <!--Netzwerk!FTP!Sicherheit--></H3>

<P>Viele Besitzer von vernetzten Rechnern sind daran interessiert, anderen
Personen das &uuml;bertragen von Daten von und zum eigenen Rechner zu
erm&ouml;glichen, ohne ihnen einen expliziten Account einzurichten. Dazu
dient der FTP Server. Es mu&szlig; aber sichergestellt sein, da&szlig; der
FTP-Daemon korrekt f&uuml;r den anonymen Zugang konfiguriert ist. Die
Manual Page ftpd(8) beschreibt die dazu notwendigen
Schritte in einiger L&auml;nge. Diesen Tips sollte man unbedingt folgen.
Au&szlig;erdem ein wichtiger Tip: Verwenden sie auf keinen Fall einfach eine
Kopie der eigenen Datei <CODE>/etc/passwd</CODE> im anonymen
Heimatverzeichnis <CODE>/etc</CODE>. Stellen sie sicher, da&szlig; alle
unwichtigen Eintr&auml;ge entfernt werden, sonst stehen Angriffen durch
Pa&szlig;wortentschl&uuml;sselung T&uuml;r und Tor offen.</P>

<H3>Einrichtung einer Firewall</H3>

<P>Eine extrem sichere Methode gegen Angriffe &uuml;ber das Netzwerk ist es,
erst gar keine Datagramme an den Rechner heranzulassen. Dieses wird in
einem eigenen Dokument beschrieben, dem 
<EM>
<A HREF="http://www.tldp.org/HOWTO/Firewall-HOWTO.html">Firewall and Proxy Server HOWTO</A></EM> (Englisch) beschrieben.</P>

<H3>Weitere Tips und Vorschl&auml;ge</H3>

<P>Hier noch ein paar weitere Hinweise, auch wenn der eine oder andere
davon geeignet ist, Glaubenskriege unter Unix-Administratoren
hervorzurufen. 
<DL>
<DT><B>sendmail</B><DD>
<P>Obwohl die Verwendung des <CODE>sendmail</CODE>-Daemons sehr
weit verbreitet ist, taucht er mit erschreckender Regelm&auml;&szlig;igkeit in
Warnungen vor Sicherheitsl&ouml;chern auf. Es obliegt jedem selber, ob er
<CODE>sendmail</CODE> verwenden will.</P>

<DT><B>NFS und andere Sun RPC Dienste</B><DD>
<P>Seien Sie vorsichtig damit. Es
gibt bei diesen Diensten eine gro&szlig;e Zahl potentieller
Sicherheitsrisiken. Allerdings ist es schwierig, f&uuml;r etwas wie NFS eine
Alternative zu finden. Wenn Sie diese Dienste benutzen, seien Sie
vorsichtig, wem Sie Zugriffe erlauben.</P>
</DL>
</P>

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