Die Internet-Protokollfamilie
Am häufigsten eingesetzt wird das Internet-Protokoll = TCP/IP (Transmission
Control Protocol/Internet Protocol). Über TCP/IP lassen sich auchunterschiedliche Rechner miteinander vernetzen. Es deckt die untersten4 Schichten des OSI-Modells ab (Bitübertragung, Datensicherung, Vermittlung,Transport). Einige Funktionen reichen jedoch bis zur Applikationsschichthinauf. Grundsätzlich können TCP/IP-Verbindungen über dieunterschiedlichsten Medien erfolgen. Durch die Verbindung zweier Netzeentsteht so ein größeres Netz (Inter-Net). Dies hat zu einerweltweiten Vernetzung von Rechnern mit TCP/IP geführt, die unter demNamen "Internet" läuft.
Die Installation und Initialisierung von TCP/IP komplett zu beschreiben, würde die
Grenzen dieses Skripts sicherlich sprengen. Eine solche Beschreibung ist auch ziemlich
überflüssig, da nahezu jeder Hersteller eigene Installationsroutinen zur Verfügung
stellt. Leider sind diese unter Unix nicht einheitlich, jedoch läuft die Einrichtung
von TCP/IP zumeist schon während der Installation des Betriebssystems ab. Aus diesem
Grund beschränken wir uns auf die allgemein wichtigen Kommandos und Konfigurationsdateien.
Schnittstellenkonfiguration mit dem ifconfig-Kommando
Das Starten von TCP/IP erfolgt (unter Unix) durch Shell-Skripte, die je nach
Unix-Derivat anders heißen und sich an ganz unterschiedlichen Stellen des jeweiligen
Dateisystems befinden können. So unterschiedlich die Shell-Skripte auch sein mögen, die
Initialisierung erfolgt in jedem Falle durch das ifconfig-Kommando. Hier wird auch die
Initialisierung der Netzwerkschnittstellen vorgenommen. Dabei gibt es folgende Arten
von Schnittstellen:
- das Loopback-Interface,
- Broadcast-Interfaces und
- Point-to-Point-Interfaces.
Das Loopback-Interface ist eine spezielle Schnittstelle, die zum lokalen System
zurückgeführt. Dies bedeutet, daß alle Daten, die durch das Loopback-Interface
geschickt werden, wieder im lokalen System empfangen werden, Dieser Mechanismus
erlaubt eine Kommunikation von lokalen Prozessen über TCP/IP und wird insbesondere
von TCP/IP-Verwaltungsprozessen, aber auch von anderen Diensten genutzt (so z.B. bei
Datenbanken). Die Standard-Internet-Adresse der Loopback-Schnittstelle ist 127.0.0.1
und sollte, obwohl es theoretisch möglich ist, nicht verändert werden. Initialisiert
wird das LoopbackInterface durch das Kommando:
ifconfig lo0 127.0.0.1
Broadcast-Interfaces sind die üblichen Schnittstellen zu lokalen Netzwerken, über die
mehrere Systeme erreichbar sind, und über die Broadcasts, also Nachrichten an alle,
verschickt werden. Es handelt sich dabei um Schnittstellen zu Ethernet und TokenRing.
Neben der Internet-Adresse werden bei der Initiatisierung des Broadcast-Interfaces auch
die Netzmaske und die Broadcast-Adresse angegeben:
ifconfig eth0 192.168.0.1 netmask 255.255.255.0 broadcast 192.168.0.255
Neben den Broadcast-Schnittstellen gibt es noch die sogenannten
Point-to-Point-Schnittstellen. Sie sind dadurch gekennzeichnet, daß man nur über sie
ein anderes System erreichen kann. Beispiele sind SLIP (Serial Line IP) und das
Point-to-Point-Protokoll PPP, die Verbindungen über die serielle Schnittstelle oder
per Modem/ISDN-Adapter WAN-Verbindungen zulassen. Die Initialisierung einer
Point-to-Point-Schnittstelle hat z.B. die folgende Form:
ifconfig ppp0 192.168.1.1 192.168.1.2 netmask 255.255.255.240
So eine PPP-Verbindung bildet ein eigenständiges Netzwerk. Sollen mehrere Verbindungen
kombiniert werden, so muß eine Unterteilung in Subnetze erfolgen. Das heißt, daß eine
entsprechende Netzmaske gewählt werden muß. Wird als Argument für das ifconfig-Kommando
nur der Name der Schnittstelle angegeben, so bezieht sich das auf die aktuelle
Konfiguration der Schnittstelle, die dann ausgegeben wird:
eth0 Link encap:10Mbps Ethernet HWaddr 00:20:18:03:0B:F5
inet addr:10.10.10.4 Bcast:10.10.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0
TX packets:0 errors:0 dropped:0 overruns:0
Interrupt:11 Base address:0x340
Systemnamen und Internet-Adressen: /etc/hosts
In dieser Datei werden die Systeme des Netzwerks mit ihrem Systemnamen und
die dazu gehörenden Internet-Adressen aufgelistet. Die Einträge in die Datei
/etc/hosts haben die folgende allgemeine Form:
Internet-Adresse Name Aliase ...
Dazu ein Beispiel:
127.0.0.1 localhost
192.168.0.1 sun1-lbs micky
192.168.0.2 sun2-lbs minnie
192.168.0.3 sun3-lbs goofy
192.168.0.4 sun4-lbs donald
192.168.0.5 sun5-lbs dagobert
192.168.0.6 sun6-lbs daisy
192.168.0.7 sun7-lbs tick
192.168.0.8 sun8-lbs trick
192.168.0.9 sun9-lbs track
Nach der Internet-Adresse wird der "offizielle" Name des Systems angegeben, gefolgt von
Alias-Namen für dieses System. Wird als Argument für ein Netzwerk-Kommando ein Name
angegeben, so wird in dieser Datei die zugehörige Internet-Adresse ermittelt. Erst
über die Adresse wird eine Verbindung zum Zielsystem aufgebaut. Die Datei /etc/hosts
wird jedoch auch für den umgekehrten Vorgang benutzt. Mit einem
IP-Datagram wird nur die Internet-Adresse des sendenden Systems mitgeschickt. Soll
nun der zugehörige Name ermittelt werden, so geschieht dies ebenfalls mittels dieser
Datei. Das Resultat ist jedoch immer der "offizielle" Name des Systems. Deshalb ist
darauf zu achten, daß stets dieser Name verwendet werden muß, wenn ein Rechnername
in weiteren Konfigurationsdateien eingetragen wird.
Natürlich reicht das System mit /etc/hosts höchstens für ein lokales Kleinstnetz mit
einer handvoll Rechner aus, denn auf jedem Rechner muß die /etc/hosts auf
dem aktuellen Stand gehalten werden. Diesem Problem sahen sich auch bald die Väter
des Internet gegenüber und so wurde die größte weltweit verteilte Datenbank, das
Domain Name System (DNS) erfunden. Es gibt eine Software, welche die Namensdatenbank
verwaltet und auf Anfrage zu einem Rechnernanen die IP-Adresse liefert oder umgekehrt.
Das Programm ist unter UNIX in der Regel BIND (Berkely Internet Name Daemon).
Es läuft als "Nameserver" auf normalerweise mindestens zwei Rechnern einer Domain.
Mehr darüber finden Sie im
DNS-Kapitel des Internet-Skripts. Für den Rechner, der DNS nutzen will gibt es zwei
Dateien, /etc/hosts.conf und /etc/resolv.conf, die festlegen, wie der Nameserver genutzt
wird. In /etc/hosts.conf wird festgelegt, wie die Namenssuche erfolgen soll:
order hosts bind
multi on
Mit order hosts bind wird festgelegt, daß zuerst in der lokalten Datenbank
/etc/hosts gesucht werden soll und erst dann eine Nameserveranfrage an einen fernen
Rechner gestartet wird. Die Datei /etc/resolv.conf enthält Infos über den Nameserver:
search mydomain.net
nameserver 10.10.10.4
nameserver 10.10.10.1
Wie die Datei /etc/hosts enthält auch die Datei /etc/networks Adressen und Namen.
Diesmal sind es allerdings Namen für Netzwerke. Die Funktion dieser Datei ist
durchaus mit der /etc/hosts vergleichbar: Netzwerk-Namen werden in Netzwerk-Adressen
umgesetzt und umgekehrt. Die allgemeine Form eines Eintrags sieht dann so aus:
Netzwerk-Name Netzwerk-Adresse Netzwerk-Aliase ...
Zum Beispiel:
loopback 127
admin-net 192.168.1
dev-net 192.168.2
Eine weitere Datei ist für die Zuordnung der Portnummern zu den einzelnen Diensten
wie Telnet, FTP, WWW, Mail, usw. zuständig. In dieser Datei, /etc/services, werden
der Name des Dienstes, die Portnummer, das Transportprotokoll (UDP oder TCP) und
Service-Aliase angegeben. Die allgemeine Form eines Eintrags in /etc/services hat
die Form:
Service-Name Portnummer/Protokoll Service-Aliases
Wichtig: Hier sind nur Portnummern für Server spezifiziert. Client-Programme bekommen
beim Verbindungsaufbau eine beliebige, freie Portnummer zugewiesen. So kann der Server
wieder auf der Standard-Portnummer aus /etc/services auf einen weiteren Verbindungswunsch
warten. Die spezifizierten Portnummern sind auf allen Rechnern im Netz gleich.
Die Server-Programme entnehmen dieser Datei, auf welchen Port sie zugreifen müssen.
Die Client-Programme finden hier die entsprechenden Portnummern ihrer Server.
In /etc/services werden die Portnummern für TCP- und UDP-Dienste spezifiziert. Die
Portnummern für diese beiden Transport-Protokolle sind völlig unabhängig voneinander.
Trotzdem ist es im allgemeinen üblich, gleiche Portnummern für beide Protokolle zu
benutzen, wenn ein Dienst über beide Transportprotokolle verfügbar ist.
Ein Ausschnitt aus /etc/services:
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 21/tcp
# 22 - unassigned
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
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 krb5 # Kerberos v5
kerberos 88/udp
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
pop2 109/tcp postoffice # POP version 2
pop2 109/udp
pop3 110/tcp # POP version 3
pop3 110/udp
sunrpc 111/tcp
sunrpc 111/udp
auth 113/tcp tap ident authentication
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
.....
Es gibt bei UNIX zwei Möglichkeiten, einen Netzdienst anzubieten:
- Starten eines eigenen Server-Daemons beim Systemstart
- Starten des Server-Daemons über den Netzwerk-Daemon inetd.
Die erste Möglichkeit wird man bei stark frequentierten Diensten verwenden
(z. B. http, smtp), da hier gleich der Server angesprochenwerden kann und nicht
erst gestartet werden muß. Bei allen anderen Diensten nimmt man in der Regel
den inetd. Dieser Prozeß hat einen Tabelle, in der steht, für welchen Port welches
Programm zu starten ist - also eine recht flexible Angelegenheit. Will man
beispielsweise einen neuen FTP-Server (etwa wu-ftpd statt des Standard-ftpd) einsetzen,
so genügt das Ändern der Tabelle in der Datei /etc/inetd.conf und ein
Restart des inetd (Kommando: telinit q. Ja, ohne "-" vor dem "q").
Man kann durch Auskommentieren von Zeilen in der inetd.conf auch nicht benötigte
Netzdienste sperren und so den Rechner gegen Eindringlinge sicherer machen.
Hier ein Auszug aus der Datei:
# See "man 8 inetd" for more information.
#
# If you make changes to this file, either reboot your machine or send the
# inetd a HUP signal.
#
#
#
# These are standard services.
#
ftp stream tcp nowait root /usr/sbin/wu.ftpd wu.ftpd -a
# ftp stream tcp nowait root /usr/sbin/in.ftpd in.ftpd
telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd
# nntp stream tcp nowait root tcpd in.nntpd
smtp stream tcp nowait root /usr/sbin/sendmail sendmail -v
printer stream tcp nowait root /usr/bin/lpd lpd -i
#
# Shell, login, exec and talk are BSD protocols.
#
shell stream tcp nowait root /usr/sbin/in.rshd in.rshd -L
login stream tcp nowait root /usr/sbin/in.rlogind in.rlogind
exec stream tcp nowait root /usr/sbin/in.rexecd in.rexecd
# talk dgram udp wait root /usr/sbin/in.talkd in.talkd
# ntalk dgram udp wait root /usr/sbin/in.talkd in.talkd
#
# Kerberos authenticated services
#
# klogin stream tcp nowait root /usr/sbin/tcpd rlogind -k
# eklogin stream tcp nowait root /usr/sbin/tcpd rlogind -k -x
# kshell stream tcp nowait root /usr/sbin/tcpd rshd -k
#
# Services run ONLY on the Kerberos server
#
# krbupdate stream tcp nowait root /usr/sbin/tcpd registerd
# kpasswd stream tcp nowait root /usr/sbin/tcpd kpasswdd
#
# Pop et al
#
# pop2 stream tcp nowait root /usr/sbin/in.pop2d in.pop2d
pop3 stream tcp nowait root /usr/sbin/popper popper -s
#
# Comsat - has to do with mail.
#
# comsat dgram udp wait root /usr/sbin/tcpd in.comsat
#
# The Internet UUCP service.
#
# uucp stream tcp nowait uucp /usr/sbin/tcpd /usr/lib/uucp/uucico -l
#
# 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 in.tftpd
# bootps dgram udp wait root /usr/sbin/bootpd bootpd
#
# Finger, systat and netstat give out user information which may be
# valuable to potential "system crackers." Many sites choose to disable
# some or all of these services to improve security.
# Try "telnet localhost systat" and "telnet localhost netstat" to see that
# information yourself!
#
finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd -w
systat stream tcp nowait nobody /bin/ps /bin/ps -auwwx
netstat stream tcp nowait root /bin/netstat /bin/netstat -a
ident stream tcp nowait root /usr/sbin/in.identd in.identd
#
# These are to start Samba, an smb server that can export filesystems to
# Pathworks, Lanmanager for DOS, Windows for Workgroups, Windows95, Lanmanager
# for Windows, Lanmanager for OS/2, Windows NT, etc. Lanmanager for dos is
# available via ftp from ftp.microsoft.com in bussys/MSclient/dos/. Please read
# the licensing stuff before downloading. Use the TCP/IP option in the client.
# Add your server to the \etc\lmhosts (or equivalent) file on the client.
netbios-ssn stream tcp nowait root /usr/bin/smbd smbd
netbios-ns dgram udp wait root /usr/bin/nmbd nmbd
# End.
Als letzte der Konfigurations-Dateien soll die /etc/protocols behandelt werden.
Hier werden die über IP arbeitenden Protokolle aufgelistet. Die allgemeine Form
eines Eintrags hat die Form:
Protokoll-Name Protokoll-Nummer Protokoll-Aliase ...
Zum Beispiel:
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
igmp 2 IGMP # internet group multicast protocol
ggp 3 GGP # gateway-gateway protocol
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
idp 22 IDP # WhatsThis?
hello 63 HELLO # HELLO Routing Protocol
raw 255 RAW # RAW IP interface
Die Protokoll-Nummer wird im Header des Internet-Protokolls angegeben.
|