Online.net: IPv6 unter Debian einrichten
Da IPv4 Adressen zur Neige gehen und man nun bei jedem ordentlichen Hoster ein /64 oder sogar /48 IPv6 Block bekommt, stellt sich die Frage warum man nicht diese Option nutzt, um für die Zukunft gerüstet zu sein.
Ich stelle hier nun eine Möglichkeit vor, mit dem ihr kinderleicht ein /48 IPv6 Block mit eurem online.net Server einrichtet.
Anforderungen
- online.net Server
- root SSH Login
Zuerst müsst ihr euch auf euren Server via SSH mit dem root
User aufschalten. Dafür könnt ihr z.B. PuTTY benutzen.
Anschließend erstellt ihr ein neues Script, das z.B ipv6.sh
heißt. Der Inhalt dieses Scripts sieht folgendermaßen aus:
#/bin/bash
DUID=$1
skill -9 dibbler-client
dpkg -P dibbler-client
rm -rvf /etc/dibbler /var/log/dibbler /var/lib/dibbler
apt-get install -y wide-dhcpv6-client vim-common tcpdump
/etc/init.d/wide-dhcpv6-client stop
echo 'profile default { script "/etc/wide-dhcpv6/dhcp6c-script"; };' > /etc/wide/dhcpv6/dhcp6c.conf
echo 'id-assoc pd { prefix-interface eth0 { }; };' >> /etc/wide-dhcpv6/dhcp6c.conf
echo 'interface eth0 { send ia-pd 0; };' >> /etc/wide-dhcpv6/dhcp6c.conf
echo $DUID | awk '{ gsub(":"," "); printf "0: 0a 00 %s\n", $0 }' | xxd -r > /var/lib/dhcpv6/dhcp6c_duid
/etc/init.d/wide-dhcpv6-client start
Um das Script ausführbar zu machen, müsst ihr die Dateirechte verändern:
chmod +x ipv6.sh
Nun braucht ihr die DUID des IPv6 Blocks aus dem Controlpanel. Geht auf die Serverliste, wählt euren Server aus und klickt auf den IPv6 Reiter auf der linken Seite.
Sucht oder erstellt euch einen Block und kopiert die DUID.
Anschließen führt ihr das Script mit folgendem Befehl aus:
./ipv6.sh DUID
Allerdings reicht das Script selbst nicht aus, also müsst ihr als nächstes den richtigen Gateway vom Router finden. Am Besten funktioniert das mit
tcpdump -i eth0 -n -s 4000 -v ip6
Um nun die Gateway IP zu finden muss man nach einer Zeile, die router advertisement
beinhaltet suchen.
In meinem Fall wäre es
15:22:16.257672 IP6 (class 0xe0, hlim 255, next-header ICMPv6 (58) payload length: 32) fe80::e34f:6de3:bd24:42ff > ff02::1: [icmp6 sum ok] ICMP6, router advertisement, length 32
In diesem Fall ist fe80::e34f:6de3:bd24:42ff
die Gateway IP.
Öffnet /etc/network/interfaces
mit eurem Lieblingseditor und tragt folgende Einstellungen ein:
iface eth0 inet6 static
address DEIN_IPv6_BLOCK::1
netmask 48
gateway DEINE_GATEWAY_IP
accept_ra 1
Damit der Linuxkernel noch die Anfragen annimmt und weiterschickt, muss folgendes in die /etc/sysctl.conf
geschrieben werden:
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.eth0.accept_ra=1
Anschließend mit sysctl -p
die Datei neu einlesen.
Um den DHCPv6 Client bei jedem Neustart des Server zu starten, tragt einfach folgendes in eure /etc/rc.local
ein:
/etc/init.d/wide-dhcpv6-client restart
ifdown eth0 && ifup eth0
Nun sollte alles funktionieren! Startet euren Netzwerkadapter mit ifdown eth0 && ifup eth0
neu und pingt eine IPv6 fähige IP an:
magic@ffmwu:~$ ping6 -c4 ipv6.google.com
PING google.com(par03s13-in-x08.1e100.net) 56 data bytes
64 bytes from par03s13-in-x08.1e100.net: icmp_seq=1 ttl=58 time=0.913 ms
64 bytes from par03s13-in-x08.1e100.net: icmp_seq=2 ttl=58 time=0.999 ms
64 bytes from par03s13-in-x08.1e100.net: icmp_seq=3 ttl=58 time=1.42 ms
64 bytes from par03s13-in-x08.1e100.net: icmp_seq=4 ttl=58 time=1.01 ms
--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 0.913/1.086/1.420/0.197 ms
Wichtig für das Ganze ist, dass Ihr in eurer Firewall Port 546 und 547 UDP freigibt