Archiv der Kategorie ‘Allgemein‘

 
 

neunzehn83.de jetzt auch über IPv6 erreichbar

Dank IPv6 zu Hause über den Tunnelbroker Sixxs konnte ich nun endlich meinen vServer fit für “das neue Internet” machen. Natives IPv6 ist wohl in absehbarer Zeit nicht zu erwarten, da von meinem ISP, der Kabel Baden-Württemberg GmbH, noch kein Termin zur Einführung von IPv6 genannt wurde.

Eigentlich ganz einfach

Alles was wir brauchen ist:

  • eine IPv6-Adresse
  • einen Nameserver, der per IPv6 erreichbar ist
  • DNS AAAA-Records
  • Apache für den Dualstack-Betrieb konfigurieren

Eine IPv6-Adresse

Der vServer ALUMINIUM von Netcup, auf dem neunzehn83.de läuft, ist IPv6 fähig. Per OpenVCP-Panel kann man bis zu 15 einzelne IPv6-Adressen aktivieren. Nach einem Reboot stehen diese zur Verfügung.

~$ sudo ifconfig
eth0      Link encap:Ethernet  HWaddr 00:24:21:b4:xy:ab
      inet addr:188.40.201.74  Bcast:188.40.201.127  Mask:255.255.255.192
      inet6 addr: 2a01:4f8:100:5462:0:bc28:c94a:1/64 Scope:Global
      inet6 addr: 2a01:4f8:100:5462:0:bc28:c94a:2/64 Scope:Global

Nameserver

Für IPv4 schreibt die DeNIC mindestens zwei Nameserver in unterschiedlichen /24 Netzen vor. Bei IPv6 genügt im Moment noch ein einziger. Wie bereits erwähnt, verwende ich die Nameserver von Regworld, meinem Domain-Registrar. Zusätzlich läuft auf dem vServer noch ein Bind Nameserver als zweiter Secondary. Dieser lauscht auch gleichzeitig an der IPv6-Adresse und wird somit als einziger Nameserver für IPv6-Anfragen genutzt.

Die Nameserver von Regworld kommen dafür leider nicht in Frage, da diese (noch) nicht per IPv6 erreichbar sind. Das lässt sich aber relativ leicht lösen, indem man einen Bind-Nameserver an eine oder mehrere IPv6 adressen binded und als reinen Forwarder für die Regworld-Nameserver via IPv4 konfiguriert.

In meinem Fall gebe ich mich aber mal mangels RAM mit nur einem Nameserver für IPv6 zufrieden.

Zu guter Letzt muss noch ein IPv6 GLUE-Record für den Nameserver angelegt werden. Das geht im Domainrobot von Regworld (AutoDNS) genau so wie bei IPv4: Man schreibt den IPv6-Glue einfach per Leerzeichen vom v4-Glue getrennt dahinter:

ns.example.org 1.1.1.1 ::1

Beim DeNIC-Whois sieht das dann so aus:

DNS AAAA-Records

Was der A-Record bei v4 ist der AAAA (Quad-A) Record bei v6. Diesen legen wir jetzt also für die Domain (neunzehn83.de) und die www-Subdomain an. Zusätzlich habe ich eine neue Subdomain ipv6.neunzehn83.de erstellt, die nur ein AAAA aber kein A Record hat, somit also exklusiv über IPv6 erreichbar ist.

@    IN A    188.40.201.74    
@    IN AAAA 2a01:4f8:100:5462::bc28:c94a:1
www  IN A    188.40.201.74
www  IN AAAA 2a01:4f8:100:5462::bc28:c94a:1
ipv6 IN AAAA 2a01:4f8:100:5462::bc28:c94a:1

IPv6 hat übrigens Priorität vor IPv4, weshalb alle Besucher die sowohl mit IPv4 als auch mit IPv6 unterwegs sind, diese Webseite bereits über IPv6 betrachten.

Apache Dualstack

Dual-Stack nennt man das Verfahren, bei dem der Apache sowohl per IPv4 also auch per IPv6 erreichbar ist. Alles was dafür nötig ist, ist den Apachen auch auf der IPv6-Adresse lauschen zu lassen und die Virtualhost-Konfiguration um die IPv6-Adresse zu erweitern.

Listen 188.40.201.74:80
Listen [2a01:4f8:100:5462::bc28:c94a:1]:80

<Virtualhost 188.40.201.74:80 [2a01:4f8:100:5462::bc28:c94a:1]:80>
[...]
</Virtualhost>

Nach einem Apache-Restart ist alles klar.

IPv6 und Froxlor

Dummerweise schreibe ich für diesen Server die Apache-Configs nicht selbst, sondern lass das Froxlor machen. Froxlor ist der Nachfolger von SysCP, unterstützt aber ebenso noch kein Dualstack, weshalb ich selbst an der Source Hand angelegt habe. Alle Änderungen finden sich in diesem Patch, welchen ich auch in einem Thread bei Froxlor zur Diskussion veröffentlicht habe. In der Datenbank muss die Varchar-Länge des ip-Feldes der panel_ipsandports-Tabelle auf 55 vergrößert werden.

ALTER TABLE `panel_ipsandports` CHANGE `ip` `ip` VARCHAR( 55 ) NOT NULL DEFAULT ''

Nun können unter IPs und Ports Dualstack-IPs angeben werden, indem die IPv4 einfach durch ein Leerzeichen von der IPv6-Adresse getrennt wird:

Achtung: der Patch berücksichtigt nur die Apache und Bind Konfiguration. NGIX und Lighttpd sind unverändert und somit wahrscheinlich nicht funktionsfähig.

IPv6 und PHP

Wenn die eigene Webseite auch per IPv6 erreichbar ist, kann das auch Auswirkungen auf PHP-Scripte haben. $_SERVER['REMOTE_ADDR'] beinhaltet dann nämlich die IPv6-Adresse als String und die ist in den meisten Fällen deutlich länger als eine IPv4-Adresse. Das kann ein Problem werden, wenn die IP-Adresse in einer Datenbank als ein VARCHAR(15) gespeichert wird. Hier benötigt man nun ein VARCHAR(40). Auch ip2long() funktioniert nicht mit IPv6-Adressen.

Zwei Jahre (und ein bisschen) neunzehn83.de

Party Hard

Wie auch schon letztes Jahr habe ich den Geburtstag (oder sagt man Jahrestag) meines Blogs knapp verpennt. Macht aber nichts, zu bloggen hab ich nämlich auch vergessen. 2011 waren die Anspüche groß, die Resultate blieben aber wie so oft weit hinter den Erwartungen zurück. So habe ich es in einem Jahr auf gerade einmal 16 Beiträge gebracht. Pfui!

2012 wird aber alles besser. Gebloggt wird ab sofort übrigens mit WordPress 3 und markdown (yay). Ideen für neue Beiträge habe ich einige, mitunter sind das echte Kracher, also dranbleiben, denn die kalte Jahreszeit kommt bestimmt.

SVG nach PNG umwandeln mit Textpath [Debian Linux]

Kurz erwähnt, da es mich selbst zu viel Zeit gekostet hat dieses eigentlich einfache Problem zu lösen:

Möchte man ein SVG in PNG (oder sonstige Pixelgrafikformate) umwandeln, versucht man das wohl zunächst mit ImageMagick. Das funktioniert solange auch prima, bis im SVG ein <textpath> vorkommt. Dieser verschwindet nämlich bei der Umwandlung in ein PNG mit imagick. Selbes Problem tritt mit meiner zweiten Wahl, dem Tool rsvg (librsvg2-bin), auf.

Mit inkscape funktioniert die Umwandlung wie gewünscht. Es ist mit Sicherheit weniger verbreitet wie convert (imagick), aber immerhin ist es als Debian-Paket (“inkscape”) verfügbar. Die Windowsversion ist im Übrigen ebenfalls einen Blick wert: ein wirklich brauchbares, quelloffenes Vektorgrafikprogramm!

reCAPTCHA Tricks ;)

reCAPTCHA ist ein sehr verbreiteter Captcha-Service der von Google betrieben wird. Viele Webseiten zeigen via reCAPTCHA-Webservice diese Captchas an, um Ihre menschlichen Besucher von Bots zu unterscheiden. Das Besondere: mit reCAPTCHA werden Bücher digitalisiert, bzw. OCR-Ergebnisse überprüft. Zur Lösung muss der Benutzer zwei Wörter eingeben, wovon aber nur eines bei reCAPTCHA bekannt ist. Beide Wörter stammen aus einem Buch-Scan (Google Books – aber auch andere). Das bekannte Wort wurde bereits durch reCAPTCHA-Benutzer bestätigt oder hat grundsätzlich eine hohe OCR-Genaugigkeit – das unbekannte hat eine niedrige Genauigkeit.

Beide Wörter werden zusätzlich verformt. Früher wurden auch verschiedene Objekte oder Striche über die Texte gelegt. Zur erfolgreichen Lösung reicht die Übereinstimmung des bekannten Wortes. Die Eingaben zum anderen Wort werden lediglich erfasst und bei entsprechender Häufung dazu verwendet das OCR-Ergebnis zu korrigieren bzw. zu bestätigen.

Das erklärt auch, warum bei reCAPTCHA teilweise wirre Worte erscheinen.

In diesem Fall genügt es einfach das zweite Wort einzugeben. Das erste kann frei erfunden werden. Captcha gelöst! Wer also nicht beim Digitalisieren behilflich sein will, der hält sich nicht lange mit dem entziffern auf, sondern gibt irgendetwas ein – das bekannte Wort (und nur darauf kommt es an) ist meist ohne viel Rätseln lesbar.

Apples consolidated.db visualisieren

Es wurde wohl schon genug über das Speichern von Bewegungsdaten auf Apples iPhone geschrieben. Nur eins noch: Mit Hilfe dieser Webseite kann man die consolidated.db (die böse Datei, in der all die Bewegungsdaten gespeichert sind) parsen, und übersichtlich in einer Google-Map darstellen. Das ganze passiert zu 100% Clientseitig mit Javascript. Ausgewählt werden kann direkt der iTunes-Backup-Ordner, oder besser, nur die consolidated.db via Drag&Drop. Bei meinen Tests hat das ausschließlich mit Google-Chrome funktioniert.

Besitzer eines Jailbroken iPhones finden die besagte Datei via scp in

/private/var/root/Library/Cache/locationd/consolidated.db

Übrigens: die Smartphone-Plattform der Datenkrake Goole scheint Apple da in nichts nachzustehen – zumindest beim Datensammeln. Deshalb rate ich allen ihre Häme besser zurückzuhalten ;)