Marc Reichelt: IPv6: Wie beginnen?

Hallo an alle,

bereits in wenigen Jahren werden keine IPv4-Adressen mehr zu vergeben sein - daher möchte ich mich nun doch möglichst bald über IPv6 informieren, um mehr darüber zu wissen bevor die Umstellung so richtig losgeht (ein gutes Tutorial scheint mir dieses hier zu sein).

Hierzu möchte ich in den nächsten Tagen folgende Dinge erreichen können:
1. Mit IPv6 auf meinen Apache (localhost) zugreifen können.
2. IPv6-ping auf IPv6-Adressen aus dem Internet.
3. Langfristig: Zugriff auf IPv6-fähige HTTP-Server ganz normal mit dem Browser.

Ich arbeite unter Linux (Kubuntu 7.10, also recht aktueller Kernel).
Ein Aufruf von "ifconfig" auf der Konsole gibt mir aus, dass ich definitiv zwei IPv6-Adressen zugewiesen bekommen habe.
Ein Mal die "::1" auf "lo" und auf meiner WLAN-Verbindung eth1 die Adresse "fe80::216:6fff:fe15:ae4b".

Soweit, so gut: Ich habe herausgefunden, dass ich mit "ping6 ::1" über lo und mit "ping6 -I eth1 fe80::216:6fff:fe15:ae4b" meinen eigenen Rechner anpingen kann.

Nun möchte ich aber beispielsweise auf meinen lokalen Apache zugreifen - ein Zugriff auf http://[::1] wird allerdings lapidar mit "Verbindung fehlgeschlagen" beantwortet - obwohl ich Firefox 2 verwende, der IPv6 können sollte (IPv6 ist nicht deaktiviert, es ist kein Proxy aktiv).

Nun meine erste Frage: Wie bekomme ich dies vernünftig zum Laufen?

Wenn das Ganze geschafft ist, würde ich gerne mit IPv6-fähigen Servern kommunizieren. Mein Router hier zu Hause ist ein "FRITZ!Box Fon WLAN 7050" mit neuester Firmware drauf - und der unterstützt trotzdem kein IPv6, habe ich zumindest das Gefühl (ein Anruf bei der Hotline bestätigt: kein offizieller IPv6-Support, aber prinzipiell solle IPv6 "abwärtskompatibel" sein).

Nun würde ich gerne wissen, was an dieser Abwärtskompatibilität dran ist.
Wie bekomme ich erfolgreich ein IPv6-Routing auf das Internet zustande und kann so auch auf IPv6-fähige Internet-Adressen zugreifen?

Ich bin mir sicher dass dieser Thread vielen helfen kann - nicht nur mir.

Grüße

Marc Reichelt || http://www.marcreichelt.de/

--
printk("; corrupted filesystem mounted read/write - your computer
        will explode within 20 seconds ... but you wanted it so!\n");
        linux-2.4.3/fs/hpfs/super.c
Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
  1. Finde ich super, dass du diesen Thread begonnen hast! Ich würde mich gerne auch ein bisschen näher damit auseinandersetzen...

    Gruß, Samoht

    --
    fl:| br:> va:) ls:< n4:( ss:) de:] js:| mo:}
    "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music."
    (Kristian Wilson, Nintendo, 1989)
  2. Hallo Marc,

    bereits in wenigen Jahren werden keine IPv4-Adressen mehr zu vergeben sein -

    diesen Satz habe ich schon vor mehr als 10 Jahren gelesen :-)

    daher möchte ich mich nun doch möglichst bald über IPv6 informieren, um mehr darüber zu wissen bevor die Umstellung so richtig losgeht (ein gutes Tutorial scheint mir dieses hier zu sein).

    Hierzu möchte ich in den nächsten Tagen folgende Dinge erreichen können:

    1. Mit IPv6 auf meinen Apache (localhost) zugreifen können.

    [...]

    Nun möchte ich aber beispielsweise auf meinen lokalen Apache zugreifen - ein Zugriff auf http://[::1] wird allerdings lapidar mit "Verbindung fehlgeschlagen" beantwortet - obwohl ich Firefox 2 verwende, der IPv6 können sollte (IPv6 ist nicht deaktiviert, es ist kein Proxy aktiv).

    Warum suchst Du die Schuld beim Client?
    Wie hast Du Deinen Server konfiguriert?

    Freundliche Grüße

    Vinzenz

  3. Hallo Marc,

    Nun möchte ich aber beispielsweise auf meinen lokalen Apache zugreifen - ein Zugriff auf http://[::1] wird allerdings lapidar mit "Verbindung fehlgeschlagen" beantwortet - obwohl ich Firefox 2 verwende, der IPv6 können sollte (IPv6 ist nicht deaktiviert, es ist kein Proxy aktiv).

    Nun meine erste Frage: Wie bekomme ich dies vernünftig zum Laufen?

    Dein Apache muss auf dem IPv6-Interface lauschen, d.h. in der httpd.conf sollte eine Zeile wie Listen [::1]:80 stehen. Dann sollte der Zugriff auf IPv6-Localhost funktionieren.

    Wenn das Ganze geschafft ist, würde ich gerne mit IPv6-fähigen Servern kommunizieren.

    Das Hauptproblem ist dabei Dein Provider. Wenn der Dir keine IPv6-Adresse zur Verfügung stellt (das machen die wenigsten), dann hast Du ein Problem. Das Problem lässt sich allerdings durch Tunneln lösen, dazu gibt es zwei Varianten:

    1. 6to4: Es gibt die nette Idee, dass man IPv6-Pakete on-the-fly an IPv4-
         Hosts verschickt, nennt sich dann 6to4, eine Anleitung für Linux findest
         Du unter [1]. Im Prinzip funktioniert das so: Der IPv6-Adressraum
         2002:$IPV4_IN_HEX/48 ist dafür reserviert. Wenn man im IPv6-Internet
         nun ein Paket an eine Adresse 2002:$IPV4_IN_HEX::sonstwas schickt, dann
         wird der nächstmögliche 6to4-Router (da gibt's ein paar) das Paket
         in ein IPv4-Paket "verpacken" und dann über's IPv4-Netz an die IPv4-
         Adresse schicken. Der IPv4-Rechner muss das Paket dann natürlich
         verarbeiten können und selbst in den eigenen IPv6-Stack einspeisen
         können (d.h. er muss entsprechend eingerichtet sein). Die umgekehrte
         Richtung funktioniert analog: Es gibt eine Anycast-Adresse 192.88.99.1,
         die IMMER auf den nächsten 6to4-Router auflöst. Wenn man also von seinem
         Rechner ein Paket zurückschicken will, wird es vom eigenen Rechner in
         ein IPv4-Paket gepackt, dieses an diese Anycast-Adresse geschickt, der
         nächste 6to4-Router (kann auch ein anderer sein) liest das enthaltene
         IPv6-Paket aus und speist es ins IPv6-Internet zurück.

    Hat allerdings den großen Nachteil, dass der Rechner, der direkt unter
       der IPv4-Adresse erreichbar ist, das können muss. Dürfte bei Dir nicht
       der Fall sein.

    1. Du suchst Dir einen Tunnelbroker wie Sixxs, der Dir einen IPv6-Tunnel
         anbietet. Damit erhälst Du dann eine statische IPv6-Adresse (bzw.
         genauer gesagt einen ganzen Adressbereich, bei 6to4 erhälst Du übrigens
         auch implizit einen Adressbereich, weil IPv6 128bit ist, das Präfix
         aber nur 48 davon benötigt). Sixxs bietet dann ein Programm an, mit dem
         Du den Tunnel dynamisch herstellen kannst: Entweder über normales
         IPv6-in-IPv4 (das muss dann auch direkt vom am IPv4-Internet
         angeschlossenen Rechner aus funktionieren) oder neuerdings auch über UDP
         und damit auch durch NAT hindurch. Musst Dich halt erst bei Sixxs
         anmelden, dass das geht (und die wollen bei der Anmeldung auch eine
         Begründnug haben, da sollte man ehrlich angeben, dass man
         IPv6-Konnektivität für sein Heimnetz herstellen will, die der eigene
         Provider nicht bietet, um damit IPv6 testen zu können). Lies Dir am
         besten bevor Du etwas diesbezüglich unternimmst erst einmal die ganzen
         Dokus auf der Sixxs-Seite dazu durch.

    Hier kannst Du das Programm entweder auf Deinem Router laufen lassen
       (das mache ich, ich hab einen OpenWRT-Router :-)), dort kann dann
       zusätzlich auch noch der radvd laufen ("router advertisement daemon"),
       damit IPv6-Rechner im Netz über stateless autoconfiguration automatisch
       eine gütlige IPv6-Adresse sich suchen können. Oder Du lässt es auf
       Deinem lokalen Rechner laufen, dann hat erst einmal nur Dein Rechner
       Zugriff auf IPv6 (und sonst niemand im Netz), Du kannst aber auch
       auf Deinem lokalen Rechner den radvd laufen lassen und somit das ganze
       interne Netz über Deinen Rechner (nicht den normalen Router) ans
       IPv6-Internet anschließen.

    [1] http://tldp.org/HOWTO/Linux+IPv6-HOWTO/configuring-ipv6to4-tunnels.html

    Viele Grüße,
    Christian

    1. Hallo Christian,

      Nun meine erste Frage: Wie bekomme ich dies vernünftig zum Laufen?

      Dein Apache muss auf dem IPv6-Interface lauschen, d.h. in der httpd.conf sollte eine Zeile wie Listen [::1]:80 stehen. Dann sollte der Zugriff auf IPv6-Localhost funktionieren.

      Das sollte er eigentlich.
      Ein Test bringt bei mir allerdings folgende Fehlermeldung zutage:

      [crit] (EAI 9)Address family for hostname not supported: alloc_listener: failed to set up sockaddr for ::1
      Syntax error on line 2 of /etc/apache2/ports.conf:
      Listen setup failed

      Ergo scheint der Default-Apache für Ubuntu nicht mit IPv6 kompiliert zu sein. Das ist schon mal entmutigend. Oder liegt der Fehler woanders?

      Wenn das Ganze geschafft ist, würde ich gerne mit IPv6-fähigen Servern kommunizieren.

      Das Hauptproblem ist dabei Dein Provider. Wenn der Dir keine IPv6-Adresse zur Verfügung stellt (das machen die wenigsten), dann hast Du ein Problem.

      Allerdings. Dann wird es vermutlich erst in 3-5 Jahren ein wenig mehr Anbieter mit IPv6 geben.

      Das Problem lässt sich allerdings durch Tunneln lösen, dazu gibt es zwei Varianten:

      ...

      Das hört sich beides ziemlich kompliziert an. Ich glaube, da lohnt es sich doch noch, ein wenig zu warten, bis neue ISPs nur noch auf IPv6-Adressen setzen oder alte ISPs auf IPv6 umrüsten.

      PS: Wie sieht das eigentlich bei meinem Server aus? Ich habe einen Server bei Hetzner gemietet, und das Betriebssystem (Debian 4.0) kann auch IPv6. Ein Aufruf von "ping6 -I eth0 ipv6.google.com" bringt aber leider nur ein "connect: Network is unreachable" zurück. :-(

      Grüße

      Marc Reichelt || http://www.marcreichelt.de/

      --
      panic("Oh boy, that early out of memory?");
              linux-2.2.16/arch/mips/mm/init.c
      Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
      1. Hallo Marc,

        Nun meine erste Frage: Wie bekomme ich dies vernünftig zum Laufen?

        Dein Apache muss auf dem IPv6-Interface lauschen, d.h. in der httpd.conf sollte eine Zeile wie Listen [::1]:80 stehen. Dann sollte der Zugriff auf IPv6-Localhost funktionieren.

        Das sollte er eigentlich.
        Ergo scheint der Default-Apache für Ubuntu nicht mit IPv6 kompiliert zu sein. Das ist schon mal entmutigend. Oder liegt der Fehler woanders?

        Unter Debian Etch klappt der lokale Zugriff über IPv6 auf Anhieb mit der minimalen /etc/apache2/ports.conf

        Listen 80

        Allerdings. Dann wird es vermutlich erst in 3-5 Jahren ein wenig mehr Anbieter mit IPv6 geben.

        Optimist! OK, ein klein wenig mehr ;-)

        PS: Wie sieht das eigentlich bei meinem Server aus? Ich habe einen Server bei Hetzner gemietet, und das Betriebssystem (Debian 4.0) kann auch IPv6. Ein Aufruf von "ping6 -I eth0 ipv6.google.com" bringt aber leider nur ein "connect: Network is unreachable" zurück. :-(

        Ich vermute, dass das lokale Netzwerk, in dem sich Dein Server bei Hetzner befindet, keine IPv6-Konnektivität hat. IPv6 hat nach meiner Einschätzung noch eine hübsche Durststrecke vor sich. Christians Beitrag zeigt es doch: ohne Tunnel geht es heute noch nicht. Solange das der Fall ist, wird sich die Nutzung von IPv6 in (engen) Grenzen halten.

        Die Frage lautet doch: Was gewinnt heute (2008) Otto Normalanwender (oder Otto Normaladministrator) durch die Nutzung von IPv6?

        Die ketzerische Antwort: Nichts. Dafür treibt er hohen Aufwand (auch für die sichere Konfiguration von IPv6) ...

        Freundliche Grüße

        Vinzenz

        1. Hallo Vinzenz,

          Unter Debian Etch klappt der lokale Zugriff über IPv6 auf Anhieb mit der minimalen /etc/apache2/ports.conf

          Listen 80

          Ja, auf meinem Debian-Server kann ich das nun auch sehen (links klappt nicht, aber wget schon). Komisch - da haben die von Ubuntu wohl etwas falsch gemacht bzw. beim Kompilieren IPv6 deaktiviert. Unschön, das.

          Allerdings. Dann wird es vermutlich erst in 3-5 Jahren ein wenig mehr Anbieter mit IPv6 geben.

          Optimist! OK, ein klein wenig mehr ;-)

          Ja, so 1 oder 2 Anbieter dürften es schon sein. ;-)

          Ich vermute, dass das lokale Netzwerk, in dem sich Dein Server bei Hetzner befindet, keine IPv6-Konnektivität hat. IPv6 hat nach meiner Einschätzung noch eine hübsche Durststrecke vor sich. Christians Beitrag zeigt es doch: ohne Tunnel geht es heute noch nicht. Solange das der Fall ist, wird sich die Nutzung von IPv6 in (engen) Grenzen halten.

          Das ist doch gleich mal eine Support-Anfrage wert. Mal sehen, was die von Hetzner da so planen. ;-)

          Die Frage lautet doch: Was gewinnt heute (2008) Otto Normalanwender (oder Otto Normaladministrator) durch die Nutzung von IPv6?

          Die ketzerische Antwort: Nichts. Dafür treibt er hohen Aufwand (auch für die sichere Konfiguration von IPv6) ...

          Da hast du natürlich Recht. Ich würde mich nur gerne jetzt damit befassen, damit ich im Voraus schlauer bin - und nicht im Nachhinein von IPv6 überrannt werde.

          Grüße

          Marc Reichelt || http://www.marcreichelt.de/

          --
          panic("Oh boy, that early out of memory?");
                  linux-2.2.16/arch/mips/mm/init.c
          Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
      2. Hallo Marc,

        [crit] (EAI 9)Address family for hostname not supported: alloc_listener: failed to set up sockaddr for ::1
        Syntax error on line 2 of /etc/apache2/ports.conf:
        Listen setup failed

        Ergo scheint der Default-Apache für Ubuntu nicht mit IPv6 kompiliert zu sein. Das ist schon mal entmutigend. Oder liegt der Fehler woanders?

        Es sieht so aus, als ob das der Fall wäre, auch wenn ich mir das eigentlich nicht vorstellen kann... Könntest Du mir mal die libaprutil.so, libapr.so und das "httpd"-Binary (heißt manchmal auch "apache2") von Dir zukommen lassen? Dann könnte ich mir's mal ansehen.

        PS: Wie sieht das eigentlich bei meinem Server aus? Ich habe einen Server bei Hetzner gemietet, und das Betriebssystem (Debian 4.0) kann auch IPv6. Ein Aufruf von "ping6 -I eth0 ipv6.google.com" bringt aber leider nur ein "connect: Network is unreachable" zurück. :-(

        Klar, so gut wie alle Serveranbieter bieten kein IPv6. Da müsstest Du dann auch tunneln. Allerdings sind gerade dedizierte Server vergleichsweise einfach über 6to4 anzubinden, da sie ja eine feste IPv4-Adresse haben, unter denen sie direkt im Internet erreichbar sind.

        Viele Grüße,
        Christian

        1. Hallo Christian,

          Es sieht so aus, als ob das der Fall wäre, auch wenn ich mir das eigentlich nicht vorstellen kann... Könntest Du mir mal die libaprutil.so, libapr.so und das "httpd"-Binary (heißt manchmal auch "apache2") von Dir zukommen lassen? Dann könnte ich mir's mal ansehen.

          Es sieht ganz so aus als ob der Apache2-Webserver von Ubuntu 7.10 fehlerhaft ist und ohne IPv6-Unterstützung daherkommt - mit einem frisch installierten Debian 4.0 im Emulator habe ich es schnell hinbekommen.
          Mal sehen ob der Fehler in Ubuntu 8.04 auch auftritt.

          PS: Wie sieht das eigentlich bei meinem Server aus? Ich habe einen Server bei Hetzner gemietet, und das Betriebssystem (Debian 4.0) kann auch IPv6. Ein Aufruf von "ping6 -I eth0 ipv6.google.com" bringt aber leider nur ein "connect: Network is unreachable" zurück. :-(

          Klar, so gut wie alle Serveranbieter bieten kein IPv6. Da müsstest Du dann auch tunneln. Allerdings sind gerade dedizierte Server vergleichsweise einfach über 6to4 anzubinden, da sie ja eine feste IPv4-Adresse haben, unter denen sie direkt im Internet erreichbar sind.

          Gut - auf meinem Produktivsystem würde ich das nur ungerne austesten. Da warte ich doch lieber noch ein wenig ab. ;-)

          Grüße

          Marc Reichelt || http://www.marcreichelt.de/

          --
          panic("Oh boy, that early out of memory?");
                  linux-2.2.16/arch/mips/mm/init.c
          Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
  4. Hallo Marc,

    bereits in wenigen Jahren werden keine IPv4-Adressen mehr zu vergeben sein

    Da würde ich mir keine Sorgen machen.
    Dann wird eine IP-Steuer eingeführt und schlagartig werden wieder welche frei...

    LG
    Chris©