ipv6 inleiding
Begin de jaren negentig van de vorige eeuw werd duidelijk dat men met 32bit ipv4 adressen op een snel groeiend internet, niet zo heel lang meer zou kunnen verder werken. Het is toen dat men ipv6 boven de doopvont heeft gehouden. Tussentijdse andere maatregelen (classless ipv4, NAT, CIDR), hebben de uitputting van ipv4-adressen tot op heden kunnen uitstellen. Maar RIPE is in Europa al enkele jaren karig bezig het laatste /8 netwerk in stukjes van /22 uit te delen. In Azie zijn de adressen al op.
ipv6 wordt al enkele jaren wereldwijd uitgerold, ook in België waar elke thuis-gebruiker er nu al gebruik van kan maken. Heel veel machines zijn nu al dual-stack, met zowel ipv4 als ipv6 adressen. Het is dus hoog tijd om meer te weten over de nieuwe internetlaag : het gebeurt allemaal, en alleen in laag 3.
Vandaar deze korte praktijkgerichte cursus ipv6.
In Belgie leveren zowel proximus als telenet al enkele jaren ipv6 standaard aan. Maar de meeste WiFi-access points, geven dit niet door, en passen ipv4-NAT toe, bovenop de NAT van beide providers. Op die manier kun je ipv6 niet zien.
Je kan ipv6 wel zien als je de DOCSIS-router van telenet, of de B-BOX van proximus op een switch aansluit, en daarop rechtstreeks (met een kabel) je laptop. (het kan ook als je laptop op de WiFi van de telenet/proximus router zit) Recentere en duurdere Wireless Access Points zijn configureerbaar om IPv6 door te geven, of ze doen het standaard.
je kan ipv6 niet leren op een ipv4 machine
Dat is inderdaad een probleem. En demo omgevingen zijn te beperkt. Vandaar het idee (2013), en de realisatie (najaar 2014) van ipv6 only machines, in de cloud.
- ipv6 only machines
Sedert eind 2014 zorgt netwerk800 voor ipv6-only machines op afstand (via ssh). Geen DUAL-stack maar uitsluitend ipv6, en toch bereikbaar via socketforwarding vanuit ipv4. Deze machines draaien ubuntu linux (16.04) en zijn rechtstreeks verbonden met het ipv6-internet.
De meeste studenten hebben deze machines al gebruikt om er linux mee te leren, en zijn zich nauwelijks bewust geweest dat het ipv6 only machines waren.
Alles werkt gewoon zoals altijd ... Je ziet het niet, als je met ipv6 werkt. Je moet er echt op letten.
Op deze machines zetten we onze eerste stappen in ipv6 ... alle studenten krijgen hun eigen machine, en een sudo-login: ....
ssh -p xyz22 student@mypc.domain.org
student@mypc.domain.org's password: Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-116-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage 0 packages can be updated. 0 updates are security updates. Last login: Thu Feb 22 17:07:53 2018 from 2a01:123:123:6116:1000::2
- de eerste stap ... : adressen
We zijn nieuwsgierig, en tikken ...
$ ifconfig
enp0s3 Link encap:Ethernet HWaddr 08:00:27:f6:0c:ea inet addr:10.10.255.82 Bcast:10.10.255.255 Mask:255.255.0.0 inet6 addr: fe80::a00:27ff:fef6:cea/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:10 errors:0 dropped:0 overruns:0 frame:0 TX packets:10 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:5900 (5.9 KB) TX bytes:1332 (1.3 KB) Interrupt:19 Base address:0xd000 enp0s8 Link encap:Ethernet HWaddr 08:00:27:e1:ab:45 inet6 addr: 2a01:123:123:6116:1000::1030/68 Scope:Global inet6 addr: fe80::a00:27ff:fee1:ab45/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:84 errors:0 dropped:0 overruns:0 frame:0 TX packets:76 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:11590 (11.5 KB) TX bytes:10947 (10.9 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:160 errors:0 dropped:0 overruns:0 frame:0 TX packets:160 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:11840 (11.8 KB) TX bytes:11840 (11.8 KB)
of de essentie ...
$ ifconfig | grep 'Link\|inet6'
enp0s3 Link encap:Ethernet HWaddr 08:00:27:f6:0c:ea inet6 addr: fe80::a00:27ff:fef6:cea/64 Scope:Link enp0s8 Link encap:Ethernet HWaddr 08:00:27:e1:ab:45 inet6 addr: 2a01:123:123:6116:1000::1030/68 Scope:Global inet6 addr: fe80::a00:27ff:fee1:ab45/64 Scope:Link lo Link encap:Local Loopback inet6 addr: ::1/128 Scope:Host
We zien 4 ipv6 adressen op 3 netwerkkaarten:
lo
is onze loopback interface:
haar ipv6-adres is heel kort:::1/128
dit ipv6-adres is voluit hexadecimaal:0000:0000:0000:0000:0000:0000:0000:0001
/128
is de netmask
een ipv6-adres bevat 128 bits, meestal hexadecimaal geschreven als
8 groepen van 16 bits of 4 hex-cijfers
de groepen worden gescheiden door:
de dubbele punt
met 128bit kun je 3,4 x 1038 verschillende adressen samenstellen
/128
betekent masked op 1 enkele host,
net zoals255.255.255.255
of/32
dit doet in ipv4
Scope:Host
--::1
komt overeen in ipv4 met127.0.0.1
enp0s8
is onze publieke netwerkinterface
het ipv6-adres ervan is:2a01:123:123:6116:1000::1030/68
dit ipv6-adres is voluit hexadecimaal:2a01:04f8:0202:6116:1000:0000:0000:1030
Scope:Global
: een publiek ip-adres
/68
is de netmask, er blijven nog 128-68=60 host bits over. In dit netwerk kun je 1,15 x 1018 hosts kwijt.
enp0s8
heeft nog een tweede ipv6-adres:fe80::a00:27ff:fee1:ab45/64
dit ipv6-adres is voluit hexadecimaal:fe80:0000:0000:0000:0a00:27ff:fee1:ab45
Scope:Link
: een link local adres alleen gebruikt binnen het eigen layer2-LAN
/64
is de standaard netmask van link-local adressen
link-local adressen komen in ipv4 een beetje overeen met de 169.254.0.0/16 range
https://en.wikipedia.org/wiki/Link-local_address
in ipv6 worden link-local adressen o.a. gebruikt voor het automatisch vinden van default gateway en dns-server
enp0s3
is de private LAN interface:
het link-local ipv6-adres ervan is:fe80::a00:27ff:fef6:cea
dit ipv6-adres is voluit hexadecimaal:fe80:0000:0000:0000:0a00:27ff:fef6:0cea
Scope:Link
: een link local adres alleen gebruikt binnen het eigen layer2-LAN
/64
is de standaard netmask van link-local adressen
openp0s3
is ook nog een privaat ipv4 netwerk te vinden,10.10/16
, dat niet verbonden is met het internet, maar wel kan worden gebruikt om te debuggen.
- default gateway
we tikken:
$ route -n6
::/0 2a01:123:123:6116:1000::2 UG 1024 1 9487 enp0s8
de gateway zit in ons eigen netwerk:
/68
is de netmask,
ons netwerk prefix is dan2a01:123:123:6116:1000::
elk hex cijfer is vier bit lang: met een /68 zit die éne 1 van het laatste 16bit veld nog in het prefix,
de laatste 3 nullen horen er niet bij, maar we moeten die wel opschrijven ...
anders lezen we het ipv6-address verkeerd.
- dns-server
$ dig
; <<>> DiG 9.10.3-P4-Ubuntu <<>> ;; global options: +cmd ;; Got answer: ... ;; Query time: 5 msec ;; SERVER: 2001:4860:4860::8888#53(2001:4860:4860::8888) ;; WHEN: Sat Feb 24 07:06:39 CET 2018 ;; MSG SIZE rcvd: 239
We hebben er wat in geknipt. De dns-server is:
2001:4860:4860::8888
met een reverse lookup vinden we:
$ dig -x 2001:4860:4860::8888
8.8.8.8.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.6.8.4.0.6.8.4.1.0.0.2.ip6.arpa. 21599 IN PTR google-public-dns-a.google.com.
inderdaad, google:
google-public-dns-a.google.com
2001:4860:4860::8888
is het equivalent van8.8.8.8