auf meiner nslu2 läuft u.a. ein ipv6-gateway.

hier nun eine kleine anleitung, wie man das zum laufen bringt:

software & sonstiges

als erstes bei sixxs einen ipv6-tunnel beantragen (hint: nutzt AYIYA, das funzt auch hinter NATs).

wenn der angekommen ist: apt-get install radvd aiccu

bei den fragen von debconf einfach eure daten eintragen, fertig.

dann /etc/init.d/aiccu start. jetzt sollte in ifconfig sixxs was erscheinen und ping6 ipv6.google.com sollte ungefähr so aussehen:

MyNameIsSLUG:/# ping6 ipv6.google.com
PING ipv6.google.com(2001:4860:0:1001::68) 56 data bytes
64 bytes from 2001:4860:0:1001::68: icmp_seq=1 ttl=57 time=46.2 ms
64 bytes from 2001:4860:0:1001::68: icmp_seq=2 ttl=57 time=46.8 ms
64 bytes from 2001:4860:0:1001::68: icmp_seq=3 ttl=57 time=47.4 ms
64 bytes from 2001:4860:0:1001::68: icmp_seq=4 ttl=57 time=46.7 ms
64 bytes from 2001:4860:0:1001::68: icmp_seq=5 ttl=57 time=46.3 ms
64 bytes from 2001:4860:0:1001::68: icmp_seq=6 ttl=57 time=71.4 ms

— ipv6.google.com ping statistics —
6 packets transmitted, 6 received, 0% packet loss, time 5049ms
rtt min/avg/max/mdev = 46.226/50.826/71.403/9.214 ms

tut es nicht? bitte hier als kommentar anhängen…bei mir lief es immer, deswegen kann ich nix zu möglichen fehlern sagen^^

subnet & gateway

als erstes das subnet beantragen, als endpoint euren ipv6 endpoint nehmen (nur wenn ihr mehrere habt).

wenn ihr euer subnet habt, folgendes in die /etc/radvd.conf:
MyNameIsSLUG:/# cat /etc/radvd.conf
interface eth0 {
AdvSendAdvert on;
MinRtrAdvInterval 3;
MaxRtrAdvInterval 10;
prefix $prefix {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
};
dabei sei prefix das was bei https://www.sixxs.net/home/routeinfo/?XXXX als “Prefix” erscheint, nur anstelle von /48 /64 nehmen; so wird 2001:a60:f062::/48 zu 2001:a60:f062::/64.

außerdem braucht eth0 noch eine ipv6-adresse: ip -6 addr add $prefix dev eth0; hierbei sei $prefix die subnet-maske, bei der hinter dem letzten ziffernblock 0001 geschrieben wird; hier wird aus 2001:a60:f062::/64 2001:a60:f062:0001::/48

jetzt wollen wir allen rechnern im netz mitteilen, dass wir ein ipv6-gate sind:
/etc/init.d/radvd start.

häufigste fehlerquelle hier: radvd beklagt sich über fehlendes forward. einfach zu beheben mit sysctl -w net.ipv6.conf.all.forwarding=1.

so, wie das momentan aufgebaut ist, sind aber alle maschinen via ipv6 ohne jede firewall im netz und weltweit erreich-/exploitbar. daher greifen wir kurzerhand zu iptables:
ip6tables -A FORWARD -i sixxs -p tcp --syn -j REJECT
ip6tables -A INPUT -i sixxs -p tcp --syn -j REJECT

das erste kommando schützt alle rechner im subnet (FORWARD), das zweite die nslu/das gateway (INPUT). alle rechner im netzwerk sollten jetzt bei aktivem ipv6-stack ping6 ipv6.google.com ausführen können und damit ipv6-fähig sein :)

das skript

um das vereinfachen vom ipv6-start einfacher zu machen, folgendes als /root/setup_ipv6gate.sh abspeichern und die adresse in zeile 3 anpassen:

MyNameIsSLUG:/proc# cat /root/setup_ipv6gate.sh
/etc/init.d/aiccu start
/etc/init.d/radvd start
ip -6 addr add $prefix dev eth0
ip6tables -A FORWARD -i sixxs -p tcp --syn -j REJECT
ip6tables -A INPUT -i sixxs -p tcp --syn -j REJECT

many thanks to berniv6 et al. for debugging and iptables stuff, you rock :)