Migration auf IPv6
Unsere Aufgabe war es ein Netzwerk einzurichten welches aus 2 Routern besteht. Diese verbinden 2 Subnetze mit jeweils zwei IPv4 PCs und zwei IPv6 PCs. Jetzt wird einer der IPv4 PCs auf IPv6 migriert. Dabei darf die Konnektivität nicht in Mitleidenschaft gezogen werden.
Netzwerk einrichten
Zu Beginn haben wir auf allen Systemen Debian 6 installiert und diese wie auf obiger Grafik zu sehen ist, verkabelt. Dann mussten die richtigen Interfaces bei den Routern und Subnetrechnern an- bzw. ausgeschaltet werden. Ein ganzes Interface ausschalten ist mit: "ifconfig <Interfacename> down" möglich. Z.B.: "ifconfig eth1 down" schaltet das ganze Interface eth1 ab. Ein Interface wieder einschalten geht analog mit: "ifconfig <Interfacename> up".
Unsere Subnetrechner sind alle über eth0 an das Netzwerk angeschlossen. Die eth1 Schnittstellen der Subnetrechner sind aktuell nicht weiter verwendet. Die Router sind über eth0 an ihr lokales Subnetz angebunden und haben eine direkte Verbindung zum zweiten Router über eth1. Die eth2 Schnittstellen der Router sind aktuell nicht weiter verwendet.
IP-Adressen & Subnetze
Unser Netzwerk verfügt über drei Teilnetze: Subnetz 1: eth0 von Karow und Rechner die an eth0 angebunden sind (marzahn, buckow, treptow, britz) Subnetz 2: eth0 von lankwitz (alex, mitte, wedding, kudamm) Subnetz 3: eth1 von karow / lankwitz
Die Subnetze 1 und 2 enthalten IPv4 und IPv6 Schnittstellen. Das Subnetz 3 ist ein reines IPv4 Netz.
Nun vergeben wir manuell IP-Adressen.
Temporär können diese gesetzt werden mit:
- für IPv4: ifconfig <Interfacename> add <Adresse>
z.B.: ifconfig eth0 add 192.168.1.10
- für IPv6: ifconfig <Interfacename> inet6 add <Adresse>
z.B.: ifconfig eth0 inet6 add fc00::1:2c0:6cff:fe00:f010
Um IP Adressen fest zu vergeben, werden diese in der Datei /etc/network/interfaces eingetragen. Wie dies im Detail auszusehen hat ist den untenstehenden Configfiles ersichtlich.
Zudem sollte man wissen: Jedes Gerät besitzt automatisch eine IPv6 Adresse (link-local). Diese ist jedoch nur innerhalb des eigenen Subnetzes erreichbar und somit per Definition nicht von außen verfügbar. Deswegen ist es nötig manuell eine IPv6 Adresse (global) zu vergeben. Diese wird dann auch von den Routern geroutet.
Überschrift | Überschrift | Überschrift |
---|---|---|
Beispiel1 | Beispiel2 | Beispiel3 |
Beispiel4 | Beispiel5 | Beispiel6 |
Beispiel7 | Beispiel8 | Beispiel9 |
Wir haben uns für folgende IPv4 Adresskonfigurationen entschieden:
!! Subnetz 1 !! Subnetz 2 !! Karow !! Lankwitz | ||||
IPv4-Adresse | 192.168.1.X | 192.168.2.X | 172.16.1.1 | 172.16.1.2 |
Netzmaske | 255.255.255.0 | 255.255.255.0 | 255.255.0.0 | 255.255.0.0 |
Gateway | 192.168.1.1 | 192.168.2.1 | 172.16.1.2 | 172.16.1.1 |
Wir haben uns für folgende IPv6 Adresskonfigurationen entschieden:
... | Subnetz 1 | Subnetz 2 |
IPv6-Adresse | fc00::1:2c0:6cff:fe00:f0XX | fc00::2:1:2c0:6cff:fe00:f0XX |
Netzmaske | 64 | 64 |
Gateway | fc00::1:2c0:6cff:fe00:f001 | fc00::2:1:2c0:6cff:fe00:f001 |
Nameserver
Da jetzt die Rechner erreichbar sind, aber die Adressen eher unhandlich erscheinen, vergeben wir Namen und lassen diese durch einen Nameserver auflösen. Durch einen Eintrag in /etc/resolv.conf wird der Nameserver anhand seiner IP bekannt gemacht. Der Nameserver ist bind in Version 9.
Da jedes Subnetz einen Nameserver benötigt fungiert R1 sowie R2 als DNS. Um nicht selbst die Einstellungen von R1 auf R2 kopieren zu müssen hat R1 die Funktion eines Master-nameservers und R2 die eines Slave-nameservers. Ändert sich jetzt eine relevante Datei auf R1 wird eine Benachrichtigung (engl. notify) an R2 gesendet. Daraufhin kann dieser die benötigten neuen Dateien kopieren und in einem temporären Verzeichnis abspeichern. Die Aktualität der Files wird anhand einer Seriennummer entschieden. (s.u.)
Configfiles für den Nameserver
- /etc/bind/
.local
.options
Zonefiles (Name -> IP): chaos.local
Reverselookup (IP -> Name): 1. & 2. (v4)
0. & 0. (v6)
/etc/sysctl.conf uncommenting the line for net.ipv6.conf.all.forwarding
6in4 Tunnel
Da die beiden Router über IPv4 kommunizieren war es notwendig die IPv6 Pakete in IPv4 Pakete zu verpacken und nach dem Senden...
Dazu Tunnelinterface erzeugen (virtual device): Neuer Eintrag in der Datei /etc/network/interfaces mit dem Inhalt: auto sit1 iface sit0 inet6 static adress <6er Adresse> ... TODO !!!!!!!!
-------- -------- |<-------| 6in4 Tunnel |------->| |Router 1|o=====================o|Router 2| |------->|------IPv4 Netz--------|<-------| -------- -------- --------------- --------------- --------------- | | | | | | | Payload | | Payload | | Payload | | | | | | | --------------- --------------- --------------- | | | | | | | TCP/UDP Header|======>| TCP/UDP Header|======>| TCP/UDP Header| | | | | | | --------------- --------------- --------------- | | | | | | | IPv6 Header | | IPv6 Header | | IPv6 Header | | | | | | | --------------- =============== --------------- | | | IPv4 Header | | | ---------------
Quelldateien
/etc/host.conf
order hosts,bind multi on
/etc/resolv.conf
Karow & Lankwitz (router)
domain chaos.local search chaos.local nameserver 127.0.0.1
Britz (IPv6)
Buckow (IPv4)
Alex (IPv4)
Wedding (IPv6)
/etc/network/interfaces
Karow
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 192.168.1.1 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 127.0.0.1 dns-search chaos.local iface eth0 inet6 static address fc00::1:2c0:6cff:fe00:f001 netmask 64 #gateway fc00::1:1:2c0:6cff:fe00:f001 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers ::1 dns-search chaos.local auto 6in4 iface 6in4 inet6 v4tunnel address fc00::1:1:2c0:6cff:fe00:f001 netmask 64 endpoint 172.16.1.2 local 172.16.1.1 ttl 255 gateway fc00::1:1:2c0:6cff:fe00:f002 allow-hotplug eth1 iface eth1 inet static address 172.16.1.1 netmask 255.255.0.0 network 172.16.0.0 broadcast 172.16.255.255 gateway 172.16.1.2 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 127.0.0.1 dns-search chaos.local up ip -6 addr flush dev $IFACE || true
Lankwitz
# This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address 192.168.2.1 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 127.0.0.1 dns-search chaos.local iface eth0 inet6 static address fc00::2:1:2c0:6cff:fe00:f001 netmask 64 #gateway fc00::1:1:2c0:6cff:fe00:f002 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers ::1 dns-search chaos.local auto 6in4 iface 6in4 inet6 v4tunnel address fc00::1:1:2c0:6cff:fe00:f002 netmask 64 endpoint 172.16.1.1 local 172.16.1.2 ttl 255 gateway fc00::1:1:2c0:6cff:fe00:f001 allow-hotplug eth1 iface eth1 inet static address 172.16.1.2 netmask 255.255.0.0 network 172.16.0.0 broadcast 172.16.255.255 gateway 172.16.1.1 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 127.0.0.1 dns-search chaos.local up ip -6 addr flush dev $IFACE || true
Britz (IPv6)
Buckow (IPv4)
/etc/bind/chaos.local
Karow
$TTL 2D chaos.local. IN SOA karow root.chaos.local. ( 2011092603 ; serial 1D ; refresh 2H ; retry 1W ; expiry 2D ) ; minimum IN NS karow IN NS lankwitz karow IN A 192.168.1.1 IN AAAA fc00::0:1:2c0:6cff:fe00:f001 karowtunnel IN AAAA fc00::1:1:2c0:6cff:fe00:f001 marzahn IN A 192.168.1.10 marzahn4 IN A 192.168.1.10 buckow IN A 192.168.1.11 buckow4 IN A 192.168.1.11 treptow IN AAAA fc00::0:1:2c0:6cff:fe00:f012 treptow6 IN AAAA fc00::0:1:2c0:6cff:fe00:f012 britz IN AAAA fc00::0:1:2c0:6cff:fe00:f013 britz6 IN AAAA fc00::0:1:2c0:6cff:fe00:f013 lankwitz IN A 192.168.2.1 IN AAAA fc00::2:1:2c0:6cff:fe00:f001 lankwitztunnel IN AAAA fc00::1:1:2c0:6cff:fe00:f002 alex IN A 192.168.2.10 alex4 IN A 192.168.2.10 mitte IN A 192.168.2.11 mitte4 IN A 192.168.2.11 wedding IN AAAA fc00::2:1:2c0:6cff:fe00:f012 wedding6 IN AAAA fc00::2:1:2c0:6cff:fe00:f012 kudamm IN A 192.168.2.13 kudamm4 IN A 192.168.2.13
/etc/bind/named.conf
include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones";
/etc/bind/named.conf.options
options { directory "/var/cache/bind"; dnssec-enable no; notify yes; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
/etc/bind/named.conf.local
Karow
zone "chaos.local" { type master; file "/etc/bind/chaos.local"; allow-transfer { 172.16.1.2; }; }; zone "1.168.192.in-addr.arpa" { type master; file "/etc/bind/1.168.192.in-addr.arpa"; allow-transfer { 172.16.1.2; }; }; zone "2.168.192.in-addr.arpa" { type master; file "/etc/bind/2.168.192.in-addr.arpa"; allow-transfer { 172.16.1.2; }; }; zone "0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa" { type master; file "/etc/bind/0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa"; allow-transfer { 172.16.1.2; }; }; zone "0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.2.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa" { type master; file "/etc/bind/0.f.1.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.2.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa"; allow-transfer { 172.16.1.2; }; }; zone "0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.1.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa" { type master; file "/etc/bind/0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.1.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa"; allow-transfer { 172.16.1.2; }; };
Lankwitz
zone "chaos.local" { type slave; file "chaos.local.bak"; masters { 172.16.1.1; }; allow-notify { 172.16.1.1; }; }; zone "1.168.192.in-addr.arpa" { type slave; file "1.168.192.in-addr.arpa.bak"; masters { 172.16.1.1; }; allow-notify { 172.16.1.1; }; }; zone "2.168.192.in-addr.arpa" { type slave; file "2.168.192.in-addr.arpa.bak"; masters { 172.16.1.1; }; allow-notify { 172.16.1.1; }; }; zone "0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa" { type slave; file "0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa.bak"; masters { 172.16.1.1; }; allow-notify { 172.16.1.1; }; }; zone "0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.2.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa" { type slave; file "0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.2.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa.bak"; masters { 172.16.1.1; }; allow-notify { 172.16.1.1; }; }; zone "0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.1.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa" { type slave; file "0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.1.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa.bak"; masters { 172.16.1.1; }; allow-notify { 172.16.1.1; }; };
/etc/bind/1.168.192.in-addr.arpa
1.168.192.in-addr.arpa. IN SOA karow.chaos.local. root.chaos.local. ( 2011092204 ; serial 1D ; refresh 2H ; retry 1W ; expiry 2D ) ; minimum IN NS karow.chaos.local. IN NS lankwitz.chaos.local. 1 IN PTR karow.chaos.local. 10 IN PTR marzahn.chaos.local. 11 IN PTR buckow.chaos.local.
/etc/bind/2.168.192.in-addr.arpa
2.168.192.in-addr.arpa. IN SOA karow.chaos.local. root.chaos.local. ( 2011092204 ; serial 1D ; refresh 2H ; retry 1W ; expiry 2D ) ; minimum IN NS karow.chaos.local. IN NS lankwitz.chaos.local. 1 IN PTR lankwitz.chaos.local. 10 IN PTR alex.chaos.local. 11 IN PTR mitte.chaos.local. 13 IN PTR kudamm.chaos.local.
/etc/bind/0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa
$TTL 2D @ IN SOA 0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa. root.chaos.local. ( 2011092603 ; serial 1D ; refresh 2H ; retry 1W ; expiry 2D ) ; minimum IN NS karow.chaos.local. IN NS lankwitz.chaos.local. $ORIGIN 0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa. 1.0 IN PTR karow.chaos.local. 2.1 IN PTR treptow.chaos.local. 3.1 IN PTR britz.chaos.local.
/etc/bind/0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.1.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa
$TTL 2D @ IN SOA 0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.1.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa. root.chaos.local. ( 2011092603 ; serial 1D ; refresh 2H ; retry 1W ; expiry 2D ) ; minimum IN NS karow.chaos.local. IN NS lankwitz.chaos.local. $ORIGIN 0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.1.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa. 1.0 IN PTR karowtunnel.chaos.local. 2.0 IN PTR lankwitztunnel.chaos.local.
/etc/bind/0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.2.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa
$TTL 2D @ IN SOA 0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.2.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa. root.chaos.local. ( 2011092603 ; serial 1D ; refresh 2H ; retry 1W ; expiry 2D ) ; minimum IN NS karow.chaos.local. IN NS lankwitz.chaos.local. $ORIGIN 0.f.0.0.e.f.f.f.c.6.0.c.2.0.1.0.0.0.2.0.0.0.0.0.0.0.0.0.c.f.ip6.arpa. 1.0 IN PTR lankwitz.chaos.local. 2.1 IN PTR wedding.chaos.local.