QVINTVS · SCRIBET

Die Zukunft lässt sich blicken

Ich hab’s nun auch endlich geschafft, mir eine IPv6-Adresse zuzulegen.

Vor ein paar Tagen habe ich mir dazu einen Account auf SixXS.net angelegt, der ein paar Tage bis zur Bestätigung brauchte (bei SixXS wird jedes Request manuell von Personen abgearbeitet, worauf man offenbar auch stolz ist), woraufhin ich heute einen Tunnel (AYIYA, siehe die Tunnel-Request-Seite im persönlichen SixXS-Bereich) angefordert und auch erhalten habe. Ich weiß zwar immer noch nicht, wofür die Abkürzung PoP steht, aber bei der Anforderung des Tunnels habe ich den mir am nächsten liegenden PoP NetCologne gewählt (ist in Köln, wie der Name schon sagt). Nachdem ich die Bestätigung hatte, habe ich mir den SixXS-Klienten AICCU installiert:

$ aurget -S aiccu

Konfiguration

Anschließend wollte ich wie im FAQ von SixXS beschrieben die Konfiguration anlegen, musste jedoch feststellen, dass sich die Konfigurationsdatei /etc/aiccu.conf ein wenig anders verhält als behauptet. Knackpunkt war die Definition des TIC-Servers, der laut SixXS folgende Direkive in der Konfigurationsdatei haben sollte:

The default is tic.sixxs.net which is the TIC server for SixXS, thus for all the PoPs.
In most cases you do not have to change the tic_server parameter in the AICCU configuration as the default for AICCU is tic.sixxs.net.
PoPs themselves do not provide a TIC service.

Nette Idee, aber es ist nicht der Default und die Direktive heißt auch nicht tic_server, sondern einfach nur server; die Konfigurationsdatei sagt explizit aus, dass es keinen Standardwert gibt:

# Protocol and server to use for setting up the tunnel (defaults: none)
#protocol <tic|tsp|l2tp>
#server <server to use>
[...]

Entgegen der Behauptung des SixXS-FAQ muss diese Angabe also geändert werden, und zwar wie folgt:

protocol tic
server tic.sixxs.net

Weiterhin ist es natürlich ratsam, die Angaben zu Benutzername (SixXS-Handle) und Passwort zu machen:

# Login information (defaults: none)
username MGG5-SIXXS
password XXXXX

Schließlich habe ich AICCU noch angewiesen, eine PIDFile zu benutzen:

# PID File
pidfile /var/run/aiccu.pid

Alle anderen Angaben habe ich auf ihren Standardwerten belassen und bin zur Konfiguration meines Routers (einer Fritz!Box mit Freetz) übergegangen, wo ich folgende Portweiterleitungen eingerichtet habe:

  1. TCP-Port 3874 an meinen lokalen Rechner weitergeleitet
  2. UDP-Port 5072 an meinen lokalen Rechner weitergeleitet

Die Informationen zu den Ports habe ich ebenfalls dem SixXS-FAQ entnommen.

Test

Der Test mithilfe von

# aiccu test

ist interaktiv und ziemlich selbsterklärend. Falls nicht, mal die Manpages zu ping und traceroute lesen.

Start

Dann konnte ich endlich zur eigentlichen Benutzung übergehen (IP- und MAC-Adressen ge-X-t):

√ root@hades => ~
# aiccu start
√ root@hades => ~
# ifconfig
eth0      Link encap:Ethernet  HWaddr XXXXX
          inet addr:XXXXX  Bcast:192.168.178.255  Mask:255.255.255.0
          inet6 addr: XXXXX Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:20874 errors:0 dropped:0 overruns:0 frame:0
          TX packets:18083 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:20561229 (19.6 Mb)  TX bytes:2002204 (1.9 Mb)
          Interrupt:43 Base address:0x8000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:56 errors:0 dropped:0 overruns:0 frame:0
          TX packets:56 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:4704 (4.5 Kb)  TX bytes:4704 (4.5 Kb)

sixxs     Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet6 addr: XXXXX Scope:Link
          inet6 addr: XXXXX Scope:Global
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1280  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 b)  TX bytes:144 (144.0 b)

√ root@hades => ~
# ping ipv6.google.com
ping: unknown host ipv6.google.com

Öööhh, ja. Das ist eine böse Falle, denn das normale ping-Kommando kann schlicht kein IPv6. Eine kurze Internetrecherche hat mich darauf gebracht, dass es nicht AICCU ist, was hier nicht funktioniert, sondern ping. richtig muss das lauten:

# ping6 ipv6.google.com
PING ipv6.google.com(fra07s07-in-x69.1e100.net) 56 data bytes
64 bytes from fra07s07-in-x69.1e100.net: icmp_seq=1 ttl=57 time=50.7 ms
64 bytes from fra07s07-in-x69.1e100.net: icmp_seq=2 ttl=57 time=51.2 ms
64 bytes from fra07s07-in-x69.1e100.net: icmp_seq=3 ttl=57 time=51.4 ms
^C
--- ipv6.google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 50.799/51.169/51.449/0.329 ms
√ root@hades => ~
# 

Damit kann man jetzt alle Seiten erreichen, die nur IPv6 können.

Dauerhafte Einrichtung

Um aiccu automatisch zu starten, kann man, wenn man das klassische SysV-Init von Arch benutzt, den aiccu-Daemon /etc/rc.d/aiccu in die /etc/rc.conf aufnehmen. Da ich aber seit neustem mit Systemd boote, will ich auch erklären, wie mein einen Systemd-Service für AICCU anlegt.

Systemd-Service

Systemd liest sämtliche Service-Dateien aus /lib/systemd/system und /etc/systemd/system. Da /lib nicht der Ort für maschinenspezifische Anpassungen ist, legt man die Datei /etc/systemd/system/aiccu.service an und füllt sie mit folgendem Inhalt:

Description=SixXS IPv6 tunnel interface
After=syslog.target

[Service]
Type=forking
PIDFile=/var/run/aiccu.pid
ExecStart=/usr/sbin/aiccu start

[Install]
WantedBy=multi-user.target

Das Schöne an den Systemd-Service-Files ist, dass man sie recht gut versteht und sie nicht kompliziert sind. Unter dem Unit-Bereich werden allgemeine Optionen abgefasst, Service enthält die eigentlichen Informationen zum zu startenden Programm und Install zu welchem Target man das Programm zuordnet. Ich werde zur Einrichtung von Systemd einen Artikel schreiben, wenn ich mein Laptop auch dahin umrüste. Wer sich schon jetzt für Details über die Service-Files interessiert, dem sei dieser Blogpost zusammen mit den Manpages systemd.unit (5) und systemd.service (5) empfohlen.

Starten kann man AICCU nun mit

# systemctl start aiccu.service

Stoppen analog mit

# systemctl stop aiccu.service

Um beim Start automatisch gestartet zu werden (als Teil von multi-user.target):

# systemctl enable aiccu.service

und um es wieder aus dem Autostart zu entfernen:

# systemctl disable aiccu.service

Wichtig hierbei ist, dass ihr AICCU nicht neustartet, wenn es crasht. SixXS droht damit, den Account zu deaktivieren, wenn man das zu oft versucht, siehe hierzu folgendes aus der Konfigurationsdatei /etc/aiccu.conf:

# Daemonize? (default: true)
# Set to false if you want to see any output
# When true output goes to syslog
#
# WARNING: never run AICCU from DaemonTools or a similar automated
# 'restart' tool/script. When AICCU does not start, it has a reason
# not to start which it gives on either the stdout or in the (sys)log
# file. The TIC server *will* automatically disable accounts which
# are detected to run in this mode.
#
daemonize true

Also Pfoten weg von der Restart-Direktive der Service-Files!

Valete.