IPv6

Grundlagen

AVM: IPv6 - Einführung
Elektronik Kompendium
IPv6-Grundlagen

IPv6 im LAN

IPv6 Kurs Teil 2: Stabile IPv6-Adressen im lokalen Netzwerk
Implementing IPv6 In A Home Network - Tips & Pitfalls

6in4 Tunnel

Anleitung zur Einrichtung eines 6in4-Tunnels in Tomato:
Get connected with IPv6
Achtung: bei dynamischer IP muss der Tunnel per DDNS aktualisiert werden. Tunnelbroker kann bei Tomato schon ausgewählt werden. Username ist nicht der Login-Name bei Tunnelbroker, sondern der kryptische String der auf der Main page bei "User ID" steht. Passwort findet man auf der Tunnelseite im Reiter "Advanced" als "Update Key". Hostname ist die numerische Tunnelnummer.
Wichtig: im Reiter "Advanced" muss die MTU angepasst werden. Sie darf nicht größer sein als die MTU des IPv4-Anschlusses (bei PPPoE meist 1472), und in Tomato muss beim Tunnel der gleiche Wert eingetragen werden.

IPv6 nativ beim DSL-Provider

M-net macht IPv6 über PPPoE. Die Adresszuweisung erfolgt über DHCPv6-PD (Prefix Delegation). Dabei wird ein /56 vergeben, aus dem auch die WAN-IP genommen werden muss. Eine explizite WAN-IP bekommt der Router von M-Net also nicht, weder per DHCPv6-IA_NA noch per SLAAC (s.a. Schnittstellenbeschreibung, hier ist nur der IPv6-Teil interessant, auch den AFTR sollte man ignorieren).

Dynamischer Prefix

IPv6 Dyn Prefix Problems
Idea: IPv6 Dynamic Prefix
IPv6-DynDNS für Hosts im Subnet unter OpenWRT mit feste-ip.net
Dynamische DNS-Service mit "verbundenen Hosts"

Portmapper

Björn's Techblog: Server hinter DS-Lite Anschluss betreiben

DDNS-Script

Custom DDNS-Script für Asuswrt-Merlin und nsupdate.info

#!/bin/sh
hostname='myhost.nsupdate.info'
token=''
device4='ppp0'
device6=''
file4=/jffs/ddns.addr4
file6=/jffs/ddns.addr6

[ -e $file4 ] && old4=`cat $file4`
[ -e $file6 ] && old6=`cat $file6`

if [ -n "$device6" ]; then
  device6="dev $device6"
fi

# Scheint etwas zu dauern bis die IPv6-Adresse geaendert ist
sleep 30
address4=$(ip -4 addr show $device4|sed -n 's/.*inet \([0-9.]\+\).*/\1/p')
address6=$(ip -6 addr list scope global $device6 | grep -v " fd" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)

if [ -e /usr/sbin/curl ]; then
  bin="curl -fsS"
elif [ -e /usr/sbin/wget ]; then
  bin="wget -O-"
else
  echo "neither curl nor wget found"
  exit 1
fi

if [ "$old4" = "$address4" ]; then
  echo "IPv4 address unchanged"
  ret4='0'
else
  echo "Changed IPv4 address to $address4"
  $bin "https://$hostname:$token@ipv4.nsupdate.info/nic/update"
  ret4="$?"
  if [ "$ret4" -eq 0 ]; then
    echo $address4 > $file4
  fi
fi

if [ "$old6" = "$address6" ]; then
  echo "IPv6 address unchanged"
  ret6='0'
else
  echo "Changed IPv6 address to $address6"
  $bin "https://$hostname:$token@ipv6.nsupdate.info/nic/update"
  ret6="$?"
  if [ "$ret6" -eq 0 ]; then
    echo $address6 > $file6
  fi
fi

# Rueckmeldung ob ok oder nicht
if [ "$ret4" -eq 0 -a "$ret6" -eq 0 ]; then
  echo "Update OK"
  /sbin/ddns_custom_updated 1
else
  echo "Update NOT OK"
  /sbin/ddns_custom_updated 0
fi