[Berlin-wireless] IPv6 Konfiguration

Alina Friedrichsen x-alina
Do Apr 1 17:01:12 CEST 2010


Hallo Sven-Ola!

> (OMA, Alzheimer: warst du nicht letztens untot? Bis zum Rentenalter hast du 
> noch ein paar Jahrzehnte...)

Werd jedenfalls von Jahr zu Jahr immer mueder und kann mich nicht mehr
konzentrieren, so das ich es nur alle paar Tage/Wochen noch schaffe
etwas zu programmieren.
Ursache bislang ungeklaert. Mein Hausarzt tut nichts, mein Gynaekologe
hat mich jetzt, nach den ein Diabetes-Test negativ ausgefallen war, an
eine Internistin verwiesen.
So viel zu Layer 8...

> Egal - ich hab' nicht verstanden woher die Abbildungsvorschrift kommt

Von RFC 2373.
Die relevanten Zitate:

> APPENDIX A : Creating EUI-64 based Interface Identifiers

> [EUI64] defines a method to create a EUI-64 identifier from an IEEE
>    48bit MAC identifier.  This is to insert two octets, with hexadecimal
>    values of 0xFF and 0xFE, in the middle of the 48 bit MAC (between the
>    company_id and vendor supplied id).

> The only change is inverting the value of the universal/local bit.



> bzw. 
> welchen Sinn die hat / mal hatte.

Das musst Du die AutorInnen fragen, es geht wohl hauptaechlich darum,
das der Standard eingeplant hat, in Zukunft in Layer 2 von den
MAC-Adressen zu den laengeren EUI-64 zu wechseln, wenn erstere zu neige
gehen. Deswegen wurde der Standard gleich fuer EUI-64 Adressen
geschrieben und die MAC-Adressen werden nur in diese Konvertiert.

> Potentielle Vergabekonflikte mit 
> existierenden Implementationen vermeiden ist natuerlich sinnvoll. Ist das 
> irgendwo im IPv6 Stack des Kernels kodiert?

Ja, die Zeile muesste ich jetzt suchen, aber das siehst Du auch, wenn Du
"ip addr" eingibst. Das ist mindestens Deine link-local Adresse so
kodiert:

> 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
>     link/ether 00:26:18:78:3a:5d brd ff:ff:ff:ff:ff:ff
>     inet 217.140.74.91/28 brd 217.140.74.95 scope global eth0
>     inet6 2001:4b88:10fa:0:226:18ff:fe78:3a5d/64 scope global dynamic 
>        valid_lft 86300sec preferred_lft 14300sec
>     inet6 fe80::226:18ff:fe78:3a5d/64 scope link 
>        valid_lft forever preferred_lft forever



> Achso. Damit es etwas konkreter wird: kleines Shell-Script anbei

Jep, sieht gut aus, das Script berechnet den Interface Identifier nach
RFC 2373 korrekt, nur kleine Fluechtigkeitsfehler waren drin.

Hier eine korrigierte und getestete Version:

> #!/bin/sh
> 
> make_ula() {
> 	IFS=:
> 	set $(ip link show "$1" | sed -n 's/ \+link\/ether \([^ ]\+\).*/0x\1/p')
> 	unset IFS
> 	printf ":%02x%02x" "$(($1 ^ 2))" "0x$2" "0x$3" 0xff 0xfe "0x$4" "0x$5" "0x$6"
> 	echo
> }
> 
> ip -f inet6 addr flush dev "$1" scope global
> ip addr add "$PREFIX$(make_ula "$1")/64" dev "$1"

Liebe Gruesse
Alina






Mehr Informationen über die Mailingliste Berlin