next up previous contents
Nächste Seite: 5 IPv6 Routing mit Aufwärts: Inhalt Vorherige Seite: 3 Vorbereitungen   Inhalt

Unterabschnitte

4 Linux basierte Routingfunktionalität

In einem ersten Versuch soll ein Linux-System als IPv6-Router agieren. Dazu wird ein kleines Testnetz aufgebaut, in dem Clients mit verschiedenen Betriebssystemen eingesetzt werden und mit Hilfe eines Domino LAN-Analyzers der Netzverkehr aufgezeichnet und analysiert werden kann.

1 Aufbau des Netzwerks

Der Aufbau des Netzes ist in Abbildung 4.1 ersichtlich. Es besteht aus zwei Netzsegmenten, welche über den Linux-Router verbunden sind. Das eine Segment (Subnetz B) besteht aus dem zweiten Linux-PC, am anderen (Subnetz A) sind über einen Ethernet-Hub die Windows- und Mac OS X-Clients angeschlossen. Ebenfalls am Hub angeschlossen ist der Domino LAN-Analyzer, der zur Aufzeichnung des Netzverkehrs dient.

Der Windows-PC ist als Dualboot-System mit einer Windows 2000 Professional sowie einer Windows 2003 Advanced Server Installation aufgesetzt.

Abbildung 4.1: Linux Routing: Aufbau des Netzwerks
Image images/net-routing-linux.png

2 Manuelle Adresskonfiguration

1 Konfiguration der Knoten

Um die IPv6-Adressen gemäss Abbildung 4.1 manuell zu vergeben, sind auf den verschiedenen Geräten folgende Schritte vorzunehmen:

Linux:
Die Konfiguration erfolgt mit dem Befehl ip aus dem iputils-Paket. Damit werden die beiden Interfaces auf dem Linux-Router konfiguriert:

# ip -6 addr add fec0::1/64 dev eth0
# ip -6 addr add fec1::1/64 dev eth1

Gegebenenfalls müssen die Interfaces noch aktiviert werden:

# ip link set dev eth0 up
# ip link set dev eth1 up

Genauso wird auch der Linux-Client eingerichtet. Zusätzlich muss hier noch eine Route auf das Subnetz fec0::/64 gesetzt werden:

# ip -6 addr add fec1::2/64 dev eth1
# ip -6 route add fec0::/64 via fec1::1

Auf dem Linux-Router hingegen sind keine zusätzlichen Routing-Einträge nötig, dafür muss hier noch mit überprüft werden, ob IP-Forwarding bereits aktiv ist:

#cat /proc/sys/net/ipv6/conf/all/forwarding

Wenn dieser Befehl eine 1 zurückliefert, ist IP-Forwarding aktiviert. Andernfalls muss dies mit echo 1 > /proc/sys/net/ipv6/conf/all/forwarding nachgeholt werden.

Windows 2000:
Zuerst muss mit dem Befehl ipv6 if die Interface-Nummer des LAN-Anschlusses bestimmt werden:

...
\textbf{Interface 8} (site 1): LAN-Verbindung
  uses Neighbor Discovery
  link-level address: 00-01-02-8f-f8-d8
    preferred address fe80::201:2ff:fe8f:f8d8, infinite/infinite
    multicast address ff02::1, 1 refs, not reportable
    multicast address ff02::1:ff8f:f8d8, 1 refs, last reporter
    multicast address ff02::1:ff00:3, 1 refs, last reporter
  link MTU 1500 (true link MTU 1500)
  current hop limit 128
  reachable time 43500ms (base 30000ms)
  retransmission interval 1000ms
  DAD transmits 1
Interface 2 (site 0): Tunnel Pseudo-Interface
...

In diesem Fall lautet die Interface-Nummer 8. Nun muss zuerst die IPv6-Adresse aktiviert und anschliessend dem Interface 8 zugeordnet werden. Danach kann die Route auf das zweite Subnetz via den Linux-Router gesetzt werden:

C:\> ipv6 adu 8/fec0::3
C:\> ipv6 rtu fec0::/64 8
C:\> ipv6 rtu fec1::/64 8/fec0::1

Windows 2003:
Die Konfiguration erfolgt über die Netsh-Konsole, die mit dem Befehl netsh und anschliessend interface ipv6 aktiviert wird. Zunächst muss auch hier die richtige Interface-Nummer bestimmt werden. Dazu gibt man den Befehl show interface auf der Kommandozeile ein. Die Ausgabe sieht wie folgt aus:

netsh interface ipv6>show interface
Der aktive Status wird abgefragt...

Idx  Met   MTU    Status        Name
---  ----  -----  ------------  -----
  \textbf{5}     0   1500  Verbunden     LAN-Verbindung
  3     1   1280  Verbunden     6to4 Pseudo-Interface
  2     1   1280  Verbunden     Automatic Tunneling Pseudo-Interface
  1     0   1500  Verbunden     Loopback Pseudo-Interface

Die gesuchte Interface-Nummer lautet also 5. Nun kann die IPv6-Adresse und die Routen auf die beiden Subnetze gesetzt werden:

netsh interface ipv6>add address 5 fec0::3
netsh interface ipv6>add route fec0::/64 5
netsh interface ipv6>add route fec1::/64 5 fec0::1

Mac OS X:
Die Konfiguration erfolgt mit Hilfe der Kommandozeilentools ifconfig und route. Gegebenenfalls muss vorher noch der IPv6-Support mit dem Befehl ipv6 -a eingeschaltet werden.

# ifconfig en0 inet6 fec0::2/64
# route add -net -inet6 fec1:: -prefixlen 64 -gateway fec0::1

2 Netzverkehr bei Inbetriebnahme

Bei Inbetriebnahme der Netzwerkinterfaces laufen auf IPv6-Ebene einige Vorgänge ab, die hier nun näher betrachtet werden. Diese Phase läuft nicht bei allen Betriebssystemen genau gleich ab, ist jedoch grundsätzlich vergleichbar. Für diesen Test wird der Windows-PC mit Windows 2000 betrieben.

Es werden nun die einzelnen Ethernet-Frames genauer betrachtet, welche während der Inbetriebnahme der einzelnen Knoten über das Subnetz A (vgl. Abb. 4.1) ausgetauscht und vom Domino LAN-Analyzer aufgezeichnet wurden.


1 Inbetriebnahme des Linux PC 1

Frame 1

Das erste Frame enthält ein MLDv2 Paket. Es dient dazu, etwaigen Multicast-Routern im Netzsegment die Präsenz eines neuen Hosts zu melden. Da es sich bei MLDv2 noch nicht um einen offiziellen Standard handelt, können die gängigen Analyse-Programme die Pakete noch nicht entsprechend aufschlüsseln. Man erkennt aber im Datenteil, dass die beiden Multicast-Adressen ff02::1:ff87:1754 und ff02::2 enthalten sind (Zeilen 25-28). Der Linux-Host meldet sich also korrekt mit seiner Link-Local-Solicited-Node-Multicast-Adresse sowie als Router im lokalen Segment.

Ethernet II
    Destination: 33:33:00:00:00:16 (33:33:00:00:00:16)
    Source: 00:01:02:87:17:54 (BBN_87:17:54)
    Type: IPv6 (0x86dd)
    Trailer: 953641EC
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 56
    Next header: IPv6 hop-by-hop option (0x00)
    Hop limit: 1
    Source address: ::
    Destination address: ff02::16
Hop-by-hop Option Header 
    Next header: ICMPv6 (0x3a)
    Length: 0 (8 bytes)
    Router alert: MLD (4 bytes)
    PadN: 2 bytes
Internet Control Message Protocol v6
    Type: 206 (Unknown) ### MLDv2 (Listener Report)
    Code: 0 (Unknown)
    Checksum: 0x1595 (correct)
Data (40 bytes)

0000  04 00 00 00 \textbf{ff 02 00 00 00 00 00 00 00 00 00 01}
0010  \textbf{ff 87 17 54} 04 00 00 00 \textbf{ff 02 00 00 00 00 00 00}
0020  \textbf{00 00 00 00 00 00 00 02}

Frame 2

Als nächstes folgt die Duplicate Address Detection gemäss RFC 2462 (21). Da das ARP in IPv6 durch entsprechende ICMPv6-Meldungen abgelöst wurde, muss vor Inbetriebnahme der Link-Local-Adresse sichergestellt werden, dass diese im lokalen Netz noch nicht verwendet wird. Dazu sendet der Host eine Multicast ICMPv6-Nachricht an die Solicited-Node-Multicast-Adresse ff02::1:ff87:1754 (Zeile 14), die er aus seiner MAC-Adresse bildet, und sucht über eine Neighbor Solicitation Nachricht andere Hosts mit der selben Link-Local-Adresse (Zeile 19). Erhält er innerhalb einer gewissen Zeitspanne keine Antwort auf diese Anfrage, so kann er annehmen, dass die Adresse verfügbar ist.

Gut zu erkennen ist auch, wie die IPv6-Multicast-Adresse in die entsprechende Multicast-MAC-Adresse 33:33:ff:87:17:54 übersetzt wird (Zeile 2).

Ethernet II
    Destination: \textbf{33:33:ff:87:17:54} (33:33:ff:87:17:54)
    Source: 00:01:02:87:17:54 (BBN_87:17:54)
    Type: IPv6 (0x86dd)
    Trailer: AB5EB6EC
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 24
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    Source address: ::
    Destination address: \textbf{ff02::1:ff87:1754}
Internet Control Message Protocol v6
    Type: 135 (Neighbor solicitation)
    Code: 0
    Checksum: 0x4970 (correct)
    \textbf{Target: fe80::201:2ff:fe87:1754}

Frame 3 und 4

In Frame 3 und 4 sind wiederum MLDv2-Pakete enthalten, welche nach dem Setzen der Site-Local-Adresse fec0::1 die neuen Multicast-Adressen im Netz bekannt machen. Diese Pakete sind analog zum ersten Frame und hier deshalb nicht mehr explizit aufgeführt.

Frame 5

Für die Site-Local-Adresse wird ebenfalls wieder eine Duplicate Address Detection durchgeführt, die genau gleich wie in Frame 2 aussieht.

2 Inbetriebnahme des Windows 2000 Clients

Frame 6 und 7

Speziell an Windows 2000 ist, dass es standardmässig ein 6-over-4 Virtual Interface konfiguriert, für welches es eine Link-Local-Adresse vergibt, die es aus der IPv4-Adresse des Links bildet (hier: fe80::a055:a994, Zeile 31). Für diese Adresse sendet es eine Router Solicitation Nachricht (Frame 6) um etwaige Router im lokalen Netz zu einer Router Advertisement Nachricht zu bewegen. Gleich danach versendet es eine weitere Router Solicitation Nachricht (Frame 7) für die aus der MAC-Adresse gebildeten Link-Local-Adresse.

Alle IP-Pakete des 6-over-4 Virtual Interface sind 6-over-4 Pakete, d. h. die IPv6-Pakete werden mit einem zusätzlichen IPv4-Header versehen, der als Protokoll IPv6 (0x29) angibt (Zeile 20) und mappt die IPv6-Multicast-Adressen auf entsprechende IPv4-Multicast-Adressen (Zeile 23).

Windows 2000 führt keine Duplicate Address Detection durch, potentielle Adresskonflikte werden somit nicht erkannt und könnten zu Problemen in der Netzwerkkommunikation führen.

Ethernet II
    Destination: 01:00:5e:40:00:02 (01:00:5e:40:00:02)
    Source: 00:01:02:8f:f8:d8 (BBN_8f:f8:d8)
    Type: IP (0x0800)
    Trailer: A3DF1E5B
Internet Protocol, Src Addr: 160.85.169.148, Dst Addr: 239.192.0.2
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 76
    Identification: 0x031f
    Flags: 0x00
        .0.. = Don't fragment: Not set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 16
    \textbf{Protocol: IPv6 (0x29)}
    Header checksum: 0x6dbe (correct)
    Source: 160.85.169.148 (160.85.169.148)
    \textbf{Destination: 239.192.0.2 (239.192.0.2)}
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 16
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    \textbf{Source address: fe80::a055:a994}
    Destination address: ff02::2
Internet Control Message Protocol v6
    Type: 133 (Router solicitation)
    Code: 0
    Checksum: 0xe859 (correct)
    ICMPv6 options
        Type: 1 (Source link-layer address)
        Length: 8 bytes (1)
        Link-layer address: 00:00:a0:55:a9:94
Ethernet II
    Destination: 33:33:00:00:00:02 (33:33:00:00:00:02)
    Source: 00:01:02:8f:f8:d8 (BBN_8f:f8:d8)
    Type: IPv6 (0x86dd)
    Trailer: 9EA5D3E5
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 16
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    Source address: fe80::201:2ff:fe8f:f8d8
    Destination address: ff02::2
Internet Control Message Protocol v6
    Type: 133 (Router solicitation)
    Code: 0
    Checksum: 0x845c (correct)
    ICMPv6 options
        Type: 1 (Source link-layer address)
        Length: 8 bytes (1)
        Link-layer address: 00:01:02:8f:f8:d8

Frame 8 und 9

Als nächstes gibt auch Windows 2000 mit Hilfe des Multicast Listener Discovery Mechanismus seine Multicast-Adressen im Netz bekannt, dies wiederum für die 6-over-4-Adresse sowie die eigentliche Link-Local-Adresse.

Ethernet II
    Destination: 01:00:5e:40:a9:94 (01:00:5e:40:a9:94)
    Source: 00:01:02:8f:f8:d8 (BBN_8f:f8:d8)
    Type: IP (0x0800)
    Trailer: B2966893
Internet Protocol, Src Addr: 160.85.169.148, Dst Addr: 239.192.169.148
    Version: 4
    Header length: 20 bytes
    Differentiated Services Field: 0x00 (DSCP 0x00: Default; ECN: 0x00)
        0000 00.. = Differentiated Services Codepoint: Default (0x00)
        .... ..0. = ECN-Capable Transport (ECT): 0
        .... ...0 = ECN-CE: 0
    Total Length: 92
    Identification: 0x0326
    Flags: 0x00
        .0.. = Don't fragment: Not set
        ..0. = More fragments: Not set
    Fragment offset: 0
    Time to live: 16
    Protocol: IPv6 (0x29)
    Header checksum: 0xc414 (correct)
    Source: 160.85.169.148 (160.85.169.148)
    Destination: 239.192.169.148 (239.192.169.148)
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 32
    Next header: IPv6 hop-by-hop option (0x00)
    Hop limit: 1
    Source address: fe80::a055:a994
    Destination address: ff02::1:ff55:a994
Hop-by-hop Option Header 
    Next header: ICMPv6 (0x3a)
    Length: 0 (8 bytes)
    Router alert: MLD (4 bytes)
    PadN: 2 bytes
Internet Control Message Protocol v6
    Type: 131 (Multicast listener report)
    Code: 0
    Checksum: 0xe464 (correct)
    Maximum response delay: 0
    Multicast Address: ff02::1:ff55:a994
Ethernet II
    Destination: 33:33:ff:8f:f8:d8 (33:33:ff:8f:f8:d8)
    Source: 00:01:02:8f:f8:d8 (BBN_8f:f8:d8)
    Type: IPv6 (0x86dd)
    Trailer: E898FEC2
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 32
    Next header: IPv6 hop-by-hop option (0x00)
    Hop limit: 1
    Source address: fe80::201:2ff:fe8f:f8d8
    Destination address: ff02::1:ff8f:f8d8
Hop-by-hop Option Header 
    Next header: ICMPv6 (0x3a)
    Length: 0 (8 bytes)
    Router alert: MLD (4 bytes)
    PadN: 2 bytes
Internet Control Message Protocol v6
    Type: 131 (Multicast listener report)
    Code: 0
    Checksum: 0x92e9 (correct)
    Maximum response delay: 0
    Multicast Address: ff02::1:ff8f:f8d8

Frame 10 und 11

Die beiden Frames 10 und 11 sind identisch zu den Router Solicitation Nachrichten in den Frames 6 und 7.

Frame 12

Nach der Konfiguration der Site-Local-Adresse fec0::3 wird wieder eine MLD-Nachricht abgesetzt um die zusätzliche Multicast-Adresse im Netz bekanntzugeben.

Ethernet II
    Destination: 33:33:ff:00:00:03 (33:33:ff:00:00:03)
    Source: 00:01:02:8f:f8:d8 (BBN_8f:f8:d8)
    Type: IPv6 (0x86dd)
    Trailer: 568010C3
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 32
    Next header: IPv6 hop-by-hop option (0x00)
    Hop limit: 1
    Source address: fe80::201:2ff:fe8f:f8d8
    Destination address: ff02::1:ff00:3
Hop-by-hop Option Header 
    Next header: ICMPv6 (0x3a)
    Length: 0 (8 bytes)
    Router alert: MLD (4 bytes)
    PadN: 2 bytes
Internet Control Message Protocol v6
    Type: 131 (Multicast listener report)
    Code: 0
    Checksum: 0x85b3 (correct)
    Maximum response delay: 0
    Multicast Address: ff02::1:ff00:3

Frame 13

Praktisch zeitgleich wird nun für die Site-Local-Adresse eine Duplicate Address Detection durchgeführt.

Ethernet II
    Destination: 33:33:ff:00:00:03 (33:33:ff:00:00:03)
    Source: 00:01:02:8f:f8:d8 (BBN_8f:f8:d8)
    Type: IPv6 (0x86dd)
    Trailer: 36A3FF75
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 24
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    Source address: ::
    Destination address: ff02::1:ff00:3
Internet Control Message Protocol v6
    Type: 135 (Neighbor solicitation)
    Code: 0
    Checksum: 0x7be1 (correct)
    Target: fec0::3 (fec0::3)

Frame 14

Frame 14 ist identisch mit Frame 12 (Multicast Listener Report für die Site-Local-Multicast-Adresse ff02::1:ff00:3).

3 Inbetriebnahme des Mac OS X Clients

Frame 15 und 16

Auch Mac OS X beginnt als erstes mit zwei Multicast Discovery Report Nachrichten ohne zuerst das Ergebnis der Duplicate Address Discovery aus dem praktisch zeitgleich abgesetzten Frame 17 abzuwarten. Damit verhält sich auch Mac OS X nicht ganz regelkonform.

Ethernet II
    Destination: 33:33:ff:4e:5c:8c (33:33:ff:4e:5c:8c)
    Source: 00:03:93:4e:5c:8c (Apple_4e:5c:8c)
    Type: IPv6 (0x86dd)
    Trailer: 79099CDE
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 32
    Next header: IPv6 hop-by-hop option (0x00)
    Hop limit: 1
    Source address: fe80::203:93ff:fe4e:5c8c
    Destination address: ff02::1:ff4e:5c8c
Hop-by-hop Option Header 
    Next header: ICMPv6 (0x3a)
    Length: 0 (8 bytes)
    PadN: 2 bytes
    Router alert: MLD (4 bytes)
Internet Control Message Protocol v6
    Type: 131 (Multicast listener report)
    Code: 0
    Checksum: 0xd78f (correct)
    Maximum response delay: 0
    Multicast Address: ff02::1:ff4e:5c8c

Frame 17

Dieses Frame führt die Duplicate Address Detection für die Link-Local-Adresse durch.

Ethernet II
    Destination: 33:33:ff:4e:5c:8c (33:33:ff:4e:5c:8c)
    Source: 00:03:93:4e:5c:8c (Apple_4e:5c:8c)
    Type: IPv6 (0x86dd)
    Trailer: 9DB1DD6C
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 24
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    Source address: ::
    Destination address: ff02::1:ff4e:5c8c
Internet Control Message Protocol v6
    Type: 135 (Neighbor solicitation)
    Code: 0
    Checksum: 0x2e6f (correct)
    Target: fe80::203:93ff:fe4e:5c8c (fe80::203:93ff:fe4e:5c8c)

Frame 18

Dieses ist eine Wiederholung der MLD-Nachricht aus Frame 15.

Frame 19

Auch bei der Inbetriebnahme der Site-Local-Adresse fec0::2 wird nicht das Ergebnis der Duplicate Address Detection abgewartet sondern gleich eine MLD-Nachricht für die entsprechende Multicast-Adresse ff02::1:ff00:2 abgesetzt. Da hier als Quelladresse jedoch die Link-Local-Adresse zum Einsatz kommt (Zeile 13), ist dies nicht sehr problematisch.

Ethernet II
    Destination: 33:33:ff:00:00:02 (33:33:ff:00:00:02)
    Source: 00:03:93:4e:5c:8c (Apple_4e:5c:8c)
    Type: IPv6 (0x86dd)
    Trailer: AE194134
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 32
    Next header: IPv6 hop-by-hop option (0x00)
    Hop limit: 1
    \textbf{Source address: fe80::203:93ff:fe4e:5c8c}
    Destination address: ff02::1:ff00:2
Hop-by-hop Option Header 
    Next header: ICMPv6 (0x3a)
    Length: 0 (8 bytes)
    PadN: 2 bytes
    Router alert: MLD (4 bytes)
Internet Control Message Protocol v6
    Type: 131 (Multicast listener report)
    Code: 0
    Checksum: 0x9140 (correct)
    Maximum response delay: 0
    Multicast Address: ff02::1:ff00:2

Frame 20

In diesem Frame folgt nun die Duplicate Address Detection für die neu zugewiesene Site-Local-Adresse.

Ethernet II
    Destination: 33:33:ff:00:00:02 (33:33:ff:00:00:02)
    Source: 00:03:93:4e:5c:8c (Apple_4e:5c:8c)
    Type: IPv6 (0x86dd)
    Trailer: DC51E31D
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 24
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    Source address: ::
    Destination address: ff02::1:ff00:2
Internet Control Message Protocol v6
    Type: 135 (Neighbor solicitation)
    Code: 0
    Checksum: 0x7be3 (correct)
    Target: fec0::2 (fec0::2)

Frame 21

Zum Schluss folgt nochmals eine zu Frame 19 identische MLD-Nachricht.

3 Autokonfiguration

Als nächstes wird das selbe Netzwerk (Abb. 4.1) mit Autokonfiguration betrieben. Dazu wird der Linux-Router so konfiguriert, dass er entsprechende Routing Advertisement Nachrichten verschickt. Die Clients bekommen so automatisch eine IPv6-Adresse zugewiesen.

1 Konfiguration des Linux-Routers

Auf dem Linux-Router muss eine Software installiert werden, welche das Routing Advertisement übernimmt. Dazu stehen für Debian 3.0 die Pakete Radvd (Router Advertisement Daemon) und Zebra (A GPL'd, BGP/OSPF/RIP capable routing daemon) zur Verfügung. Da für die späteren Versuche ein Routing Daemon benötigt wird, empfiehlt sich die Installation von Zebra (bei Debian mit apt-get install zebra).

Zebra muss erst für das Routing Advertisement konfiguriert werden. Ausserdem werden die IPv6-Adressen des Linux-Routers manuell konfiguriert. Dafür sind folgende Einträge in zebra.conf notwendig:

interface eth0
  ipv6 address fec0::1/64
  ipv6 nd send-ra
  ipv6 nd prefix-advertisement fec0::/64
    
interface eth1
  ipv6 address fec1::1/64
  ipv6 nd send-ra
  ipv6 nd prefix-advertisement fec1::/64

Mit dieser Konfiguration antwortet der Linux-Router auf beiden Ethernet-Interfaces auf Router Solicitation Anfragen und sendet periodisch Router Advertisements.

Nun muss noch sichergestellt werden, dass der Zebra Daemon auch wirklich gestartet wird. Dies geschieht über die Zeile zebra=yes in /etc/zebra/daemons. Danach wird Zebra mit /etc/inet.d/zebra restart neu gestartet.

2 Netzverkehr bei Inbetriebnahme

1 Inbetriebnahme des Linux PC 1

Nachdem Zebra gestartet wird, versendet der Linux-Router sofort eine Router Advertisement Nachricht auf die Multicast-Adresse aller Hosts im Segment (Zeile 14), in welcher er den Präfix fec0:: (Zeile 39) mit der Präfix-Länge 64 (Zeile 31) anbietet.

Ethernet II
    Destination: 33:33:00:00:00:01 (33:33:00:00:00:01)
    Source: 00:01:02:87:17:54 (BBN_87:17:54)
    Type: IPv6 (0x86dd)
    Trailer: B6CF4EE0
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 56
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    Source address: fe80::201:2ff:fe87:1754
    \textbf{Destination address: ff02::1}
Internet Control Message Protocol v6
    Type: 134 (Router advertisement)
    Code: 0
    Checksum: 0xf510 (correct)
    Cur hop limit: 64
    Flags: 0x00
        0... .... = Not managed
        .0.. .... = Not other
        ..0. .... = Not Home Agent
        ...0 0... = Router preference: Medium
    Router lifetime: 1800
    Reachable time: 0
    Retrans time: 0
    ICMPv6 options
        Type: 3 (Prefix information)
        Length: 32 bytes (4)
        \textbf{Prefix length: 64}
        Flags: 0xc0
            1... .... = Onlink
            .1.. .... = Auto
            ..0. .... = Not router address
            ...0 .... = Not site prefix
        Valid lifetime: 0x00278d00
        Preferred lifetime: 0x00093a80
        \textbf{Prefix: fec0::}
    ICMPv6 options
        Type: 1 (Source link-layer address)
        Length: 8 bytes (1)
        Link-layer address: 00:01:02:87:17:54

2 Inbetriebnahme des Windows 2003 PC

Nachdem auf dem Windows PC das LAN-Interface aktiviert wird, führt er zunächst die selben Schritte wie bei der manuellen Variante durch. Zunächst erfolgt ein Multicast Listener Report und gleich danach folgt eine Router Solicitation Nachricht:

Ethernet II
    Destination: 33:33:00:00:00:02 (33:33:00:00:00:02)
    Source: 00:01:02:8f:f8:d8 (BBN_8f:f8:d8)
    Type: IPv6 (0x86dd)
    Trailer: 9EA5D3E5
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 16
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    Source address: fe80::201:2ff:fe8f:f8d8
    Destination address: ff02::2
Internet Control Message Protocol v6
    Type: 133 (Router solicitation)
    Code: 0
    Checksum: 0x845c (correct)
    ICMPv6 options
        Type: 1 (Source link-layer address)
        Length: 8 bytes (1)
        Link-layer address: 00:01:02:8f:f8:d8

Die Antwort des Linux-Routers (Router Advertisement) folgt unmittelbar:

Ethernet II
    Destination: 33:33:00:00:00:01 (33:33:00:00:00:01)
    Source: 00:01:02:87:17:54 (BBN_87:17:54)
    Type: IPv6 (0x86dd)
    Trailer: B6CF4EE0
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 56
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    Source address: fe80::201:2ff:fe87:1754
    Destination address: ff02::1
Internet Control Message Protocol v6
    Type: 134 (Router advertisement)
    Code: 0
    Checksum: 0xf510 (correct)
    Cur hop limit: 64
    Flags: 0x00
        0... .... = Not managed
        .0.. .... = Not other
        ..0. .... = Not Home Agent
        ...0 0... = Router preference: Medium
    Router lifetime: 1800
    Reachable time: 0
    Retrans time: 0
    ICMPv6 options
        Type: 3 (Prefix information)
        Length: 32 bytes (4)
        Prefix length: 64
        Flags: 0xc0
            1... .... = Onlink
            .1.. .... = Auto
            ..0. .... = Not router address
            ...0 .... = Not site prefix
        Valid lifetime: 0x00278d00
        Preferred lifetime: 0x00093a80
        Prefix: fec0::
    ICMPv6 options
        Type: 1 (Source link-layer address)
        Length: 8 bytes (1)
        Link-layer address: 00:01:02:87:17:54

Der Windows PC bestimmt aus seiner MAC-Adresse und dem Präfix aus der Router Advertisement Nachricht seine Adresse und führt für diese eine Duplicate Address Detection durch:

Ethernet II
    Destination: 33:33:ff:8f:f8:d8 (33:33:ff:8f:f8:d8)
    Source: 00:01:02:8f:f8:d8 (BBN_8f:f8:d8)
    Type: IPv6 (0x86dd)
    Trailer: 9BC0E802
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 24
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    Source address: ::
    Destination address: ff02::1:ff8f:f8d8
Internet Control Message Protocol v6
    Type: 135 (Neighbor solicitation)
    Code: 0
    Checksum: 0x8616 (correct)
    Target: fec0::201:2ff:fe8f:f8d8 (fec0::201:2ff:fe8f:f8d8)

Die automatisch zugewiesene Adresse ist in der netsh-Konsole sichtbar:

netsh interface ipv6>show address
Der aktive Status wird abgefragt...


Schnittstelle 5: LAN-Verbindung

Adresstyp  DAD-Status Gültigkeit   Bevorzugt    Adresse
---------  ---------- ------------ ------------ -----------------------------
Öffentlich Bevorzugt  29d23h59m47s  6d23h59m47s \textbf{fec0::201:2ff:fe8f:f8d8}
Verbindung Bevorzugt      infinite     infinite fe80::201:2ff:fe8f:f8d8

3 Inbetriebnahme des Mac OS X Clients

Der Mac OS X Client verhält sich genau gleich wie bei manueller Adress-Vergabe. Er meldet seine Link-Local-Adresse bei eventuellen Multicast-Routern und führt die Duplicate Address Detection durch. Erst nachdem der Router eine weitere Routing Advertisement Nachricht versendet (aufgrund der Router Solicitation des Windows 2003 PC), generiert er sich eine Adresse mit dem entsprechenden Präfix und führt auch für diese die Duplicate Address Detection durch.

Ethernet II
    Destination: 33:33:ff:4e:5c:8c (33:33:ff:4e:5c:8c)
    Source: 00:03:93:4e:5c:8c (Apple_4e:5c:8c)
    Type: IPv6 (0x86dd)
    Trailer: 1187C752
Internet Protocol Version 6
    Version: 6
    Traffic class: 0x00
    Flowlabel: 0x00000
    Payload length: 24
    Next header: ICMPv6 (0x3a)
    Hop limit: 255
    Source address: ::
    Destination address: ff02::1:ff4e:5c8c
Internet Control Message Protocol v6
    Type: 135 (Neighbor solicitation)
    Code: 0
    Checksum: 0x2e2f (correct)
    Target: fec0::203:93ff:fe4e:5c8c

In der Ausgabe von ifconfig ist die per Autokonfiguration generierte Adresse gut zu erkennen:

en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        inet6 fe80::203:93ff:fe4e:5c8c%en0 prefixlen 64 scopeid 0x4 
        inet6 \textbf{fec0::203:93ff:fe4e:5c8c} prefixlen 64 autoconf


next up previous contents
Nächste Seite: 5 IPv6 Routing mit Aufwärts: Inhalt Vorherige Seite: 3 Vorbereitungen   Inhalt
Beat Graf / Daniel Werner