home       basis       advanced       routing       switching       testen       overig      

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.

  1. 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 naar ifconfig:

      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 er RUNNING omdat de kabel niet in zit; er is geen ipv4 of ipv6 configuratie.
      Bij lo merken we een inet6 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 naar ifconfig:
      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 een link-local adres op eth0,
       
      inet6 addr: fe80::a00:27ff:fe07:b619/64 Scope:Link
       
      Het ipv6 adres heeft prefix fe80::/64 de host-identifier is ::0a00:27ff: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 kans  n / 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 naar ifconfig:
      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?
         
  2. 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
      
    ipv6-startup

     
    ::: Stateless address autoconfiguration
    ::: Neighbor discovery protocol
     
    0,988 -- Duplicate address detection: de pas opgestarte machine heeft al snel zijn MAC-contained link-local address gevormd. Om te testen of dit uniek is in zijn netwerk, stuurt hij een Neighbor 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 een Neighbor 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 toegekende link-local address: fe80::a00:27ff:fe27:86e7 als source.
    Het pakket wordt verstuurd naar ff02::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 de ICMPv6-message.
       

  3. één dag later ...
     
    Eén dag na opstarten krijgen we deze ipv6 informatie van ifconfig ...

    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