/usr/home

just some random thoughts

pfSense, IPv6, Tunnelbroker.net und so

Nachdem mich das einrichten eines stabilen IPv6-Tunnels via Tunnelbroker.net einen ganzen Tag gekostet habe, hier kurz eine Zusammenfassung.

Ich habe als Router eine Maschine mit pfSense 2.1 und wähle mich über eine fritz!Box per PPPoE ins Telekom-Netz ein. Die Einwahl erledigt pfSense, die fritz!Box ist nur noch Modem.

Vorgegangen bin ich bei der Einrichtung nach dieser Anleitung. Allerdings musste ich beim erstellen der default Route anstatt der “Server IPv6 Address” die “Client IPv6 Address” benutzen, da pfSense nur diese zuließ (“IP not between border boundries”). Ich bin mir nicht ganz nicht, ob das ein Fehler in pfSense ist oder nicht, da ich in allen Anleitungen, die ich versucht habe dies so angeben. Kurz zusammengefasst:

Interfaces -> GIF -> HE.net:

Interfaces -> IPv6_TUNNEL:

System -> Routing -> IPV6_TUNNEL_TUNNELV6:

Nun kann man dem LAN Interface eine statische IP aus dem “Routed /64″ Netz geben – den Clients natürlich auch. Wenn man DHCPv6 verwendet, sollte man beachten, dass trotzdem Router Advertising nötig ist. Dieses muss auf “managed” gestellt werden, um den Clients mitzuteilen, dass sie DHCP verwenden sollen. Zumindest bei OS X Clients ist es so, andere Betriebssysteme habe ich noch nicht getestet.

Mein zweites Problem war, dass ich zwar alle möglichen Seiten per IPv6 pingen konnte, aber mit Ausnahme von Google keine im Browser aufrufen. Die Seite konnte einfach nie geladen werden, einen Timeout gab es aber auch nicht. Die Lösung des Problems war es die MTU sowie bei pfSense (Voreinstellung: 1280), als auch bei Tunnelbroker.net (Voreinstellung 1480) zu ändern. Zuerst hatte ich beides auf 1280 gesetzt. Um aber zumindest etwas Overhead zu vermeiden, teste ich mich langsam bis 1472 hoch. Der Grund liegt wohl darin, dass die IPv6 Pakete an meiner WAN Schnittstelle in PPP gekapselt werden müssen und dies durch den zusätzlichen Overhead durch den 6in4 Tunnel nicht klappt. Ping funktioniert, weil die IP-Pakete eines pings einfach viel zu klein sind um das Problem auszulösen.