/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ändnis
ist sehr wichtig, bevor man mit der tatsächlichen Konfiguration beginnen
kann. Es handelt sich um grundlegende Prinzipien, die unabhä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ür den Anfang?</A>
</H2>
<P>Einige Dinge benötigt man, bevor man sich mit der Zusammenstellung und
Konfiguration seines Netzwerkes beschäftigen kann. Die wichtigsten
davon sind:</P>
<H3>Aktuelle Kernel Quelldateien</H3>
<P>Viele der aktuellen Distributionen kommen bereits
mit vorkompilierten Kernel und unterstützen typische PC-Hardware.
Zusätzlich sind bereits alle im Kernel verfügbaren Treiber als
Module kompiliert. Deshalb ist es oft mö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ühren, weil die eigene Hardware erst
in neueren Kernelversionen unterstützt wird.</P>
<P>Der derzeit installierte Kernel hat oft nicht die Treiber für die
gewünschten Hardware- und Netzwerk-Protokolle eingebunden. Hier ist eine
Neukompilation des Kernels mit den entsprechenden Optionen notwendig.</P>
<P>Für Nutzer der groß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ö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 überlastet.
Benutzen Sie deshalb möglichst einen Mirror.</P>
<P>Normalerweise wird das Archiv mit den Quelltexten in das Verzeichnis
<CODE>/usr/src/linux</CODE> entpackt. Weiterführende Informationen dazu,
wie man Patches einspielt und den Kernel ü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ü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önnen strukturelle Veränderungen oder Test-Code enthalten, die
im Zusammenspiel mit anderen Programmen des Systems zu Problemen führen
können. Wer sich nicht sicher ist, daß 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ö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ß
diese in jedem Fall installieren.</P>
<P>Wer keine fertige Distribution verwendet, muß sich die Quellen selbst
besorgen und die nötigen Programme kompilieren. Dies ist aber nicht
weiter schwierig.</P>
<P>Die Programme werden von Philip Blundell betreut und können
von Freshmeat oder direkt ü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ß man sich vergewissern, daß die Version sich auch mit
dem eingesetzten Kernel verträgt. Um die gegenwä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ßerdem auch beabsichtigt, eine Firewall aufzusetzen oder IP
Masquerading zu verwenden, wird darüber hinaus je nach Kernel
Programme wie <CODE>ipfwadm</CODE> oder <CODE>ipmasqadm</CODE> benö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ö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ä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ß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äßig schreibt man diese in einer durch Punkte getrennten
Dezimalschreibweise: Jedes Byte wird in eine Dezimalzahl umgewandelt
(0-255), wobei führende Nullen weggelassen werden. Diese vier Zahlen
werden dann, durch einen Dezimalpunkt ».«
getrennt, hintereinander aufgeschrieben. Für gewöhnlich bekommt jedes
Interface eines Rechners eine eigene IP Adresse. Es ist zwar erlaubt,
daß 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 ü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ö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üpft wird, ergibt so die Adresse des Netzwerkes, zu der sie
gehört. Die Netzwerk-Adresse stellt deshalb immer die zahlenmäßig
kleinste Adresse des Adreß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ä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 über diese Broadcast Adresse verbreitet, damit
alle Rechner sie gleichzeitig erhalten. Es gibt zwei verwendete Standards
dafür, wie eine solche Broadcast Adresse aussieht. Am weitesten
verbreitet ist es, die höchste Nummer des Adreßbereiches zu verwenden,
im obigen Beispiel also die <CODE>192.168.110.255</CODE>. Aus verschiedenen
Gründen wird manchmal auch die Netzwerk-Adresse für diesen Zweck verwendet.
In der Praxis ist es egal, welche dieser Adressen verwandt wird. Es muß
nur sichergestellt sein, daß alle Rechner des Netzes mit derselben
Broadcast-Adresse konfiguriert werden.</P>
<P>In einer recht frühen Phase der Entwicklung des IP Protokolles wurden
einige willkürlich gewählte Bereiche des Adreßraumes zu Netzwerken
zusammengefaßt, die man als Klassen bezeichnet. Diese Klassen stellen
die Standard-Größen fü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ängt vom jeweiligen
Anwendungsfall ab; eventuell muß man eine Kombination der unten
aufgeführten Aktionen durchführen. </P>
<P>
<DL>
<DT><B>Anbinden eines einzelnen Linux-Rechners in ein bestehendes Netz</B><DD>
<P>In diesem Fall muß man sich an den Administrator des Netzes wenden und
ihn um folgende Informationen bitten:
<UL>
<LI>IP Adresse fü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ß 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öllig frei auswählen. Aus Sicherheitsgründen,
und um trotzdem eine gewisse Konsistenz in der Adressenvergabe zu
wahren, wurden jedoch einige Bereiche des Adreßraumes speziell für
diesen Zweck reserviert. Sie sind im <EM>RFC 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 überlegen, wie groß das eigene Netz sein soll und
dann einen geeigneten Bereich auswählen.</P>
</DL>
</P>
<H2><A NAME="ss4.2">4.2</A> <A HREF="DE-Netzwerk-HOWTO.html#toc4.2">Wo muß ich die Konfiguration durchführen?</A>
</H2>
<P>Unter Linux gibt es unterschiedliche Ansätze, wie die Boot-Prozedur
ablä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ß. Es gibt verschiedene Versionen des <CODE>init</CODE>-Programmes,
und das ist auch bereits der Hauptgrund fü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ß das <CODE>init</CODE> Programm immer dasselbe
ist, wird das Booten des System von jeder Distribution anders
gelöst.</P>
<P>Für gewöhnlich enthä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ß steuert. In gewisser Weise handelt es sich um das
ä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ür die Konfiguration des Netzwerkes zuständig. </P>
<P>Die folgende Tabelle gibt einen Anhaltspunkt, welche Dateien das fü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-<ifname>|/etc/rc.d/init.d/network
-------------------------------------------------------------------------------
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Bitte beachten Sie, daß Debian, RedHat und neuere SuSE-Versionen ganze
Verzeichnisse mit Skripten zum Starten von Systemdiensten nutzen.
Und gewö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ü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ügung,
mit dem man die gä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äge im Verzeichnis <CODE>/dev</CODE>. Nicht so bei Linux. Hier
werden diese Einträge dynamisch von der Software angelegt, die
entsprechenden Dateien in <CODE>/dev</CODE> müssen also nicht vorhanden
sein.</P>
<P>In fast allen Fällen werden die Device-Einträge fü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äge, insbesondere für SLIP und PPP, werden
jedoch erst durch die Ausfü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ß sich die
Anzahl der aktiven SLIP oder PPP Geräte bei laufendem Betrieb
ändern kann - im Gegensatz zu Ethernetkarten. Diese Fälle werden spä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ö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ür andere einstellbare Parameter die richtigen Werte
einzusetzen. Das hierfür am meisten verwendete Programm ist
<CODE>ifconfig</CODE>, was für Interface Configure, also
Schnittstellenkonfiguration, steht. </P>
<P>Ein typisches Beispiel fü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ß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ür viele der Konfigurationsparameter voreingestellte
Standardwerte. So kann man natürlich Netzwerkadresse und
Broadcastadresse für eine Schnittstelle festlegen. Tut man dies nicht,
wie im obigen Beispiel, dann versucht der Kernel für diese Parameter
vernünftige Werte anzunehmen. Dies macht er anhand der Netzwerk-Klasse
der angegebenen IP-Adresse. In diesem Fall wäre das ein Klasse-C Netz,
dementsprechend wü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ä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ösung von Adressen fü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ä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ür die Schnittstelle fest.</P>
<DT><B>irq addr</B><DD>
<P>Legt den verwendeten Interrupt der Hardware fest. Dies
funktioniert aber nur für einige wenige Geräte.</P>
<DT><B>[-]broadcast [addr]</B><DD>
<P>Damit kann die
Adresse fü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 <type> <addr></B><DD>
<P>Damit lassen sich für bestimmte
Netzwerk-Typen die Hardware Adressen festlegen. Das ist für Ethernet
kaum nützlich, fü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ändig, sodaß sich ein manueller
Aufruf von <CODE>ifconfig</CODE> in diesem Fall erübrigt.</P>
<P>Mit dem Kernel 2.2 sind eine Anzahl von Optionen hinzugekommen. Dazu
gehören unter anderem Tunneling- und IPV6-Optionen. Die zusätzlichen
Optionen sind im Folgenden aufgefü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ängt die
Schnittstelle alle Packete aus dem Netzwerk gleichgü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 überholt,
stattdessen sollte die Option <CODE>pointopoint</CODE> verwendet werden.</P>
<DT><B>add addr prefixlen</B><DD>
<P>Setzt eine IPv6 Adresse fü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ür dieses Gerät.</P>
<DT><B>mem_start addr</B><DD>
<P>Setzt die Startadresse für den Shared Memory
Bereich, der durch dieses Gerät genutzt wird. Nur wenige Geräte benötigen
diese Option.</P>
<DT><B>media type</B><DD>
<P>Setzt den physikalischen Anschluß oder den
Medientyp, der vom Gerät verwendet wird. Nicht alle Geräte können
diese Einstellung ändern, und bei denjenigen, bei denen dies
möglich ist, variieren die unterstützten Werte. Typische Werte
fü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ützen dies nicht
alle Treiber.</P>
<DT><B>hw class address</B><DD>
<P>Setzt die Hardwareadresse dieser
Schnittstelle, wenn der Gerätetreiber diese Operation unterstützt.
Das Schlüsselwort muß vom Namen der Hardwareklasse
und der ASCII-Darstellung der Hardwareadresse
gefolgt werden. Zur Zeit werden unter anderem folgende
Hardwareklassen unterstü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ö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änge der Sendewarteschlange des Geräts.
Es kann nützlich sein, diesen Wert auf eine kleinen
Wert für langsame Geräte mit hoher Paketlaufzeit
(Modems, ISDN) zu setzen, um zu verhindern, daß
schnelle Großübertragungen interaktiven Verkehr wie
Telnet zu sehr stö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ösung </A>
<!--Name Resolver!Grundlagen--> <!--Netzwerk!Name Resolver--> <!--DNS!Grundlagen--> <!--Netzwerk!DNS--></H2>
<P>Die Namensauflö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 ü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ä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 920</EM> festgelegt. Beispiele fü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ärische Organisationen</P>
<DT><B>ORG</B><DD>
<P>Andere Organisationen</P>
<DT><B>NET</B><DD>
<P>Mit dem Internet zusammenhängende Organisationen</P>
<DT><B>Länderkennzeichen</B><DD>
<P>Diese sind gebildet aus zwei Buchstaben, die für
ein Land stehen.</P>
</DL>
</P>
<P>Jede dieser höchsten Domänen hat nun Unterdomänen. So gibt es für viele
Länder wieder eine Unterteilung entsprechend der höchsten Domänen, also
etwa <CODE>com.au</CODE> und <CODE>gov.au</CODE> für kommerzielle und staatliche
Organisationen in Australien. Aus historischen Gründen liegen praktisch
alle nicht länderspezifischen Toplevel Domänen in den USA, obwohl auch
diese einen spezifischen Länder-Code (<CODE>.us</CODE>) besitzen.</P>
<P>Jede der Toplevel Domänen hat Subdomänen. Die Toplevel Domänen, die
auf Länderkennzeichen basieren sind oft in Subdomänen, welche die com,
edu, gov, mil und org Domänen nachbilden, unterteilt. So stehen com.au
und gov.au z.B. für kommerzielle Organisationen und Regierungsorganisationen
von Australien. Das ist jedoch keine allgemeingültige Regel, das Verfahren
wird durch die Behörden jeder Domäne selbst festgelegt.</P>
<P>Die nächste Ebene der Unterteilung stellt meist der Name der
Organisation dar. Weitere Unterdomä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 ü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ändige
Domänenname <CODE>perf.no.itg.telstra.com.au</CODE>. Das heißt, der Rechnername
(<EM>Hostname</EM>) ist <CODE>perf</CODE>, der <EM>Domainname</EM>
<CODE>no.itg.telstra.com.au</CODE>. Die oberste Domä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ä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änennamen kürzer. Mein ISP (Internet Service
Provider) z.B. nutzt <CODE>systemy.it</CODE>. Meine Non-Profit Organisation
heißt <CODE>linux.it</CODE> ohne irgendeine <CODE>com</CODE> oder <CODE>org</CODE> Subdomäne.
Mein eigener Rechner ist <CODE>morgana.systemy.it</CODE> und
<CODE>rubini@linux.it</CODE> ist die gültige E-Mail Adresse. Zu beachten ist,
daß der Besitzer der Domäne ebenso das Recht hat, Hostnamen zu registrieren
wie Subdomänen. So kann die LUG I (Linux User Group Italy) die Domäne
<CODE>pluto.linux.it</CODE> nutzen, da der Besitzer von <CODE>linux.it</CODE>
einverstanden war und eine Subdomäne für die LUG geöffnet hat.</P>
<H3>Welche Informationen brauche ich?</H3>
<P>Natürlich muß man wissen, zu welcher Domäne der Rechner gehören soll.
Weiterhin benötigt die Software, die das übersetzen von Namen in gültige
IP-Adressen übernimmt, die Adresse eines <EM>Domain Name Servers</EM>,
dessen IP-Nummer man sich ebenfalls besorgen muß.</P>
<P>Es gibt insgesamt drei Dateien, die editiert werden mü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ür den
Name Resolver. Das Format ist sehr einfach, es ist eine Textdatei mit
einem Schlü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ätzlichen
Domänen angeben, in denen nach einem Hostnamen gesucht wird.</P>
<DT><B>nameserver</B><DD>
<P>Mit diesem Eintrag - es kö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ändige angegebene Rechnernamen angehängt wird,
<CODE>maths.wu.edu.au</CODE>. Wird der Rechner in dieser Domain nicht
gefunden, wird auch in der Domäne <CODE>wu.edu.au</CODE> gesucht. Weiterhin
sind zwei unabhängige Nameserver Einträge vorhanden. Beide können von
der Name Resolver Software benutzt werden, um Namen aufzulö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önnen einige Verhaltensweisen der
Name Resolving Software festgelegt werden. Das Format dieser Datei ist
ausführlich in der Manual Page zu <CODE>resolv(8)</CODE> beschrieben. Jedoch
wird in praktisch allen Fällen das folgende Beispiel ausreichend sein:</P>
<P>
<BLOCKQUOTE><CODE>
<PRE>
order hosts,bind
multi on
</PRE>
</CODE></BLOCKQUOTE>
</P>
<P>Mit diesen Einträgen wird festgelegt, daß die Software zunächst in der
Datei <CODE>/etc/hosts</CODE> nach einer Namen - Adressen Zuordnung sucht,
bevor der Nameserver gefragt wird. Außerdem sollen alle gültigen
Adreßeinträ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ö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ß man diese Datei selber auf
dem aktuellen Stand halten muß, wenn sich die IP Adresse eines hier
eingetragenen Rechners ändert. In einem gut verwalteten System wird man
hier meist nur Einträge fü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ß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, über die
man eine Verbindung zum eigenen Rechner aufbauen kann. Es gibt einige
Gründe, warum dies sinnvoll sein kann, zum Beispiel wenn man Netzwerk
Software testen will, ohne dabei von anderen Teilnehmern des Netzes
gestört zu werden. Die Standard IP Adresse fü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 äuß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ächsten Kapitel ausfü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ßen sich leicht Bände damit
füllen. Obwohl die meisten nur recht geringe Ansprüche an das Routing
haben, trifft das für einige nicht zu. Im folgenden werden nur die
grundlegenden Aspekte des Routing behandelt. Wer weitergehende
Informationen zu diesem Thema benötigt, der sei auf die
Literaturhinweise zu Beginn dieses Dokumentes verwiesen.</P>
<P>Zunä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ß, über den ein Rechner mit
unterschiedlichen Netzwerkanbindungen entscheidet, über welche
Verbindung ein empfangenes IP Datagramm weitergeleitet werden soll.
</BLOCKQUOTE>
</P>
<P>Dies soll an einem Beispiel eines typischen Routers in einem Büro
verdeutlicht werden. Dieser habe eine PPP Verbindung zum Internet,
bedient über einige Ethernet Segmente lokale Workstations und ist über
eine weitere PPP Verbindung mit einer Zweigstelle des Büros verbunden.
Empfängt dieser Router nun ein Datagramm von irgendeiner dieser
Verbindungen, so
wird über das Routing festgelegt, über welche der Verbindungen das
Datagramm weitergereicht wird. Jeder Rechner benötigt das Routing, denn
selbst der einfachste Rechner im Netzwerk besitzt mindestens zwei
Netzwerk Schnittstellen, nä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ür das Routing, man nennt sie die
<EM>Routing Table</EM>. In Kernelversion 2.4 enthält diese Tabelle
acht Spalten. Wichtig sind die ersten drei Spalten. Spalte eins
enthält die Schnittstelle, über die Datenpakete weitergeleitet werden,
wenn sie an das in der zweiten Spalte angegebene Ziel (eine Rechner-
oder Netzadresse) gerichtet sind. Spalte drei enthält die optionale
IP Adresse eines anderen Rechners (Gateway), der das Datenpaket zu
seinem nä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ä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ür die Adresse auch ein Gateway eingetragen, wird das Paket an
diesen Rechner adressiert, andernfalls wird angenommen, daß der
Zielrechner zu dem Netzwerk gehört, mit dem die benutzte Schnittstelle
verbunden ist. </P>
<P>
<!--
Routing!route
-->
<!--
Netzwerk!Routing!route
-->
<!--
IP!Routing!route
-->
Um die Routing Tabelle zu verändern, gibt es einen speziellen Befehl.
Dieser Befehl übernimmt die Kommandozeilenargumente und setzt sie in die
entsprechenden Systemaufrufe um, die den Kernel dazu veranlassen, die
entsprechenden Einträge in der Routing Tabelle hinzuzufügen, zu entfernen
oder zu verändern. Aus naheliegenden Gründen heißt dieser Befehl
<CODE>route</CODE>.</P>
<P>Ein einfaches Beispiel: Nehmen wir an, wir wollen einen Rechner
an ein vorhandenes LAN anschließ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ächst muß natü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ächstes muß die Routing Tabelle erweitert werden, so
daß Datagramme an alle Adressen <CODE>192.168.1.*</CODE> direkt
ü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>Über den Schalter <CODE>-net</CODE> im obigen Befehl wird dem <CODE>route</CODE>
Programm mitgeteilt, daß es sich um einen Eintrag fü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ßerhalb dieses Netzes befinden?</P>
<P>
<!--
Default Route
-->
<!--
Netzwerk!Default Route
-->
Es wäre sehr umständlich und nicht praktikabel, für jedes denkbare
Netzwerk einen entsprechenden Eintrag anzufü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ührt sind:
die <EM>Default Route</EM>. Im obigen Beispiel heißt das: Alles was nicht
im lokalen Netz ist, wird ü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ß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ß
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ß das Netzwerk
initialisieren, sollte ähnliche Einträge wenn auch mit anderen
Adressen zu Tage bringen, denn es ist eine sehr verbreitete
Konfiguration.</P>
<P>Wir können uns nun an ein etwas komplizierteres Beispiel wagen. Nehmen
wir an, wir wollten einen einfachen Router konfigurieren, z.B. den
bereits erwähnten mit mehreren lokalen Netzen und einer PPP Verbindung
zum Internet. Für drei lokale Ethernet Segmente würde die Routing Tabelle
etwa folgendermaß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ür jede der an diesen Router angeschlossenen Workstations hätte die
Routing Tabelle dieselbe einfache Form wie im vorangegangenen Beispiel.
Lediglich der Router muß alle drei Netzwerke separat aufführen, da er ja
die Aufteilung der Datenpakete auf diese Netze durchführen muß. Bleibt
also nur noch die Frage, warum in der Default Route der Eintrag <CODE>gw</CODE>
fehlt. Der Grund dafür ist, daß es sich bei einer PPP-Verbindung
wie auch bei einer Verbindung über das SLIP Protokoll um eine
Verbindung zwischen genau zwei Rechnern handelt. Der Kernel »weiß«
also, welchen Rechner er über die PPP-Verbindung anspricht, und die
zusätzliche Angabe einer Gateway-Adresse ist in diesem Falle überflüssig.
Lediglich für Ethernet-, Arcnet- oder Token Ring Verbindungen ist die
Angabe einer Gatewayadresse zwingend vorgeschrieben, da hier über eine
Verbindung eine groß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ür einfache Netzwerke
mit nur wenigen, unveränderlichen Pfaden zu den unterschiedlichen
Zielen optimiert. In einem komplexen Netzwerk werden die Dinge jedoch etwas
schwieriger. Doch zum Glück betrifft das nur die wenigsten.</P>
<P>Das größte Problem des manuellen oder statischen Routing, das im vorigen
Abschnitt beschrieben wurde, tritt auf, wenn ein Rechner im Netzwerk
ausfällt, der als Router arbeitet. In diesem Fall besteht
die einzige Möglichkeit,
ein Datenpaket dennoch zum Ziel weiterzuleiten darin, von Hand
einzugreifen und die entsprechenden Routen manuell zu ändern -
vorausgesetzt natürlich, es existiert solch ein alternativer Weg.
Das ist umständlich, langsam und fehleranfä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ßen Betrieben oder
Gebäude-Netzwerken sehr verbreitet. OSPF ist moderner und insbesondere
darauf ausgelegt, in großen Netzwerken benutzt zu werden, in denen es
eine groß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ü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ür ein Ethernet Segment mit
einem Klasse C IP Netzwerk (Netmask 255.255.255.0) zuständig.
Darüberhinaus verfügt jeder Router über jeweils eine PPP-Verbindung zu
jedem der anderen beiden Router; diese bilden also ein Dreieck.</P>
<P>Ganz offensichtlich könnte die Routing Tabelle für Router A folgendermaß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önnen Rechner des
Ethernet Segmentes von Router A keinen Rechner des Segmentes von Router
B mehr erreichen, da A die Datagramme über die PPP-Verbindung an B
weiterreichen will. Sie können immernoch Verbindungen zu den Rechnern
des Segmentes C aufbauen, und diese wiederum können problemlos mit
Rechnern im Segment B kommunizieren, da die Verbindung zwischen B und C
immernoch besteht.</P>
<P>Es wäre also naheliegend, daß A die an B gerichteten Pakete an C sendet
und diese dann von C an B weitergeleitet werden. Für genau diese Art
von Problemen sind die dynamischen Protokolle wie RIP ausgelegt. Würde
auf jedem der drei Router A, B und C ein Routing Daemon laufen, wü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ü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 über diese
Schnittstellen Meldungen, um festzustellen, ob Änderungen in der Routing
Tabelle nötig sind.</P>
<P>Die war nur eine sehr kurze Beschreibung, was dynamisches Routing ist,
und in welchen Fällen man es verwendet. Wer genauere Informationen
benö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ötigt nur, wer auf seinem Rechner mehrere
verschiedene mögliche Routen zu einer Zieladresse besitzt. Eine
Beispielanwendung dafür wäre der Einsatz von IP Masquerading.</LI>
<LI>Der Routing Daemon ändert automatisch die Routing Tabelle,
um sie an Änderungen im Netzwerk anzupassen.</LI>
<LI>RIP ist für kleine bis mittelgroß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ß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, überwacht einen
<EM>Port</EM>. Er nimmt ankommende Verbindungswünsche entgegen und fü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 überwacht selber den Port. Im Falle einer
ankommenden Verbindung übernimmt der Daemon selbst die Arbeit und stellt
die gewünschte Dienstleistung zur Verfü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ß, wenn auf einem Port eine TCP oder UDP Anfrage eintrifft. Diese
Ports werden in einer anderen Datei beschrieben, davon später mehr.</P>
</DL>
Es gibt zwei wichtige Konfigurationsdateien, die an die eigenen
Bedürfnisse angepaßt werden mü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ür Menschen leichter verstä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ä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
üblichen Services haben festgelegte Nummern. Dieses wird in
<EM>RFC 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ß 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 über beide Protokolle zur Verfügung
stehen sollte. Nur in seltenen Ausnahmefällen ist dies der Fall, dann
wird man beide Einträge, also für <CODE>udp</CODE> und <CODE>tcp</CODE> finden.</P>
<DT><B>Aliases</B><DD>
<P>Zusä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ü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ührung
#
# Man beachte, daß es zur Zeit die Politik von IANA ist, eine einzelne,
# gut bekannte Port Nummer sowohl für TCP als auch UDP zuzuweisen. Daher
# gibt es oft auch einen UDP Eintrag, obwohl das entsprechende Protokoll
# UDP garnicht unterstü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önnen auf den meisten Systemen von Prozessen gewöhnlicher
#> Benutzer verwendet werden.
#
#> Ports werden in TCP [45,106] verwendet, um die Endpunkte von
#> logischen Verbindungen, die für länger dauernden Austausch
#> von Daten verwendet werden, zu kennzeichnen. Um Dienste fü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ür die Kontaktaufnahme
#> verwendet werden. Wä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ß diese fü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ä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ü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ü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ür jeden Service, den man anbieten will, muß 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ä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ür den Dienst gilt. Erlaubte Einträge sind <CODE>stream</CODE>,
<CODE>dgram</CODE>, <CODE>raw</CODE>, <CODE>rdm</CODE> und <CODE>seqpacket</CODE>. Die Gründe
für die Unterteilung sind technischer Natur, aber als Faustregel
kann man davon ausgehen, daß praktisch alle TCP basierten
Dienste <CODE>stream</CODE> verwenden, während UDP basierte Dienste
<CODE>dgram</CODE> benutzen. Nur in ganz seltenen Fällen wird ein Dienst
einen anderen Typ verwenden.</P>
<DT><B>proto</B><DD>
<P>Das für diesen Service gültige Protokoll. Es
muß mit dem Eintrag in <CODE>/etc/services</CODE> übereinstimmen,
normalerweise also entweder <CODE>tcp</CODE> oder <CODE>udp</CODE>. Für Server, die
Sun RPC (Remote Procedure Call) verwenden, lauten die Einträge
<CODE>rpc/tcp</CODE> oder <CODE>rpc/udp</CODE>.</P>
<DT><B>flags</B><DD>
<P>Hier gibt es nur zwei mögliche Einträ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ür eine weitere eingehende Anfrage ein
neuer Prozeß gestartet werden muß, oder ob der laufende Prozeß
auch die neuen Anfragen bearbeitet. Die Regeln hierfür sind etwas
schwierig, aber auch hier gilt als Faustregel: TCP-Dienste
benö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ünden gemacht. Verwendet man
hier der Benutzer <CODE>nobody</CODE>, so werden die möglichen
Folgeschäden eingegrenzt, sollte doch jemand die
Sicherheitsmechanismen des Systems umgehen. Allerdings benö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ßt die gesamte restliche
Zeile und ist optional. Hier können zusätzliche Argumente für
das Serverprogramm übergeben werden.</P>
</DL>
</P>
<H3>Ein Beispiel für /etc/inetd.conf</H3>
<P>Wie auch im Falle von <CODE>/etc/services</CODE> gehört ein
funktionierendes <CODE>/etc/inetd.conf</CODE> zum Standardumfang jeder
Distribution. Der Vollstä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ür Debian von Peter Tobias <tobias@et-inf.fho-emden.de>
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <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ür den GNU finger Server, der für Debian verfü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ür das Booten von anderen Rechner
# angeboten. Auf den meisten Rechnern läuft dieses nur, falls sie als
# Bootserver fü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ß eventuell verä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ß eventuell
# verä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ändern mü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önnen. Außerdem verwenden Programmen wie
<CODE>tcpdump</CODE> diese Datei, um anstelle von Nummern Namen ausgeben zu kö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ü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 ähnliche Funktion wie
<CODE>/etc/hosts</CODE>. Sie stellt eine einfache Datenbasis für die
Zuordnung von Netzwerknamen und -adressen dar. Der einzige Unterschied
zu letzterem besteht darin, daß nur zwei Einträge je Zeile erlaubt sind,
und zwar folgendermaß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 äußerst
schwieriges Unterfangen. Ich selber betrachte mich nicht als Experten
auf diesem Gebiet, und obwohl die im folgenden beschriebenen Mechanismen
sicherlich hilfreich sind, mö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ötigen.«
Die meisten Distributionen sind heute mit einer Vielzahl von Servern
ausgestattet, die beim Bootprozeß automatisch gestartet werden. Um ein
Mindestmaß an Systemsicherheit zu gewährleisten, sollten Sie sich die
Datei <CODE>/etc/inetd.conf</CODE> in Ruhe ansehen und alle nicht benötigten
Dienste durch Einfügen eines <CODE>#</CODE> am Zeilenanfang
auszukommentieren. Gute »Kandidaten« hierfü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ß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öglichkeit,
einzelne Personen vom Zugang über FTP auszuschließen. Die Datei
wird vom Daemonen <CODE>ftpd</CODE> gelesen, wenn eine FTP-Verbindung
aufgebaut wird. Die Datei enthä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ü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ä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ür diejenigen Dienste zur Verfügung, für die
es konfiguriert wird.</P>
<P>Wird es von <CODE>inetd</CODE> gestartet, so liest es zwei Dateien, anhand derer
der Zugang zum überwachten Server gewä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ß der Zugang fü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ü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
#
# <service list>: <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ü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önnen hier auch IP-Adressen angegeben werden. Außerdem
können Platzhalter verwendet werden. Beispiele hierfü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ützlicher Eintrag ist
<CODE>EXCEPT</CODE>. Dadurch können Listen mit Ausnahmen definiert werden, wie
in einem späteren Beispiel erläutert wird.</P>
<DT><B>command</B><DD>
<P>Dies ist ein optionaler Parameter. Hier kann ein
Programm mit seinem vollständigen Pfad angegeben werden, welches jedesmal
ausgeführt wird, wenn die entsprechende Regel erfü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ß 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ür Rechner mit suspektem Namen
ALL: PARANOID
#
# Verbot fü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äge ist eine
sinnvolle Einstellung, abhängig von den jeweiligen Bedü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ü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ßwortabfrage zu
ermöglichen. Dies ist in einer sicheren Umgebung hilfreich, in der man
alle anderen Maschinen unter Kontrolle hat. Andernfalls ist es aber ein
großes Sicherheitsrisiko. Denn der eigene Rechner ist nur so sicher wie
der unsicherste Rechner, dem man vertraut. Wer großen Wert auf hö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 übertragen von Daten von und zum eigenen Rechner zu
ermöglichen, ohne ihnen einen expliziten Account einzurichten. Dazu
dient der FTP Server. Es muß aber sichergestellt sein, daß der
FTP-Daemon korrekt für den anonymen Zugang konfiguriert ist. Die
Manual Page ftpd(8) beschreibt die dazu notwendigen
Schritte in einiger Länge. Diesen Tips sollte man unbedingt folgen.
Auß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ß alle
unwichtigen Einträge entfernt werden, sonst stehen Angriffen durch
Paßwortentschlüsselung Tür und Tor offen.</P>
<H3>Einrichtung einer Firewall</H3>
<P>Eine extrem sichere Methode gegen Angriffe ü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ä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äßigkeit in
Warnungen vor Sicherheitslö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ße Zahl potentieller
Sicherheitsrisiken. Allerdings ist es schwierig, fü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>
|