11.4    Netzwerke benutzerfreundlich – DNS

Nun haben wir Sie lange genug gequält und können endlich mit den guten Nachrichten herausrücken. Es ist natürlich absolut unpraktikabel, sich IP-Adressen als Adressen für Rechner zu merken, und außerdem hatten Sie sicherlich bisher eher mit Rechnernamen der Form www.ichbineineseite.com zu tun.

11.4.1    DNS

Für eine solche Übersetzung von leicht eingängigen und leicht zu merkenden (Domain-)Namen in computerverständliche IP-Adressen ist der DNS-Dienst zuständig. DNS steht für Domain Name Service und muss natürlich für das Internet zentral verwaltet werden.

Natürlich können Sie DNS auch in Ihrem kleinen Heimnetzwerk einsetzen und Ihren Computern Namen wie jupiter geben. Ebenso haben Netze einen Namen, und alles zusammen wird durch Punkte getrennt. Anders als bei IP-Adressen steht der Rechnername dabei vor dem Netzwerkbezeichner. Der Rechner www.ichbineineseite.com ist demnach der Rechner www im Netz ichbineineseite.com.

Dem Netzwerknamen ist dabei noch eine sogenannte TLD, Top-Level Domain, zugeordnet, die definiert, wer für die Verwaltung des DNS in dieser Zone des Internets verantwortlich ist. Die bekannten Domains .com, .net und .org sind für internationale, kommerzielle bzw. gemeinnützige Seiten gedacht. Deutsche Seiten gehören demnach in die von der DENIC verwaltete .de-Hierarchie. Über alles hält die mächtige ICANN (Internet Corporation for Assigned Names and Numbers) ihre Hand, ein Gremium, das in allen Fragen das letzte Wort hat. Die ICANN entscheidet zum Beispiel, welche Firma die Hauptregistrierung für die .com-Domains bekommt.

Aber wie funktioniert DNS nun im Detail? Wir haben schon angedeutet, dass in diesem System ziemlich zentralistische Strukturen herrschen. In der Tat werden die Informationen von sogenannten Rootservern an alle weiteren untergeordneten DNS-Server verteilt. Die Oberhoheit über diese Server hat natürlich auch die ICANN, und wer aus ihnen entfernt wird, ist nicht mehr im Internet zu finden.

Wenn Sie nun www.ichbineineseite.com laden möchten, müssen Sie also erst einmal einen DNS-Resolver fragen, welche IP-Adresse eigentlich zu diesem Namen gehört. Im Normalfall wird Ihnen ein solcher Server von Ihrem Provider automatisch nach der Einwahl ins Internet zugeteilt. Haben Sie die IP bekommen, so können Sie ganz normal, wie Sie es gelernt haben, über TCP/IP mit diesem Rechner in Verbindung treten.

Namenskonventionen

Es gibt gewisse Konventionen, wie man Server für bestimmte Dienste nennen sollte.

So heißen Webserver beispielsweise www, Mailserver zum Versenden oft mail bzw. smtp und Mailserver zum Abholen von Mails pop bzw. imap. Hält man sich an diese Konventionen, fällt es leicht, sich in einem solchen Netzwerk zurechtzufinden.

In einem kleinen Netzwerk kann man dann auch die Möglichkeit nutzen, einem Rechner mehrere Namen zu geben. Und in einem größeren Netzwerk ist es bei einer solchen Namensgebung egal, ob ein Server irgendwann einmal umzieht und eine andere IP bekommt – eine kurze Änderung im DNS, und die Clients finden ihren Server wieder. Zudem nutzen viele Firmen diese Möglichkeit für sogenanntes Loadbalancing, bei dem die Last auf mehrere Server gleichmäßig verteilt wird.

Sollte Ihnen kein DNS-Server von Ihrem Provider zugeteilt worden sein, müssen Sie ihn ein einziges Mal vor Ihrer ersten Verbindung ins Netz festlegen. Dazu passen Sie einfach die Datei /etc/resolv.conf an, die diese Information speichert. Listen mit schnellen DNS-Servern gibt es im Internet, oder Sie fragen einfach Ihren Provider nach seinen eigenen.

$ cat /etc/resolv.conf
domain wg
nameserver 212.185.248.212

Listing 11.20     Der Nameserver in der /etc/resolv.conf

Es ist natürlich einleuchtend, dass man einen DNS-Server mit seiner IP-Adresse angeben sollte – ansonsten hat man wieder ein schönes Beispiel für das Henne-Ei-Problem.

Wenn Sie nun für Ihr kleines Heimnetzwerk auch Namen verwenden wollen, können Sie natürlich einen DNS-Server aufsetzen. Im Normalfall wäre das allerdings ein absoluter Overkill und viel zu kompliziert. Viel einfacher ist es doch, Linux zu sagen, welche Namen Sie gern für Netzwerke und Rechner vergeben möchten.

$ cat /etc/networks
# This file describes a number of netname-to-address
# mappings for the TCP/IP subsystem.  It is mostly
# used at boot time, when no name servers are running
loopback        127.0.0.0
beispiel        192.168.1.0
# End.

Listing 11.21     Netzwerke selbst definieren: /etc/networks

Die entsprechende Datei für Netzwerke ist also /etc/networks. In sie schreiben Sie nur den gewünschten Namen sowie das gewünschte Netz. Damit sind Sie fertig.

$ cat /etc/hosts
#
# Syntax:
#
# IP-Address  Fully-Qualified-Hostname  Short-Hostname
#
127.0.0.1   localhost

# special IPv6 addresses
::1         localhost ipv6-localhost ipv6-loopback
fe00::0     ipv6-localnet
ff00::0     ipv6-mcastprefix
ff02::1     ipv6-allnodes
ff02::2     ipv6-allrouters
ff02::3     ipv6-allhosts

172.20.2.1  johannes.wg   johannes

Listing 11.22     Und das Ganze mit Rechnern: /etc/hosts

Die Konfigurationsdatei für Hosts, /etc/hosts, sieht dagegen auf den ersten Blick komplizierter aus. Das ist aber nur der Fall, da teilweise schon IPv6-Adressen angegeben wurden. Ansonsten haben wir nur die Rechner localhost und johannes definiert. Die Syntax ist auch hier wieder selbsterklärend: Zuerst kommt die IP-Adresse, und dann folgen die gewünschten Namen.

Jetzt könnten wir statt 172.20.2.1 auch johannes oder johannes.wg schreiben, wenn wir den entsprechenden Rechner meinen. Dieses schöne System ist allerdings kein Dienst und damit nur lokal verfügbar. Das heißt, dass Sie auf allen Rechnern im System eine solche Datenbasis pflegen müssten.

Nun gibt es aber ein Problem – die Reihenfolge. Was hat nun Priorität: der DNS des Providers, die lokalen hosts- und networks-Dateien oder gar ein eventuell vorhandenes NIS-System? Für diese Probleme gibt es eine Lösung: die Datei /etc/nsswitch.conf.

$ cat /etc/nsswitch.conf
passwd:         compat
group:          compat

hosts:          files dns
networks:       files dns

services:       files
protocols:      files
rpc:            files
ethers:         files
netmasks:       files
netgroup:       files
publickey:      files
bootparams:     files
automount:      files nis
aliases:        files

Listing 11.23     Bringt Ordnung ins Chaos: /etc/nsswitch.conf

Uns interessiert eigentlich der Eintrag für hosts und networks: Es soll zuerst lokal gesucht werden (files), dann erst im DNS des Providers. Das ist im Normalfall eigentlich immer sinnvoll und daher auch eine Voreinstellung. Die anderen Optionen in der Datei tragen einfach dem Fakt Rechnung, dass man noch viel mehr solcher Daten per Netzwerkdienst verwalten kann als nur diese beiden Dateien.

11.4.2    Windows und die Namensauflösung

Nun gibt es auch unter Windows die Möglichkeit, Rechnern im Netzwerk Namen zu geben. Die Windows-Namensgebung funktioniert noch einmal völlig anders, nämlich über das sogenannte NETBIOS-Protokoll. Als Laie kann man sich ganz einfach vorstellen, dass Microsoft in diesem Fall das Rad einfach noch einmal erfunden hat,[ 29 ] mit dem Unterschied, dass das Rad diesmal nur mit anderen Rädern des Herstellers optimal funktioniert und sich leider nur in eine Richtung drehen kann – aber nur bei gutem Wetter. NETBIOS setzt zwar auf TCP/IP auf, macht sonst aber sein eigenes Ding.

Sollten Sie wirklich ernsthaft in Erwägung ziehen, diese Namensgebung zu nutzen, müssen Sie das sogenannte Samba-Paket installieren. Damit haben Sie die Möglichkeit, auf freigegebene Windows-Laufwerke zuzugreifen und eben die Namensgebung zu nutzen. In diesem Fall können Sie in die /etc/nsswitch.conf auch noch winbind als Quelle für entsprechende Namensinformationen eintragen. Mehr Hinweise zu Samba finden Sie in Abschnitt 11.8, »Windows-Netzwerkfreigaben«.

11.4.3    Die Datei /etc/services

Sie kennen bereits IP-Adressen und Hostnames. Was fehlt uns noch, damit beispielsweise ein Webbrowser sich mit einem Webserver verbinden kann? Nun, ein Webbrowser ist ein TCP-Client (also ein TCP-Dienstnutzer) und der Webserver ein TCP-Server (also ein Anbieter eines TCP-Dienstes). Damit ein TCP- bzw. UDP-Client sich mit einem TCP- bzw. UDP-Server verbinden kann, muss er dessen entsprechenden Port kennen. Aus diesem Grund sind bestimmte Dienste einzelnen Ports zugeordnet. Ein Client wird also für eine Webseite zuerst Port 80 für HTTP (bzw. 443 für HTTPS) probieren.

In der /etc/services sind dafür entsprechende Dienste und ihre Ports definiert. Diese Datei wird unter anderem von vielen Programmen genutzt, die kryptische Ausgaben, die Netzwerke betreffen, etwas freundlicher gestalten wollen.

$ cat /etc/services
…
tcpmux          1/tcp   # TCP port service multiplexer
echo            7/tcp
echo            7/udp
…
ssh       22/tcp        # SSH Remote Login Protocol
…
smtp      25/tcp  mail  # Simple Mail Transfer
smtp      25/udp  mail  # Simple Mail Transfer
…
finger    79/tcp        # Finger
finger    79/udp        # Finger
http      80/tcp        # World Wide Web HTTP
http      80/udp        # World Wide Web HTTP
www       80/tcp        # World Wide Web HTTP
www       80/udp        # World Wide Web HTTP
www-http  80/tcp        # World Wide Web HTTP
www-http  80/udp        # World Wide Web HTTP
…

Listing 11.24     Standarddienste und ihre Ports in der /etc/services