PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Letzte Aktion in 2011: Server via IPv6 verfügbar machen

with 11 comments

So, damit es nicht heißt mein Blog wäre in 2011 nicht via IPv6 erreichbar gewesen ist meine letzte Aktion dieses Jahr meinen Webserver via IPv6 erreichbar zu machen. Da mein Hoster nun auch endlich IPv6 für virtuelle Server anbietet war das ziemlich einfach: Man mußte im Kundenbereich die IPv6 Konnektivität aktivieren und 10 Minuten warten. Und schon war der Server via IPv6 erreichbar:

$ ifconfig venet0 | grep inet6
inet6-Adresse: 2a01:238:42b6:2a00:e661:84eb:4a08:ee54/128 Gültigkeitsbereich:Global
inet6-Adresse: ::1/128 Gültigkeitsbereich:Maschine

Dann mußte ich gerade noch den nginx neu kompilieren für die IPv6 Funktionalität (wurde eh mal wieder Zeit, war noch eine alte 0.8.53 Version), sodass ich nun die aktuelle 1.0.11 verwende:

$ wget http://nginx.org/download/nginx-1.0.11.tar.gz
$ tar -xzvf nginx-1.0.11.tar.gz
$ cd nginx-1.0.11
$ ./configure --with-http_ssl_module --without-http_memcached_module --with-http_gzip_static_module --with-ipv6
$ make
$ sudo make install
$ sudo /etc/init.d/nginx restart

Und schon war die neue Version installiert, nun mit IPv6 Unterstützung:

$ /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.0.11
built by gcc 4.4.5 (Debian 4.4.5-8)
TLS SNI support enabled
configure arguments: --with-http_ssl_module --without-http_memcached_module --with-http_gzip_static_module --with-ipv6

Da ich in der nginx.conf aktuell nur eine server-Directive konfiguriert habe, da ich alles auf den dahinterliegenden Apache weiterleite, und bisher auf allen (sprich einer) IPv4 Adresse gelauscht habe kann ich das einfach ändern auf „alle IPv4+IPv6 Adressen“:

listen [::]:80;

Würde ich nur auf IPv6-Adressen lauschen wollen müßte ich den ipv6only Parameter nutzen:

listen [::]:80 default ipv6only=on;

Da ich nur eine öffentliche IPv6 Adresse habe (und auf localhost nicht lauschen möchte) könnte ich auch folgendes nehmen:

listen [2a01:238:42b6:2a00:e661:84eb:4a08:ee54]:80;

Nach einem erneuten Restart von nginx kann man nun meinen Server anpingen (vorausgesetzt man selbst hat IPv6 Verbindung zuhause, sonst natürlich nicht):

$ ping6 2a01:238:42b6:2a00:e661:84eb:4a08:ee54
PING 2a01:238:42b6:2a00:e661:84eb:4a08:ee54(2a01:238:42b6:2a00:e661:84eb:4a08:ee54) 56 data bytes
64 bytes from 2a01:238:42b6:2a00:e661:84eb:4a08:ee54: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 2a01:238:42b6:2a00:e661:84eb:4a08:ee54: icmp_seq=2 ttl=64 time=0.068 ms

So, was bleibt noch zu tun? Klar, DNS-Records anlegen. Für IPv6 sind das keine A Records sondern AAAA Records. Ich habe die folgenden angelegt:

www.phpgangsta.de AAAA 2a01:238:42b6:2a00:e661:84eb:4a08:ee54
*.phpgangsta.de AAAA 2a01:238:42b6:2a00:e661:84eb:4a08:ee54
ipv6.phpgangsta.de AAAA 2a01:238:42b6:2a00:e661:84eb:4a08:ee54

Damit ist die Domain incl. aller Subdomains nun auch via IPv6 erreichbar. Zur Überprüfung gibt es auch kleine Online Test Scripte mit denen man schauen kann ob eine Domain via IPv6 erreichbar ist. Ein weiteres kleines Online-Tool für IPv6 Ping, Trace und Port Check.

Mailserver:

Da es so einfach und schnell ging habe ich auch noch schnell den Mailserver IPv6 ready gemacht. Dazu einfach die Postfix main.cf öffnen und folgende Zeilen ändern:

inet_interfaces = all
inet_protocols = all

Wer es nicht mag auf allen IP-Adressen zu lauschen kann sie natürlich auch auflisten:

inet_interfaces = 127.0.0.1, 85.214.28.26, 2a01:238:42b6:2a00:e661:84eb:4a08:ee54, ::1
inet_protocols = ipv4, ipv6

Danach den Postfix neustarten, fertig!

telnet 2a01:238:42b6:2a00:e661:84eb:4a08:ee54 25

Eingehende E-Mails können nun also auch über IPv6 empfangen werden. Hier sollte man dann darauf achten dass der DNS-MX-Eintrag richtig ist:

$ dig -t MX phpgangsta.de +short
10 mail.phpgangsta.de.

$ dig -t AAAA mail.phpgangsta.de +short
2a01:238:42b6:2a00:e661:84eb:4a08:ee54

Ob ausgehende E-Mails auch über IPv6 versendet werden kann man testen indem man eine E-Mail an autoreply@v6-mail.com schickt.

In /var/log/mail.log findet sich dann die folgende Zeile:

Dec 31 02:20:51 h1440682 postfix/smtp[8177]: 68FB149CC961: to=<autoreply@v6-mail.com>,
relay=v6-mail.com[2001:470:18:16c::2]:25, delay=3, delays=1/0.01/1.2/0.67, dsn=2.0.0,
status=sent (250 2.0.0 Ok: queued as 9C566E401E0)

Fallstricke, Achtung!

Wenn man IPv6 aktiviert sollte man natürlich über ein paar Dinge nachdenken. Beispielsweise wie die (PHP-) Applikationen mit IPv6 klarkommen, denn in $_SERVER[‚REMOTE_ADDR‘] steht plötzlich eine IPv6 Adresse drin. Auch beim Mailserver muss man aufpassen falls man sich bisher auf IP-Blacklists (sogenannte DNSBLs) verlassen hat, bei IPv6 gibt es die nicht.

Falls man Firewall Regeln definiert hat müssen diese für IPv6 natürlich auch gemacht werden…

——————-

Wie weit seid ihr privat und auf der Arbeit mit IPv6? Sind eure Blogs, Firmenwebserver etc. schon via IPv6 erreichbar?

Written by Michael Kliewe

Dezember 31st, 2011 at 12:13 pm

11 Responses to 'Letzte Aktion in 2011: Server via IPv6 verfügbar machen'

Subscribe to comments with RSS or TrackBack to 'Letzte Aktion in 2011: Server via IPv6 verfügbar machen'.

  1. Streber … ich denk, ich mach das erst nächstes Jahr. Mein Provider bietet es zwar an, aber bisher ist ja die Unterstützung dafür eher dürftig. Daher habe ich auch ipv6 aus cherokee „raus kompiliert“.

    Ich wünsch Dir und allen Kommentatoren nen guten Rutsch! 🙂

    Oliver

    31 Dez 11 at 12:34

  2. Ich hab es jetzt doch schon aktiviert und zumindest anonsphere.com geroutet, aber ich muss es noch mal nachschauen, wenn ich zurück bin. Damit keiner sagen kann, das ging dieses Jahr nicht. 😉

    Oliver

    31 Dez 11 at 13:49

  3. Ahja, ipv6. Ich bin da auch schon seit einiger Zeit am überlegen; aber ich bin mir unsicher, ob eine ipv6 Subdomäne nicht bei Google als Duplicate Content erkannt wird … hast du dazu Infos?

    Norbert

    2 Jan 12 at 09:27

  4. @Norbert: Dazu gibt es den Meta-Tag
    link rel=“canonical“

    https://www.google.de/search?q=google+canonical

    Ansonsten brauchst du ja auch keine IPv6-only Subdomain, du kannst ja deine normale Haupt-Domain zusätzlich per IPv6 einrichten, also einfach zusätzlich zum A Record einen AAAA anlegen. Dann sparst du dir die eventuellen Probleme mit der Subdomain.

    Michael Kliewe

    2 Jan 12 at 11:20

  5. Schade, das IPv6 ist wohl von deinem Provider wieder deaktiviert worden:

    ipv6.phpgangsta.de löst nur einen A-Eintrag auf 1.2.3.4 auf. Mehr kann man ja nicht testen.

    Ich bin via Sixxs-Tunnel drin, den Nameserver von Sixxs, den ich frage, liefert mir für Google-Domains IPv6-Adressen aus – von meiner Seite her sollte es eigentlich funktionieren. Erst recht, wenn ich nur einen DNS-Server nach AAAA-Records frage.

    Sven

    28 Apr 12 at 11:17

  6. Ok, Fail bei den Provider-DNS-Servern. Nur der ns2.inwx.de hat überhaupt einen AAAA-Eintrag – aber für deine Domain rückt der auch keine IPv6 raus.

    Sven

    28 Apr 12 at 11:19

  7. @Sven: Du hast recht, beim letzten Serverwechsel habe ich davon nicht mehr gedacht. Ich schaue mal nach ob ich das schnell hinbekomme.

    Michael Kliewe

    28 Apr 12 at 11:20

  8. So, ich habe die AAAA-Einträge wieder hinzugefügt, ich hoffe dass sie funktionieren.
    Der A-Eintrag von ipv6.phpgangsta.de zeigt auf eine ungültige IP 1.2.3.4 weil beim Weglassen eines A-Eintrags bei der ipv6-Subdomain sonst der * A-Eintrag greifen würde, und der enthält die richtige IPv4 Adresse 84.200.8.31. Falls IPv6 nicht richtig eingerichtet ist und das Betriebssystem auf IPv4 zurückfällt, würde die Seite funktionieren. Die ipv6-Subdomain soll aber explizit nur über IPv6 funktionieren um testen zu können, deshalb dieser komische Eintrag.

    nslookup ipv6.phpgangsta.de 8.8.4.4
    Server: google-public-dns-b.google.com
    Address: 8.8.4.4

    Nicht autorisierende Antwort:
    Name: ipv6.phpgangsta.de
    Addresses: 2001:1608:10:43::31
    1.2.3.4

    nslookup http://www.phpgangsta.de 8.8.4.4
    Server: google-public-dns-b.google.com
    Address: 8.8.4.4

    Nicht autorisierende Antwort:
    Name: http://www.phpgangsta.de
    Addresses: 2001:1608:10:43::31
    84.200.8.31

    Michael Kliewe

    28 Apr 12 at 11:53

  9. Arg, doofes WordPress, die Links da unten sind natürlich falsch, das http:// gehört da nicht hin.

    Funktioniert es nun korrekt?

    Michael Kliewe

    28 Apr 12 at 11:56

  10. Funktioniert wieder! 🙂

    Sollte wohl Bestandteil eines internen Monitorings sein, wenn man sowas subtil und unbemerkt kaputt spielen kann… 😉

    Sven

    28 Apr 12 at 12:06

  11. Wäre die Seite irgendwie wichtig hätte das schon jemand vorher angemerkt 😉
    Aber du hast Recht, ich habe ein (externes) Monitoring bei wemonit.de, aber leider muss die Fehlermail untergegangen sein beim Umzug, und leider gab es keine wiederkehrenden Alarm-Mails. Und da ich selbst noch keinen IPv6 Zugang habe und nur bei Bedarf den Tunnel aufmache ist es mir nicht aufgefallen.

    Service wieder online:
    PHPGangsta Blog (Webseite / HTTP) ist wieder online via IPv6.
    Gemessene Downtime: ca. 115791 Minuten

    Danke für die Meldung und Hilfe, wir wollen ja IPv6 weiter pushen!

    Michael Kliewe

    28 Apr 12 at 14:18

Leave a Reply

You can add images to your comment by clicking here.