This file is indexed.

/usr/share/doc/HOWTO/de-html/DE-NET3-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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.65">
 <TITLE>Linux NET-3 HOWTO : Grundkonfiguration</TITLE>
 <LINK HREF="DE-NET3-HOWTO-5.html" REL=next>
 <LINK HREF="DE-NET3-HOWTO-3.html" REL=previous>
 <LINK HREF="DE-NET3-HOWTO.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="DE-NET3-HOWTO-5.html"><IMG SRC="next.png" ALT="Weiter"></A>
<A HREF="DE-NET3-HOWTO-3.html"><IMG SRC="prev.png" ALT="Zurück"></A>
<A HREF="DE-NET3-HOWTO.html#toc4"><IMG SRC="toc.png" ALT="Inhalt"></A>
<HR>
<H2><A NAME="s4">4.</A> <A HREF="DE-NET3-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-NET3-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>Der derzeit installierte Kernel hat oft nicht die Treiber f&uuml;r die
gew&uuml;nschte Hardware und Netzwerk-Protokolle eingebunden.  Hier ist eine
Neukompilation des Kernels mit den entsprechenden Optionen notwendig.</P>
<P>Die jeweils aktuelle Kernel-Version befindet sich auf
<BLOCKQUOTE><CODE>
<A HREF="ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/v2.0">ftp.funet.fi:/pub/Linux/PEOPLE/Linus/v2.0</A></CODE></BLOCKQUOTE>
</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://sunsite.unc.edu/LDP/HOWTO/Module-HOWTO.html">Module HOWTO</A></EM></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, derzeit 2.1.xx)
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.</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 routes
definiert werden.</P>
<P>Normalerweise kommen alle neueren Linux Distributionen mit diesen
Hilfsprogrammen.  Wer sie bei der Erstinstallation weggelassen hat, mu&szlig;
dies in jedem Fall nachholen.</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>Sie werden betreut von Bernd Eckenfels und k&ouml;nnen via <CODE>ftp</CODE> bezogen
werden, entweder von
<BLOCKQUOTE><CODE>
<A HREF="ftp://ftp.inka.de/pub/comp/Linux/networking/NetTools/">ftp.inka.de:/pub/comp/Linux/networking/NetTools/</A></CODE></BLOCKQUOTE>

oder die Spiegelung 
<BLOCKQUOTE><CODE>
<A HREF="ftp://ftp.linux.uk.org/pub/linux/Networking/PROGRAMS/NetTools/">ftp.linux.uk.org:/pub/linux/Networking/PROGRAMS/NetTools/</A></CODE></BLOCKQUOTE>
</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>Wer au&szlig;erdem auch beabsichtigt, ein Firewall aufzusetzen oder IP
Masquerading zu verwenden, wird dar&uuml;berhinaus das Programm
<EM>ipfwadm</EM> ben&ouml;tigen.  Die aktuellste Version bekommt man &uuml;ber
<CODE>
<A HREF="ftp:/ftp.xos.nl/pub/linux/ipfwadm">ftp.xos.nl:/pub/linux/ipfwadm</A></CODE>.
Auch dort gibt es unterschiedliche Versionen, man mu&szlig; deshalb darauf
achten die f&uuml;r den eigenen Kernel passende auszuw&auml;hlen.</P>
<P>Die Installation ist dann ganz einfach (wieder am Beispiel der gerade
aktuellen Version):</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
#
# cd /usr/src
# tar xvfz ipfwadm-2.3.0.tar.gz
# cd ipfwadm-2.3.0
# make
# make install
#
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H3>Anwendungsprogramme.</H3>

<P>Mit `Anwendungen' sind hier Programme wie <EM>telnet</EM> oder
<EM>ftp</EM> 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 dieser Programme.  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.</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 (au&szlig;er wenn die Zahl
Null ist).  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 `Netwerk-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 is 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 AND
verkn&uuml;pft wird, ergibt so die Adresse des Netzwerkes, zu der sie
geh&ouml;rt.  Die Netzwerk-Adresse besitzt deshalb immer die kleinste Nummer
aus dem Bereich des Netzwerkes, 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 sofort 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 Adressbereiches zu verwenden,
im obigen Beispiel also die <CODE>192.168.110.255</CODE>.  An einigen
Stellen wird 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 Adressraumes 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 Fall
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 hat</B><DD>
<P>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 Adressraumes speziell f&uuml;r
diesen Zweck reserviert.  Sie sind im RFC1597 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-NET3-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 <EM>init</EM> gestartet.  <EM>init</EM> liest dann die
Konfigurationsdatei <CODE>/etc/inittab</CODE> und beginnt den eigentlichen
Boot-Proze&szlig;.  Es gibt verschiedene Versionen des <EM>init</EM>-Programmes,
und das ist auch bereits der Hauptgrund f&uuml;r die unterschiedlichen
Bootkonzepte der verschiedenen Distributionen.</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-Scriptes fest, das den
Bootproze&szlig; steuert.  In gewisser Weise handelt es sich um das
&Auml;quivalent zu der Datei <CODE>AUTOEXEC.BAT</CODE> in DOS.</P>
<P>Meist werden von diesem Script aus weitere Scripte 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
-------------------------------------------------------------------------------
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>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>
--------------------------------------------
Distrib   | Netzwerk Konfigurations Programm
--------------------------------------------
RedHat    | /sbin/netcfg
Slackware | /sbin/netconfig
--------------------------------------------
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H2><A NAME="ss4.3">4.3</A> <A HREF="DE-NET3-HOWTO.html#toc4.3">Anlegen der Netzwerk Schnittstellen.</A>
</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 <CODE>SLIP</CODE> und <CODE>PPP</CODE>, werden
jedoch erst aufgrund 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 <CODE>slip</CODE> oder <CODE>ppp</CODE> 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-NET3-HOWTO.html#toc4.4">Konfiguration der Netzwerk Schnittstelle.</A>
</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 die 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>, das steht f&uuml;r Interface Configure, also
Schnittstellenkonfiguration. </P>
<P>Ein typisches Beispiel f&uuml;r den Einsatz von <CODE>ifconfig</CODE> ist etwa
<BLOCKQUOTE><CODE>
<PRE>
# ifconfig eth0 192.168.0.1 netmask 255.255.255.0 up
</PRE>
</CODE></BLOCKQUOTE>

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 <EM>up</EM> aktiviert die Schnittstelle.</P>
<P>Der Kernel hat einige voreingestellte Standardwerte f&uuml;r viele der
Konfigurationsparameter.  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 benutzt der Kernel <CODE>192.168.0.0</CODE> als Netzwerk-Adresse
und <CODE>192.168.0.255</CODE> als Broadcast-Adresse.</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><CODE>[-]</CODE>arp</B><DD>
<P>(de-)aktiviert das
Adress-Aufl&ouml;sungs-Protokoll.  (address resolution protocoll) f&uuml;r diese
Schnittstelle.</P>
<DT><B><CODE>[-]</CODE>allmulti</B><DD>
<P>(de-)aktiviert den sogenannten
promiscuous mode.  In diesem Modus kann man eine Schnittstelle anweisen
auch Datenpakete anzunehmen, die nicht an diese Schnittstelle adressiert
sind.  Dies ist sehr wichtig f&uuml;r Programme wie <CODE>tcpdump</CODE>.</P>
<DT><B>mtu N</B><DD>
<P>legt die <CODE>MTU</CODE> fest.</P>
<DT><B>netmask addr</B><DD>
<P>legt die Netzwerk Maske 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><CODE>[-]</CODE>broadcast [addr<CODE>]</CODE></B><DD>
<P>damit kann die
Adresse f&uuml;r Broadcast-Meldungen festgelegt werden oder die Annahme
solcher Pakete abgeschaltet werden.</P>
<DT><B><CODE>[-]</CODE>pointopoint [addr] </B><DD>
<P>hiermit
wird die Adresse des Rechners am anderen Ende der Verbindung festgelegt,
z.B. im Falle von <CODE>SLIP</CODE> und <CODE>PPP</CODE> Verbindungen.</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>

<H2><A NAME="ss4.5">4.5</A> <A HREF="DE-NET3-HOWTO.html#toc4.5">Konfiguration des Name Resolver.</A>
</H2>

<P>Der <EM>Name Resolver</EM> ist ein Teil der Standardbibliothek von Linux.
Seine 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?</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 RFC-920 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>L&auml;nderkennzeichen</B><DD>
<P>Diese sind gebildet aus zwei Buchstaben, die f&uuml;r
ein Land stehen
country.</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>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>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 Email Rechners ist der vollst&auml;ndige
Domainname <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 Domain (<EM>top level 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>


<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</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> ist.  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</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 Online Hilfe 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
Adresseintr&auml;ge, die in <CODE>/etc/hosts</CODE> gefunden werden, als Antwort
geliefert werden, und nicht nur der erste.</P>

<H3>/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>
# /etc/hosts
127.0.0.1      localhost loopback
192.168.0.1    this.host.name
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Wie man am ersten Eintrag sieht, sind auch mehrere Namen je
Adresseintrag erlaubt.</P>

<H2><A NAME="ss4.6">4.6</A> <A HREF="DE-NET3-HOWTO.html#toc4.6">Die Konfiguration des Loopback Interface.</A>
</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>.  Unabh&auml;ngig, auf welchem Rechner man
arbeitet, ein <CODE>telnet 127.0.0.1</CODE> 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-NET3-HOWTO.html#toc4.7">Routing.</A>
</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 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 am Internet 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>.  Diese Tabelle enth&auml;lt Zeilen mit typischerweise
mindestens drei Spalten.  Die erste Spalte enth&auml;lt die Zieladresse, die
zweite Spalte die Schnittstelle, &uuml;ber die das Datenpaket weitergeleitet
werden soll, und die dritte enth&auml;lt optional die IP Adresse eines
anderen Rechners (Gateway), der das Datenpaket zu seinem n&auml;chsten
Etappenziel leitet.  Unter Linux kann man sich diese Tabelle mit dem
folgenden Befehl ansehen:
<BLOCKQUOTE><CODE>
<PRE>
# cat /proc/net/route
</PRE>
</CODE></BLOCKQUOTE>

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>Um die Routing Table 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 Table 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 befinden uns an einem
Ethernet Netzwerk.  Es 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
<BLOCKQUOTE><CODE>
<PRE>
# ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
</PRE>
</CODE></BLOCKQUOTE>

Als n&auml;chstes mu&szlig; in die Routing Table eingetragen werden, da&szlig; Datagramme
an alle Adressen <CODE>192.168.1.*</CODE> direkt &uuml;ber das Ethernet Device
<CODE>eth0</CODE> geleitet werden:
<BLOCKQUOTE><CODE>
<PRE>
# route add -net 192.168.0.0 netmask 255.255.255.0 eth0
</PRE>
</CODE></BLOCKQUOTE>

&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 Eintrag <CODE>host</CODE>, bei
dem nur eine einzige IP Adresse engegeben 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>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 Table 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 Table erzeugt man folgenderma&szlig;en:
<BLOCKQUOTE><CODE>
<PRE>
# route add default gw 192.168.1.1 eth0
</PRE>
</CODE></BLOCKQUOTE>

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:
<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>

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 Table
etwa folgenderma&szlig;en aufgebaut:
<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>

F&uuml;r jede der an diesen Router angeschlossenen Workstations h&auml;tte die
Routing Table 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
(ebenso wie 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 <CODE>routed</CODE> Programm?</H3>

<P>Die oben beschriebene Konfiguration ist optimiert auf einfache Netzwerke
mit nur wenigen, unver&auml;nderlichen Pfaden zu den unterschiedlichen
Zielen.  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 (Verbindungs-) Rechner
im Netzwerk ausf&auml;llt.  In diesem Fall besteht die einzige M&ouml;glichkeit,
ein Datenpaket dennoch zum Ziel weiterzuleiten darin, von Hand
einzugreifen und die entsprechenden Routes manuell einzutragen --
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 Table
automatisch anzupassen, falls ein Netzwerkfehler auftritt und `Umwege'
zum Ziel bekannt sind.  All diese Techniken bezeichnet man als
<EM>dynamische Routing Protokolle</EM>.</P>
<P>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, sonst 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>

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 Table f&uuml;r Router A folgenderma&szlig;en
aussehen:
<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>

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 D&auml;mon 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:
<BLOCKQUOTE><CODE>
<PRE>
# route add -net 192.168.1.0 netmask 255.255.255.0 eth0
# /usr/sbin/routed
</PRE>
</CODE></BLOCKQUOTE>

Der Routing D&auml;mon <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
Table 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 D&auml;mon ben&ouml;tigt nur, wer auf seinem Rechner mehrere
verschiedene m&ouml;gliche Routes zu einer Zieladresse besitzt.</LI>
<LI>Der Routing D&auml;mon &auml;ndert automatisch die Routing Table, um sie an
&Auml;nderungen im Netzwerk anzupassen.</LI>
<LI>RIP ist f&uuml;r kleine und mittelgro&szlig;e Netzwerke ausgelegt.</LI>
</OL>
</P>


<H2><A NAME="ss4.8">4.8</A> <A HREF="DE-NET3-HOWTO.html#toc4.8">Die Konfiguration von Netzwerk Servern und Diensten.</A>
</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 D&auml;mon, &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-D&auml;mon arbeitet:
<DL>
<DT><B>Standalone</B><DD>
<P>Der D&auml;mon &uuml;berwacht selber den Port. Im Falle einer
ankommenden Verbindung &uuml;bernimmt der D&auml;mon selbst die Arbeit und stellt
die gew&uuml;nschte Dienstleistung zur Verf&uuml;gung.</P>
<DT><B>slave des <CODE>inetd</CODE> Servers</B><DD>
<P>Der <CODE>inetd</CODE> Server ist ein
besonderer D&auml;mon 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 dem den unterschiedlichen Portnummern Namen zugeordnet werden, und 
<CODE>/etc/inetd.conf</CODE>, die Konfigurationsdatei des <CODE>inetd</CODE>
Netzwerkd&auml;mons. </P>


<H3><CODE>/etc/services</CODE></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, durch beliebig viele Leerzeichen
getrennt.  Diese drei Felder sind:
<PRE>
Name      Port/Protokoll       Aliases     # Kommentar
</PRE>

<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 Nummer, die die Portnummer angibt, unter der
der jeweilige Service angesprochen werden kann.  Die meisten der
&uuml;blichen Services haben festgelegte Nummern, dies wird in
<CODE>RFC-1340</CODE> 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 <CODE>/etc/services</CODE>.</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:
# $Id: services,v 1.3 1996/05/06 21:42:37 tobias Exp $
#
# Network services, Internet style
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1340, ``Assigned Numbers'' (July 1992).  Not all ports
# are included, only the more common ones.

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 - private
smtp            25/tcp          mail
# 26 - unassigned
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 - reserved
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
#
# UNIX specific services
#
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
#
# From ``Assigned Numbers'':
#
#> The Registered Ports are not controlled by the IANA and on most systems
#> can be used by ordinary user processes or programs executed by ordinary
#> users.
#
#> Ports are used in the TCP [45,106] to name the ends of logical
#> connections which carry long term conversations.  For the purpose of
#> providing services to unknown callers, a service contact port is
#> defined.  This list specifies the port used by the server process as its
#> contact port.  While the IANA can not control uses of these ports it
#> does register or list uses of these ports as a convienence to the
#> community.
#
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 (Project Athena/MIT) services
# Note that these are for Kerberos v4, and are unofficial.  Sites running
# v4 should uncomment these and comment out the v5 entries above.
#
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
#
# Unofficial but necessary (for NetBSD) services
#
supfilesrv      871/tcp                 # SUP server
supfiledbg      1127/tcp                # SUP debugging
#
# Datagram Delivery Protocol services
#
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 services
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

# Local services
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H3><CODE>/etc/inetd.conf</CODE></H3>

<P>Die Datei <CODE>/etc/inetd.conf</CODE> ist die Konfigurationsdatei des
Server D&auml;mons <CODE>inetd</CODE>.  Bei einer eingehenden Anfrage nach einem
bestimmten Service sieht der D&auml;mon 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 D&auml;amon 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>&aelig;tc/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 <CODE>tcp</CODE>basierten
Dienste <CODE>stream</CODE> verwenden, w&auml;hrend <CODE>udp</CODE>-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: <CODE>tcp</CODE>-Dienste
ben&ouml;tigen den Eintrag <CODE>nowait</CODE>, <CODE>udp</CODE>-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, deshalb steht hier
meist <CODE>root</CODE>.</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 <CODE>/etc/inetd.conf</CODE></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:  see inetd(8) for further informations.
#
# Internet server configuration database
#
#
# Modified for Debian by 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>
#
# Internal services
#
#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
#
# These are standard services.
#
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 and talk are BSD protocols.
#
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 and uucp services.
#
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 et al
#
#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' is for the GNU finger server available for Debian.  (NOTE: The
# current implementation of the `finger' daemon allows it to be run as `root'.)
#
#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
#
# Tftp service is provided primarily for booting.  Most sites
# run this only on machines acting as "boot servers."
#
#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 authenticated services (these probably need to be corrected)
#
#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
#
# Services run ONLY on the Kerberos server (these probably need to be corrected)
#
#krbupdate      stream tcp      nowait  root    /usr/sbin/tcpd  /usr/sbin/registerd
#kpasswd        stream  tcp     nowait  root    /usr/sbin/tcpd  /usr/sbin/kpasswdd
#
# RPC based services
#
#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
#
# End of 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-NET3-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><CODE>/etc/protocols</CODE></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 von Programmen wie
<CODE>tcpdump</CODE>, 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:
# $Id: protocols,v 1.1 1995/02/24 01:09:41 imurdock Exp $
#
# Internet (IP) protocols
#
#       from: @(#)protocols     5.1 (Berkeley) 4/17/89
#
# Updated for NetBSD based on RFC 1340, Assigned Numbers (July 1992).

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><CODE>/etc/networks</CODE></H3>

<P>Die Datei <CODE>/etc/networks</CODE> hat eine &auml;hnliche Funktion wie
<CODE>/etc/hosts</CODE>. Es 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 folgendermassen:
<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>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-NET3-HOWTO.html#toc4.10">Netzwerksicherheit und Zugangskontrolle</A>
</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.</P>
<P>Ein wichtiger Grundsatz zur Sicherheit ist
<B>Aktivieren sie keine Dienste, die sie nicht ben&ouml;tigen</B>.
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 nichtben&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><CODE>/etc/ftpusers</CODE></H3>

<P>Die Datei <CODE>/etc/ftpusers</CODE> bietet eine einfache M&ouml;glichkeit,
einzelne Personen vom Zugang &uuml;ber <CODE>ftp</CODE> auszuschlie&szlig;en. Die Datei
wird vom ftp-D&auml;monen <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 - users not allowed to login via ftp
root
uucp
bin
mail
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H3><CODE>/etc/securetty</CODE></H3>

<P>Mit dieser Datei wird festgelegt, an welchen (virtuellen) Terminals
(<CODE>ttys</CODE>) 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 nicht einloggen:
<BLOCKQUOTE><CODE>
<PRE>
# /etc/securetty - tty's on which root is allowed to login
tty1
tty2
tty3
tty4
</PRE>
</CODE></BLOCKQUOTE>
</P>

<H3>Die <CODE>tcpd</CODE> Hostzugangskontrolle</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 <CODE>man</CODE> Hilfeseiten verwiesen,
<CODE>host_access(5)</CODE> ist hier ein guter Startpunkt.</P>

<H3><CODE>/etc/hosts.allow</CODE></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 "<CODE>.</CODE>" 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 D&auml;mons, 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, myhost.athome.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><CODE>/etc/hosts.deny</CODE></H3>

<P>Dies ist eine der Konfigurationsdateien des Programmes
<CODE>/usr/sbin/tcpd</CODE>. In <CODE>/etc/hosts.deny</CODE> wird eingestellt,
welchen anderen 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 fuer Rechner mit suspektem Namen
ALL: PARANOID
#
# Verbot fuer 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><CODE>/etc/hosts.equiv</CODE></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 <CODE>ftp</CODE> D&auml;mons</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
<CODE>ftp</CODE>-D&auml;mon korrekt f&uuml;r den anonymen Zugang konfiguriert ist. Die
Seite <CODE>ftpd(8)</CODE> der Online-Hilfe 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 eines 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="DE-Firewall-HOWTO.html">Firewall HOWTO</A></EM>.</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>-D&auml;mons 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 einen Zugriff darauf erlauben.</P>
</DL>
</P>


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