Suche im Katalog
Linux Netzwerker-Handbuch

Linux Netzwerker-Handbuch


Tony Bautts, Terry Dawson & Gregor N. Purdy
3. Auflage Juli 2005
ISBN 3-89721-414-8
382 Seiten
Weitere Informationen zur gedruckten Version des Buches finden Sie unter:
www.oreilly.de/catalog/linag3ger/

Zur Übersicht aller OpenBooks


TOC PREV NEXT INDEX

Kapitel 13

IPv6-Netzwerke konfigurieren

Der IPv4-Raum wird täglich knapper. Im Jahre 2005 gehen einige Schätzungen von mehr als einer Milliarde Internet-Benutzern auf der ganzen Welt aus. Angesichts der Tatsache, dass viele dieser Benutzer ein Mobiltelefon, einen eigenen Computer und möglicherweise auch einen Computer an ihrem Arbeitsplatz haben, wird der verfügbare IP-Adressraum ziemlich knapp. China hat jüngst IP-Adressen für alle seine Schulkinder angefordert, insgesamt fast 300 Millionen Adressen. Solche Anforderungen, die in der Praxis nicht erfüllt werden können, veranschaulichen die Problemlage. Als die IANA anfangs damit begann, den Adressraum zuzuteilen, war das Internet ein kleines und kaum bekanntes Forschungsnetzwerk. Es bestand nur wenig Bedarf an Adressen, und der Klasse-A-Adressraum wurde frei zugeteilt. Als jedoch die Größe und Bedeutung des Internet zunahm, verringerte sich die Anzahl der verfügbaren Adressen, wodurch sich der Bezug einer neuen IP-Adresse erschwerte und verteuerte. NAT und CIDR stellen zwei unterschiedliche Antworten auf diese Mangelsituation dar. NAT ist eine Einzellösung, die es einer Site ermöglicht, alle ihre Benutzer über eine einzelne IP-Adresse zu leiten. CIDR ermöglicht eine effizientere Aufteilung eines Netzwerkadressblocks. Beide Lösungen haben jedoch ihre Grenzen.

Mit den neuen elektronischen Geräten wie PDAs und Mobiltelefonen, die alle eigene IP-Adressen benötigen, scheinen die NAT-Adressblöcke plötzlich nicht mehr ganz so groß zu sein.

Forscher, die den potenziellen Mangel an IP-Adressen erkannt haben, haben das IPv4-Protokoll derart umgestaltet, dass es einen Adressraum mit 128 Bit langen Adressen unterstützt. Dieser Adressraum unterstützt 3,4 mal 1038 (oder 340 Sextillionen) mögliche Adressen. Das ist ein exponentieller Anstieg, der hoffentlich eine adäquate Adressierung für die nahe (und ferne) Zukunft erlaubt. Um genau zu sein, sind das genügend Adressen, um jeden Menschen auf der Erde mit einer Milliarde Adressen zu versorgen.

IPv6 löst nicht nur einige Probleme hinsichtlich der Logistik des Adressraums, sondern behebt auch gleich noch Konfigurations- und Sicherheitsprobleme. In diesem Abschnitt schauen wir uns die aktuellen Lösungen an, die mit Linux und IPv6 zur Verfügung stehen.

Das IPv4-Problem und Patchwork-Lösungen

Anfangs gab die IANA auf Anforderung einen ganzen Klasse-A-Netzwerkraum heraus und bot den Anfordernden 16,7 Millionen Adressen - viel mehr als erforderlich. Als sie ihren Fehler bemerkte, begann sie damit, Klasse-B-Netzwerke zuzuweisen - für eine durchschnittliche Anforderung immer noch zu viel. Mit dem zunehmenden Wachstum des Internet wurde es schnell klar, dass es nicht sinnvoll war, auf jede Anforderung Klasse-A- und Klasse-B-Netzwerke herauszugeben. Selbst als später Klasse-C-Netzwerke zugewiesen wurden, war es immer noch eine Verschwendung von Adressraum, da die meisten Unternehmen keine 254 IP-Adressen benötigen. Da die IANA den bereits vergebenen Adressraum nicht zurückfordern konnte, erwies es sich als notwendig, mit dem verbliebenen Adressraum auf sinnvolle Weise umzugehen. Eine Möglichkeit war der Einsatz von Classless Inter-Domain Routing (CIDR).

CIDR

CIDR ermöglicht Netzwerkblöcke außerhalb der wohldefinierten Bereiche der Klassen A/B/C. Beim Versuch, mehr aus den existierenden Klasse-C-Netzwerkblöcken herauszuholen, ermöglicht CIDR es Administratoren, ihren Adressraum in kleinere Einheiten aufzuteilen, die dann als einzelne Netzwerke zugeordnet werden können. Das machte es einfacher, IP-Adressen an mehr Leute zu verteilen, da der Platz nach Bedarf zugeordnet werden konnte statt nach vordefinierter Größe. Beispielsweise könnte ein Provider mit einem Klasse-C-Netzwerk beschließen, sein Netzwerk in 32 Einzelnetzwerke aufzuteilen. Er würde Netzwerkadressen und Subnetzmasken verwenden, um die Grenzen abzustecken. Eine CIDR-Notation sieht etwa so aus:

10.10.0.64/29

In diesem Beispiel kennzeichnet die /29 die Subnetzmaske, d. h., die ersten 29 Bits der Adresse bilden das Subnetz. Es könnte auch 255.255.255.248 geschrieben werden, das Netzwerk hat also insgesamt sechs benutzbare Adressen.

CIDR behebt das Problem zwar schnell und einfach, schafft aber eigentlich keine neuen IP-Adressen und weist außerdem noch einige Nachteile auf. Erstens wird seine Effizienz untergraben, da jedes belegte Netzwerk eine Broadcast-IP-Adresse und eine Netzwerk-IP-Adresse benötigt. Falls also ein Provider ein Klasse-C-Netzwerk in 32 einzelne Netzwerke unterteilt, werden insgesamt 64 einzelne IP-Adressen für Netzwerk- und Broadcast-IP-Adressen verschwendet. Zweitens sind komplizierte CIDR-Netzwerke anfälliger für Konfigurationsfehler. Ein Router mit einer fehlerhaften Subnetzmaske kann für kleine, von ihm betreute Netzwerke einen Ausfall verursachen.

NAT

Network Address Translation (NAT), die Umsetzung von Netzwerkadressen, bietet eine gewisse Abhilfe für das IP-Adressdilemma. Ohne diese Technik hätten wir bereits keinen benutzbaren IP-Adressraum mehr. NAT ermöglicht eine Viele-zu-eins-Übersetzung. Das bedeutet, dass mehrere Maschinen sich dieselbe IP-Adresse teilen können. Für die Maschinen hinter dem NAT-Gerät ergibt sich außerdem eine bessere Privatsphäre und höhere Sicherheit, da es schwieriger wird, sie einzeln zu identifizieren. NAT weist natürlich auch Nachteile auf - vor allem, dass einige ältere Protokolle nicht in der Lage sind, mit der Umlenkung umzugehen.

Erweiterung des IP-Adressraums mit IPv6

Um das Problem des schrumpfenden IP-Raums zu bekämpfen, wurde das Konzept von IPv6 geschaffen. Vorausschauende Entwickler beschlossen, einen Adressraum mit 128 Bits anzulegen, der insgesamt 340.282.366.920.938.463.463.374.607.431.768.211.456 (3,4 ¥ 1038) Adressen bereitstellt. Falls Sie es etwas bildlicher haben wollen: Das sind 655.570.793.348.866.943.898.599 (6,5 ¥ 1023) Adressen für jeden Quadratmeter Erdoberfläche. Damit erhält man eine deutliche Erweiterung des momentan benutzten 32-Bit-Adressraums unter IPv4.

IPv6-Adressierung

Der erste sichtbare Unterschied zwischen IPv4 und IPv6 besteht darin, wie die Adressen geschrieben werden. Eine typische IPv6-Adresse sieht so aus:

fe80:0010:0000:0000:0000:0000:0000:0001

Es gibt in jeder IP-Adresse acht Sätze mit jeweils vier hexadezimalen Werten. Diese Adressen können lang und umständlich sein, weshalb eine Abkürzungsmethode entwickelt wurde. Ein einzelner String aus Nullen kann durch einen Doppelpunkt ersetzt werden. So würde das gezeigte Beispiel folgende Kurzform erhalten:

fe80:0010::1

Das kann aber nur einmal geschehen, damit keine Unklarheit darüber aufkommt, was ersetzt wurde. Schauen wir uns das folgende Beispiel an, bei dem es getrennte Strings aus Nullen gibt:

2001:0000:0000:a080:0000:0000:0000:0001

Da nur ein String aus Nullen ersetzt werden kann, lässt sich diese IP-Adresse nicht zu

2001::a080::1

verkürzen. Im Allgemeinen wird der längste String verkürzt. In diesem Beispiel würde die IP-Adresse dann entsprechend so aussehen:

2001:0000:0000:a080::1

In IPv6 gibt es mehrere unterschiedliche Arten von Adressen, die die verschiedenen Funktionen definieren, die innerhalb der Spezifikation verfügbar sind:

Link-lokale Adresse
Diese Adresse wird automatisch konfiguriert, wenn der IPv6-Stack mit Hilfe der MAC-Adresse Ihrer Netzwerkkarte initialisiert wird. Diese Art von Adresse wird im Allgemeinen als ausschließliche Client-Adresse angesehen und kann nicht auf einem Server laufen oder auf eingehende Verbindungen warten. Link-lokale Adressen beginnen immer mit FE8x, FE9x, FEAx oder FEBx, wobei das x durch einen beliebigen hexadezimalen Wert ersetzt werden kann.
Site-lokale Adressen
Site-lokale Adressen sind zwar ein Bestandteil der ursprünglichen Spezifikation und werden auch noch in verschiedenen Texten beschrieben, allerdings werden sie abgelehnt und nicht mehr als Bestandteil von IPv6 betrachtet.
Globale Unicast-Adresse
Dieser Adresstyp kann im Internet geroutet werden und wird künftig die sichtbare IP-Adresse aller Maschinen sein. Diese Art von Adresse wird momentan dadurch identifiziert, dass sie entweder mit 2xxx oder 3xxx beginnt. Künftig könnte das noch ausgeweitet werden.

Vorteile von IPv6

Der offensichtlichste Nutzen von IPv6 ist zwar der außerordentlich vergrößerte Adressraum, allerdings bringt es noch weitere Vorteile mit sich. Beispielsweise gibt es mit IPv6 zahlreiche Leistungsverbesserungen. Pakete können effizienter verarbeitet werden, weil die Optionsfelder in den Paket-Headern nur dann verarbeitet werden, wenn die Optionen tatsächlich vorhanden sind. Zusätzliche Leistungssteigerungen resultieren daraus, dass es keine Paketfragmentierung gibt. Ein weiterer Vorteil ist eine Verbesserung der Sicherheit durch eingebettetes IPSec. Da es Teil des Protokolls ist, wird die Implementierung von Verschlüsselung und Authentifizierung etwas völlig Normales. Quality of Service (QoS) ist ein weiterer Vorteil, der sich mit IPv6 ergibt. Würde diese Funktionalität aktiviert werden, dann würde sie es Netzwerkadministratoren gestatten, Netzwerkverkehr nach Gruppen zu priorisieren. Das kann bei solchen Netzwerken entscheidend sein, die Dienste wie Voice over IP anbieten, da selbst kleinere Unterbrechungen des Netzwerks die Zuverlässigkeit des Dienstes beeinträchtigen. Schließlich erleichtern Fortschritte bei der Adress-Autokonfiguration den schnellen Aufbau von Netzwerken. Zusätzliche Vorteile ergeben sich, wenn die Übernahme von IPv6 und die Forschung an diesem Protokoll weitergehen. Einige von ihnen gehen hoffentlich mit den Fortschritten bei den mobilen IP-Techniken einher, die versprechen, dass jedes Gerät ungeachtet seiner aktuellen Netzwerkverbindung die gleiche IP-Adresse behält.

IPv6-Konfiguration

Die Unterstützung für IPv6 ist inzwischen in nahezu allen Linux-Distributionen zu finden. Das Protokoll war Bestandteil der letzten Versionen des 2.4-Kernels und ist nun im 2.6-Kernel enthalten.

Kernel- und Systemkonfiguration

Das Aktivieren der IPv6-Unterstützung in Linux ist inzwischen viel einfacher geworden, weil das Protokoll in den Kernel-Quellen enthalten ist. Es ist nicht mehr erforderlich, den Kernel durch Patches zu erweitern, allerdings müssen Sie immer noch einige Werkzeuge installieren, die wir später in diesem Abschnitt beschreiben.

Wenn die IPv6-Unterstützung in Ihrem Kernel noch nicht enthalten ist, kann es immer noch als Modul kompiliert werden. Mit dem folgenden Befehl können Sie ganz einfach testen, ob das Modul vorhanden ist:

vlager# modprobe ipv6
vlager#

Wenn es keine Antwort gibt, ist das Modul höchstwahrscheinlich geladen. Es gibt verschiedene Möglichkeiten, um festzustellen, ob die Unterstützung aktiviert wurde. Am schnellsten geht es, wenn Sie das Verzeichnis /proc überprüfen:

vlager# ls -l /proc/net/if_inet6
-r-r-r-- 1 root root 0 Jul 1 12:12 /proc/net/if_inet6

Wenn Sie eine kompatible Version von ifconfig haben, können Sie diese zum Überprüfen einsetzen:

vlager# ifconfig eth0 |grep inet6

inet6 addr: fe80::200:ef99:f3df:32ae/10 Scope:Link

Verlaufen diese Tests nicht erfolgreich, müssen Sie vermutlich Ihren Kernel neu kompilieren, um die Unterstützung zu aktivieren. Die Kernel-Konfigurationsoption für IPv6 in der Datei .config lautet:

CONFIG_IPV6=m

Wenn Sie »make menuconfig« benutzen, finden Sie die Option zum Aktivieren von IPv6 im 2.4-Kernel unter »Network Options«. In der Konfiguration des 2.6-Kernels finden Sie sie unter »Network Support/Network Options«. Sie kann entweder in den Kernel kompiliert oder als Modul aufgebaut werden. Falls Sie sie als Modul erstellen, denken Sie daran, dass Sie modprobe einsetzen müssen, bevor Sie versuchen, die Schnittstelle zu konfigurieren.

Schnittstellenkonfiguration

Um die Schnittstelle für die IPv6-Benutzung zu konfigurieren, benötigen Sie IPv6-Versionen der gebräuchlichen Netzwerkhilfsprogramme. Bei den meisten Linux-Distributionen, die IPv6 inzwischen von vornherein unterstützen, ist es wahrscheinlich, dass Sie diese Werkzeuge bereits installiert haben. Falls Sie von einer älteren Distribution aufrüsten oder Linux selbst einrichten, müssen Sie wahrscheinlich ein Paket namens net-tools installieren, das an verschiedenen Stellen im Internet zu finden ist. Suchen Sie einfach mit Google oder FreshMeat nach »net-tools«.

Um sicherzustellen, dass Sie kompatible Versionen haben, führen Sie einen schnellen Test mit ifconfig oder netstat durch. Dieser Test würde folgendermaßen aussehen:

vlager# /sbin/netstat grep inet6

Bevor Sie weitermachen, sollten Sie überprüfen, ob Sie die verschiedenen Werkzeuge zum Testen der Netzwerkkonnektivität für IPv6 haben, wie etwa ping6, traceroute6 und tracepath6. Diese finden Sie im iputils-Paket, und auch sie sind in den meisten aktuellen Distributionen bereits standardmäßig installiert. Sie können den Pfad durchsuchen, um festzustellen, ob diese Werkzeuge verfügbar sind, und sie notfalls nachinstallieren. Der Autor hat sie im Übrigen auch unter ftp://ftp.inr.ac.ru/ip-routing abgelegt.

Wenn alles glatt gegangen ist, wurde Ihre Schnittstelle automatisch mit Ihrer MAC-Adresse konfiguriert. Sie überprüfen das mit Hilfe von ifconfig:

vlager# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:07:E9:DF:32:AE
inet addr:10.10.10.19 Bcast:10.10.10.255 Mask:255.255.255.0
inet6 addr: fe80::207:e9ff:fedf:32ae/10 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2272821 errors:0 dropped:0 overruns:0 frame:73
TX packets:478473 errors:0 dropped:0 overruns:0 carrier:0
collisions:4033 txqueuelen:100
RX bytes:516238958 (492.3 Mb) TX bytes:54220361 (51.7 Mb)
Interrupt:20 Base address:0x2000
vlager#

Die dritte Zeile in der Ausgabe zeigt die Link-lokale Adresse von vlager an. Sie ist leicht zu erkennen, da jede Adresse, die mit fe80 beginnt, eine Link-lokale IP-Adresse ist. Falls Sie sich Sorgen um Ihre Privatsphäre machen, weil Sie Ihre MAC als Haupt-IP-Adresse verwenden, oder falls Sie einen Server konfigurieren und eine einfachere IP-Adresse haben wollen, dann können Sie Ihre eigene IP-Adresse konfigurieren. Schauen Sie sich dazu das folgende Beispiel an:

vlager# ifconfig eth0 inet6 add 2001:02A0::1/64
vlager#

An dieser Stelle haben Sie möglicherweise jedoch noch keine globale Adresse, die Sie zuweisen könnten, wie wir es oben getan haben. Deshalb ist Ihre IP-Adresse vermutlich eine Link- oder Site-lokale Adresse. Für Verkehr, der nicht im Internet geroutet werden soll, funktioniert das hervorragend, falls Sie jedoch eine Verbindung zum Rest der Welt wünschen, müssen Sie entweder eine Verbindung direkt zum IPv6-Backbone oder einen IPv6-Tunnel durch einen Tunnel-Broker haben. Darauf gehen wir im nächsten Abschnitt ein.

Aufbau einer IPv6-Verbindung über einen Tunnel-Broker

Um an der wunderbaren Welt von IPv6 teilzunehmen, benötigen Sie einen Pfad, über den Sie die Verbindung herstellen. Für die meisten Benutzer stellt ein Tunnel momentan die einzige Möglichkeit dar, den IPv6-Backbone zu erreichen, da die wenigsten Sites über eine direkte IPv6-Anbindung verfügen. Wenn Sie versuchen, IPv6-Verkehr direkt über IPv4-Netzwerke zu routen, werden Sie nicht weit kommen, da bereits der nächste Router wahrscheinlich nicht weiß, was er mit diesem für ihn eigenartig aussehenden Verkehr anfangen soll. Für die meisten Benutzer verläuft der einfachste Weg zum Aufbau eines Tunnels über einen Tunnel-Broker. Es gibt eine Reihe unterschiedlicher Broker im Internet, die Sie mit Ihrem ganz eigenen IPv6-Adressraum versorgen. Einer der schnellsten und beliebtesten Tunnel-Broker ist Hurricane Electric (Abbildung 13-1), der ein automatisiertes Anforderungsformular für IPv6-Tunnel besitzt. Von Ihnen wird lediglich verlangt, dass Sie eine IPv4-Adresse haben, die sich »anpingen« lässt, d.h. die immer mit dem Internet verbunden ist. Diese IPv4-Adresse soll die Quelle Ihres Tunnels bilden.
Abbildung 13-1
Bezug eines Tunnels von he.net

Ihren Tunnel aufbauen

Sobald Sie Ihren IPv6-Adressraum bekommen haben, können Sie Ihren Tunnel aufbauen. Dazu müssen Sie die zusätzlichen Link-Encapsulation-Schnittstellen benutzen, die nach dem Installieren des IPv6-Moduls existieren.

Um Ihren Tunnel aufzubauen, müssen Sie die Schnittstellen sit0 und sit1 konfigurieren. Die sit-Schnittstellen werden als virtuelle Adapter betrachtet, da sie nicht direkt Hardware in Ihrem System repräsentieren. Aus Sicht der Software werden sie jedoch fast genauso behandelt wie jede andere Schnittstelle. Wir werden Datenverkehr an sie schicken und über sie routen. Die virtuellen sit-Schnittstellen ermöglichen es Ihnen, Ihre IPv4-Adresse auf eine IPv6-Adresse abzubilden, und erzeugen dann eine IPv6-Schnittstelle auf Ihrer Maschine. Dieser Vorgang wird begonnen, indem die sit0-Schnittstelle aktiviert und Ihrer IPv4-Adresse zugewiesen wird. Beispielsweise ist 10.10.0.8 der IPv4-Endpunkt des Tunnel-Brokers. 2001:FEFE:0F00::4B ist die IP-Adresse des IPv6-Tunnel-Endpunkts von vlager.

vlager# ifconfig sit0 up
vlager# ifconfig sit0 inet6 tunnel ::10.10.0.8

Dieser Schritt aktiviert die sit0-Schnittstelle und bindet sie an die IPv4-Adresse des Tunnel-Brokers. Der nächste Schritt besteht darin, der sit1-Schnittstelle Ihre IPv6-Adresse zuzuweisen. Das wird mit den folgenden Befehlen erreicht:

vlager# ifconfig sit1 up
vlager# ifconfig sit1 inet6 add 2001:FEFE:0F00::4B/127

Der Tunnel sollte nun betriebsbereit sein. Um das zu testen, müssen Sie jedoch den IPv6-Verkehr an die Schnittstelle sit1 routen. Am einfachsten erreichen Sie das mit route.

vlager$ route -A inet6 add ::/0 dev sit1

Dieser Befehl weist das Betriebssystem an, den gesamten IPv6-Verkehr an das sit1-Gerät zu senden. Wenn die Route vorhanden ist, müssten Sie nun in der Lage sein, Ihr IPv6 zu überprüfen. Die Anbindung kann jetzt mit ping6 getestet werden. In diesem Beispiel schicken wir einen »ping« an die IPv6-Adresse auf der anderen Seite unseres neu angelegten Tunnels.

vlager# ping6 2001:470:1f00:ffff::3a
PING 2001:470:1f00:ffff::3a(2001:470:1f00:ffff::3a) 56 data bytes
64 bytes from 2001:470:1f00:ffff::3a: icmp_seq=1 ttl=64 time=26.2 ms
64 bytes from 2001:470:1f00:ffff::3a: icmp_seq=2 ttl=64 time=102 ms
64 bytes from 2001:470:1f00:ffff::3a: icmp_seq=3 ttl=64 time=143 ms
64 bytes from 2001:470:1f00:ffff::3a: icmp_seq=4 ttl=64 time=130 ms
Ctrl-c
--- 2001:470:1f00:ffff::3a ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3013ms
rtt min/avg/max/mdev = 26.295/100.590/143.019/45.339 ms
vlager#

An dieser Stelle haben Sie ein System, das als öffentliches IPv6-Netzwerk konfiguriert ist. Sie können die gesamte IPv6-Welt sehen, und diese sieht Sie. Sie sollten jetzt genau überprüfen, welche Dienste auf Verbindungen warten. Diese Dienste müssen sich auf dem neuesten Stand befinden und dürfen nicht ausgenutzt werden können. Die IPv6-Unterstützung für netfilter befindet sich zwar in der Entwicklung, ist aber vermutlich noch nicht stabil genug, um sich darauf zu verlassen.

IPv6-fähige Anwendungen

Es gibt momentan etliche IPv6-fähige Anwendungen, die auch in IPv4-Netzwerken gebräuchlich sind. Unter den bekannteren sind der Apache-Webserver und OpenSSH. In diesem Abschnitt gehen wir näher darauf ein, wie Sie bei der Konfiguration IPv6 in diesen Anwendungen aktivieren.

Apache-Webserver

Aufgrund seiner Stabilität wird Apache v1.3 weithin eingesetzt, allerdings bietet es nur dann Unterstützung für IPv6, wenn der Quellcode modifiziert wird. Falls Sie unbedingt v1.3 benutzen wollen und IPv6-Unterstützung benötigen, dann können Sie auf IPv6-Patches zurückgreifen. Allerdings werden diese kaum unterstützt und sind wahrscheinlich ungetestet. Es gab viele Diskussionen darüber, ob in die stabile v1.3 offiziell Unterstützung für IPv6 aufgenommen werden sollte. Der allgemeine Konsens lautete, v1.3 so zu lassen, wie es ist, und v2.0 für die weitere Entwicklung der IPv6-Unterstützung des Apache zu verwenden. Der Apache-Webserver in den Versionen 2.0 und höher unterstützt IPv6 ohne Modifikationen. Daher werden wir uns in diesem Abschnitt auf diese Version konzentrieren.

Apache v2.0.x für IPv6-Unterstützung konfigurieren

Die Konfiguration von Apache mit IPv6 ist relativ einfach. Das Kompilieren erfordert keine besonderen Optionen. Der Server kann entweder aus den Quellen oder als RPM installiert werden. Eine Option, die beim Kompilieren gesetzt werden kann und möglicherweise für IPv6-Benutzer von Interesse ist, ist das Tag -enable-v4-mapped. In den vorkonfigurierten Paketen ist das oft der Standard. Damit erhalten Sie eine Zeile mit einer allgemeinen Listen-Anweisung wie:

Listen 80

Das bindet den Webserver-Prozess an alle verfügbaren IP-Adressen. Administratoren von IPv6-Systemen finden dieses Verhalten vielleicht unsicher und ineffizient, da für die große Anzahl der vorgegebenen IPv6-Adressen unnötige Sockets geöffnet werden. Aus diesem Grund können Sie beim Kompilieren -disable-v4-mapped einsetzen und damit die ausdrückliche Konfiguration der lauschenden Schnittstellen erzwingen. Ist diese Option deaktiviert, können Sie immer noch Schnittstellen haben, die an allen Ports lauschen, Sie müssen das aber extra festlegen.

Wenn der Server wie gewünscht kompiliert und installiert ist, ist eine einzige Änderung an der Konfigurationsdatei erforderlich, um einen »Hörer« (Listener) zu aktivieren. Dieser Schritt ist der IPv4-Konfiguration des Apache sehr ähnlich. Um einen Web-Listener an der IPv6-Adresse von vlager zu aktivieren, ist folgende Änderung an der Datei apache.conf erforderlich:

Listen [fec0:ffff::2]:80

Sobald Apache gestartet wurde, öffnet er einen Listener an Port 80 der angegebenen IP-Adresse. Das kann mit netstat überprüft werden:

vlager# netstat -aunt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.10.0.4:22 0.0.0.0:* LISTEN
tcp 0 0 fec0:ffff::2:80 :::* LISTEN

vlager#

Der zweite Eintrag in der Tabelle ist der IPv6-Apache-Listener. Er wird in genau dem gleichen Format vermerkt wie die IPv4-Adressen.

Falls Sie wollen, dass Ihr Apache-Server an allen verfügbaren IPv6-Adressen lauscht, können Sie eine etwas andere Konfigurationsoption benutzen:

Listen [::]:80

Das entspricht der 0.0.0.0-Adresse, die verwendet wurde, um das Gleiche in IPv4 zu erreichen. Um Listener an anderen Ports als Port 80 zu aktivieren, ersetzen Sie entweder die existierende Portnummer oder Sie fügen zusätzliche Listen-Zeilen hinzu. Eine ausführlichere Besprechung von Apache finden Sie in Kapitel 14.

OpenSSH

Das OpenSSH-Projekt war bereits von Anfang an kompatibel mit IPv6; die Unterstützung innerhalb des Programms wird inzwischen als ausgereift angesehen. Es ist ebenfalls sehr einfach zu konfigurieren. Während der Kompilierung müssen keine zusätzlichen Optionen übergeben werden, es sollte bei einer Installation aus dem Binärpaket also keine Probleme geben.

In diesem Abschnitt wird davon ausgegangen, dass Sie OpenSSH unter IPv4 betriebsbereit haben und wissen, wo Ihre Konfigurationsdateien installiert sind. In unserem Fall sind die Konfigurationsdateien in /etc/ssh installiert. Um einen IPv6-Listener hinzuzufügen, müssen wir die Datei sshd_config um eine Zeile erweitern:

ListenAddress fec0:ffff::2
Port 1022

Wird OpenSSH mit der Kommandozeilenoption -6 neu gestartet, lauscht es an unserer IPv6-Adresse an Port 1022.

Der Zugriff auf IPv6-Hosts mit dem OpenSSH-Client ist ebenfalls recht einfach. Sie müssen dazu lediglich die Kommandozeilenoption -6 angeben:

othermachine$ ssh -6 fec0:ffff::2 -p 1022
bob@fec0:ffff::2's password:
bob@vlager $

Das ist wirklich alles, um OpenSSH für IPv6 bereitzumachen. An dieser Stelle sollten Sie einen Server mit einem OpenSSH-IPv6-Listener haben und in der Lage sein, mit ssh eine Verbindung zu anderen Maschinen im IPv6-Netzwerk herzustellen. Falls nicht, lesen Sie den nächsten Abschnitt »Fehlerbehebung«.

Fehlerbehebung

Da der IPv6-Netzwerkbetrieb oft unbekanntes Terrain darstellt, kommt es nicht selten vor, dass Dinge schief gehen. Einer der am häufigsten auftretenden Fehler im Zusammenhang mit IPv6 betrifft die Adressnotation. Der Wechsel der Trennzeichen von Punkten zu Doppelpunkten kann Fehler hervorrufen, da die meisten Administratoren es gewohnt sind, den Punkt zu verwenden. Ein zweites Notationsproblem beim Schreiben von Adressen entsteht beim Abkürzen der Adressen. Wie bereits besprochen, wird ein doppelter Doppelpunkt verwendet, wenn Folgen von Nullen weggelassen werden. Wenn Sie den doppelten Doppelpunkt vergessen, gibt die Maschine eine Fehlermeldung aus, die Sie davon in Kenntnis setzt, dass Sie eine unvollständige IP-Adresse eingegeben haben. Hier sind einige Beispiele für eine fehlerhafte IPv6-Notation:

fe80.ffff.0207.3bfe.0ddd.bbfe.02
3ffe:0001:fefe:5
2001:fdff::0901::1

Wenn das Problem schwerwiegender ist und Sie den IPv6-Stack überhaupt nicht sehen können, sollten Sie sich Ihre Kernel-Konfiguration vornehmen. Falls Sie die Unterstützung für IPv6 direkt in den Kernel kompiliert haben, überprüfen Sie Ihr Systemprotokoll und stellen Sie fest, ob Fehlermeldungen eingehen, wenn der Kernel zu laden versucht. Eine erfolgreiche IPv6-Installation liefert beim Booten folgende Meldung:

NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
IP: routing cache hash table of 4096 buckets, 32Kbytes
TCP: Hash tables configured (established 32768 bind 65536)
NET4 Unix domain sockets 1.0/SMP for Linux NET4.0.
IPv6 v0.8 for NET4.0
IPv6 over IPv4 tunneling driver

Dieser Abschnitt zeigt die Initialisierung des Netzwerk-Stacks. Die letzten beiden Zeilen sind IPv6-spezifisch. Falls Sie diese beiden Zeilen nicht sehen oder falls Sie einen Fehler erhalten, müssen Sie Ihre Kernel-Konfigurationsdatei überprüfen und IPv6 möglicherweise als Modul aufbauen.

Haben Sie IPv6-Unterstützung als Modul kompiliert, dann stellen Sie sicher, dass Sie es für ein automatisches Laden konfiguriert haben. Dafür gibt es so viele Methoden wie Linux-Distributionen, schauen Sie also in die Dokumentation Ihrer Distribution, um spezielle Einzelheiten nachzulesen.

Wenn das Modul richtig geladen wurde, sollte es erscheinen, sobald Sie den Befehl lsmod eingeben.

vlager# lsmod |grep ipv6
Module Size Used by Not tainted
ipv6 162132 -1

Beim Laden des Moduls sollten Sie außerdem die folgenden Zeilen in Ihrem Systemprotokoll sehen:

Jul 7 16:13:43 deathstar kernel: IPv6 v0.8 for NET4.0
Jul 7 16:13:43 deathstar kernel: IPv6 over IPv4 tunneling driver

Wenn Sie davon überzeugt sind, dass Ihr IPv6-Stack richtig installiert wurde, und Sie Daten an Ihr lokales LAN, nicht jedoch durch den IPv6-Tunnel senden können, dann überprüfen Sie Ihre IPv4-Anbindung. Zuerst sollten Sie die IPv4-Tunnel-Adressen genau überprüfen, die in der sit0-Konfiguration angegeben wurden. Wenn die Konfiguration stimmt, dann testen Sie den entfernten IPv4-Endpunkt. Wenn Sie nicht in der Lage sind, IPv4-Daten an die IP-Adresse am Endpunkt des Tunnels zu senden, dann können Sie auch keine IPv6-Daten verschicken.

Andere Probleme mit der Anbindung könnten ihre Ursache in einer falsch konfigurierten Firewall haben. Falls Sie beschlossen haben, Netfilter für IPv6 zu benutzen, dann achten Sie darauf, dass Ihre Firewall-Regeln stimmen, indem Sie versuchen, Daten sowohl bei aktivierten als auch bei nicht-aktivierten Regeln zu senden. Es ist möglich, dass es Probleme innerhalb von Netfilter für IPv6 gibt, die verhindern, dass bestimmte Konfigurationen richtig funktionieren.


TOC PREV NEXT INDEX


O'Reilly Home | O'Reilly-Partnerbuchhandlungen | Bestellinformationen
Kontakt | Über O'Reilly | Datenschutz

© 2005, O'Reilly Verlag GmbH & Co. KG