ipv6 experiments @home
... wat volgt werkt misschien niet helemaal, of helemaal niet, ...
- als je geen ipv6 netwerk krijgt van je provider
- als je een wifi-nat-router gebruikt zonder ipv6 configuratie
- als er een firewall/nat router staat tussen de router van je provider en je testmachine
Voor deze experimenten heb ik een virtuele machine gecloond: ubuntu12.04-server zonder avahi-daemon en zonder network-manager. In de machine zit een netwerkkaart (met een net random gegenereerd MAC-adres), bridged naar een netwerk dat rechtstreeks van de DOCSIS-telenet router vandaan komt.
- experiment(1): plug it in
- geen netwerk
we beginnen met de volgende configuratie in/etc/network/interfaces
bert@lx24:~$ cat /etc/network/interfaces # 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 auto eth0 iface eth0 inet dhcp
In virtualbox trekken we de (virtuele) netwerkkabel uit voor opstarten. Na 2 minuten wachten (aan te passen in
/etc/init/failsaf.conf
), kunnen we inloggen, en kijken naarifconfig
:bert@lx24:~$ ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:07:b6:19 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0
Bij
eth0
ontbreekt erRUNNING
omdat de kabel niet in zit; er is geen ipv4 of ipv6 configuratie.
Bijlo
merken we eeninet6 addr
op::1/128
Sedert linux kernel 2.6 (2004) is Linux 100% ipv6 compatible.
- een ipv4-only netwerk
We bridgen de virtuele netkaart nu even naar een LAN zonder internet (dhcpv4 en geen ipv6) en kijken opnieuw naarifconfig
:bert@lx24:~$ ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:07:b6:19 inet addr:10.0.0.74 Bcast:10.0.0.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe07:b619/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:462 errors:0 dropped:0 overruns:0 frame:0 TX packets:182 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:69963 (69.9 KB) TX bytes:24713 (24.7 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:72 errors:0 dropped:0 overruns:0 frame:0 TX packets:72 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5632 (5.6 KB) TX bytes:5632 (5.6 KB)
We krijgen een ipv4 configuratie van een dhcp-server.
In ipv6 krijgen we nu eenlink-local adres
opeth0
,
inet6 addr: fe80::a00:27ff:fe07:b619/64 Scope:Link
Het ipv6 adres heeft prefixfe80::/64
de host-identifier is::0a00
:27
ff:fe
07:b619
We hebben het gedeelte van ons MAC-adres dat overgenomen wordt in de link-local in bold gezet. De kans is klein dat ons zelf-gegenereerde link-local adres twee keer voorkomt in ons netwerk. In virtualbox is die kansn / 16.500.000
(n / 224) n is het aantal hosts in het netwerk.
- een dual-stack netwerk
dual-stack betekent dat ipv4 en ipv6 naast mekaar bestaan. Dit is zo in de meeste ipv6 netwerken, omdat je anders nog in een internet-woestijn zit. (Het experimenteel netwerk in gnubizz is ipv6-only). We kijken opnieuw naarifconfig
:bert@lx24:~$ ifconfig eth1 Link encap:Ethernet HWaddr 08:00:27:07:b6:19 inet addr:10.0.1.150 Bcast:10.0.1.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe07:b619/64 Scope:Link inet6 addr: 2a02:1811:e100:e100:a9cc:a9c8:c2bb:f335/64 Scope:Global inet6 addr: 2a02:1811:e100:e100:a00:27ff:fe07:b619/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:530 errors:0 dropped:0 overruns:0 frame:0 TX packets:233 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:82428 (82.4 KB) TX bytes:33056 (33.0 KB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:188 errors:0 dropped:0 overruns:0 frame:0 TX packets:188 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:14880 (14.8 KB) TX bytes:14880 (14.8 KB)
We krijgen er meteen 2 globale adressen bij:
inet6 addr: 2a02:1811:e100:e100:a9cc:a9c8:c2bb:f335/64 Scope:Global
inet6 addr: 2a02:1811:e100:e100:a00:
27
ff:fe
07:b619
/64 Scope:Global
Het prefix komt van de DOCSIS-router. Voor de rest zijn is het bovenste adres helemaal random. Het tweede adres bevat weeral stukken van het MAC-adres van de netwerkkaart.
Ik stel me nu een aantal vragen:- heb ik nu al een ipv6 default gateway, een DNS, en hoe krijg ik die informatie?
- wat is het mechanisme om het juiste prefix te vinden (er is geen dhcpv6)?
- waarom 2 global adressen?
- kan ik naar buiten pingen in ipv6?
- geen netwerk
- experiment(2): snif it
We werken ondertussen met een nieuwe kloon, en een ander MAC-adres.
We zouden graag willen weten wat onze testmachine met het netwerk doet tijdens de eerste seconden na opstart. Dat lijkt een moeilijke klus maar, vermits onze test-machine virtueel draait op een bridged netwerk, kunnen we ze in de wireshark van het host-OS sniffen. We moeten er dan filteren op het MAC-adres van de guest. Eventueel missen we wel enkele multicast solicitaties van buitenaf, maar dat is nu minder belangrijk.
Wireshark heeft het volgende gesnift, tijdens de eerste 15 seconden:
we hebben ipv4 pakketten, en dubbels van pakketten uitgefilterd
::: Stateless address autoconfiguration
::: Neighbor discovery protocol
0,988 --Duplicate address detection
: de pas opgestarte machine heeft al snel zijn MAC-containedlink-local address
gevormd. Om te testen of dit uniek is in zijn netwerk, stuurt hij eenNeighbor Solicitation Packet
met zijn eigen adres de wereld in. Het source-address van dit packet is::
Machines binnen het eigen netwerk geven normaal onmiddellijk antwoord op eenNeighbor Solicitation
. Onze machine wacht exact 1 seconde, en krijgt van niemand antwoord. Vervolgens gaat hij op ontdekkingstocht ...
1.987 --Router solicitation
: onze test machine gebruikt vanaf nu zijn zelf toegekendelink-local address
:fe80::a00:27ff:fe27:86e7
als source.
Het pakket wordt verstuurd naarff02::2
, een multicast adres voor all routers in the link-local (wikipedia--IPv6_address). De router antwoordt enkele miliseconden later ...
1.990 --Router advertissement
:
het antwoord op twee eerder gestelde vragen:- heb ik nu al een ipv6 default gateway, een DNS, en hoe krijg ik die informatie?
- wat is het mechanisme om het juiste prefix te vinden (er is geen dhcpv6)?
fe80::5e35:3bff:fe5c:8b35 fe80::a00:27ff:fe27:86e7 ICMPv6 Router Advertisement from 5c:35:3b:5c:8b:35 Frame 7: 206 bytes captured (1648 bits) on interface 0 Ethernet II Src: CompalBr_5c:8b:35 (5c:35:3b:5c:8b:35) Dst: CadmusCo_27:86:e7 (08:00:27:27:86:e7) Internet Protocol Version 6 Src: fe80::5e35:3bff:fe5c:8b35 (fe80::5e35:3bff:fe5c:8b35), Dst: fe80::a00:27ff:fe27:86e7 (fe80::a00:27ff:fe27:86e7) Internet Control Message Protocol v6 Type: Router Advertisement (134) Code: 0 Checksum: 0xd5a7 [correct] Cur hop limit: 64 Flags: 0x48 Router lifetime (s): 1800 Reachable time (ms): 0 Retrans timer (ms): 0 ICMPv6 Option (Prefix information : 2a02:1811:e100:e100::/64) ICMPv6 Option (Route Information : Medium 2a02:1811:e100:e100::/64) ICMPv6 Option (Recursive DNS Server 2a02:1800:100::41:1 2a02:1800:100::41:2) ICMPv6 Option (DNS Search List Option telenet.be) ICMPv6 Option (MTU : 1500) ICMPv6 Option (Source link-layer address : 5c:35:3b:5c:8b:35)
In het antwoord van de router op het
solicitation
pakket, zitten zijn MAC- en zijn IPv6-adres in de frame-header, het prefix, 2 DNS servers, opnieuw het MAC-adres, een DNS-search domain en een MTU aangepast aan ethernet zitten in deICMPv6
-message.
-
één dag later ...
Eén dag na opstarten krijgen we deze ipv6 informatie vanifconfig
...bert@ub124-ipv6:~$ ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:27:86:e7 inet6 addr: fe80::a00:27ff:fe27:86e7/64 Scope:Link inet6 addr: 2a02:1811:e100:e100:a00:27ff:fe27:86e7/64 Scope:Global inet6 addr: 2a02:1811:e100:e100:4927:f751:98cf:5707/64 Scope:Global inet6 addr: 2a02:1811:e100:e100:4515:bb11:a3d5:a426/64 Scope:Global
... en de volgende informatie van
ip addr
bert@ub124-ipv6:~$ ip -6 addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2a02:1811:2c08:a700:4927:f751:98cf:5707/64 scope global temporary dynamic valid_lft 548684sec preferred_lft 29684sec inet6 2a02:1811:2c08:a700:4515:bb11:a3d5:a426/64 scope global temp. deprecated dyn. valid_lft 462886sec preferred_lft 0sec inet6 2a02:1811:2c08:a700:a00:27ff:fe27:86e7/64 scope global dynamic valid_lft 573055sec preferred_lft 54655sec inet6 fe80::a00:27ff:fe27:86e7/64 scope link valid_lft forever preferred_lft forever