IPv6
Een paar basiszaken omtrent IPv6
Adressen
128 bits
- IPv4 is een 32-bits adrescodering (4,29 miljard adressen)
- IPv6 is 128-bits-codering (16 bytes, 32 nibbles, 3,4*10^38 adressen)
- Een classless inter-domain range (CIDR) met 128 vastgestelde bits, is dus 1 IP-adres.
- Een IPv6-adres wordt meestal weergegeven in hexadecimaal, in blokjes van 16 bits (2 bytes, aka. words, double bytes of dbytes).
De complete range aan ipv6-adressen in hexadecimaal (met handige nummer voor de 2-byte-blokjes):
dbytes: 1 2 3 4 5 6 7 8 0000:0000:0000:0000:0000:0000:0000:0000 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff Nibbles: 1-4 5-8 9-12 13- 17- 21- 25- 29-32 (handig voor rDNS)
Hex, decimaal & binair:
Hex Decimaal Binair --- -------------- ------- f 16^1-1 = 15 4 bits ff 16^2-1 = 255 8 bits ffff 16^4-1 = 65535 16 bits
Lege dbytes kun je afkorten
Bv.
FE80:CD00:0000:0CDE:1257:0000:211E:729C → FE80:CD00:0:0CDE:1257:0:211E:729C
Een reeks lege dbytes kun je afkorten
Bv.:
FE80:CD00:1234:0000:0000:211E:829C → FE80:CD00:1234::211E:829C FE80:CD00:0000:0000:0000:211E:829C → FE80:CD00::211E:829C
Subclasses & prefixes
Als je werkt met subclasses-en-prefix-notatie: De prefix geeft het aantal vastgelegde bits aan! (Zou dat ding trouwens niet postfix of suffix moeten heten? Hij staat immers achteraan). Komt-ie:
Bits #IP-adressen Subclass & prefix over Masker beschikbaar ------------------------------------------- ---- ----------------------- ------------ fe80:cd00:0001:0002:0003:211e:829c:1234/128 → 0 ff:ff:ff:ff:ff:ff:ff:ff 1 fe80:cd00:0001:0002:0003:211e:829c:1234/124 → 4 ff:ff:ff:ff:ff:ff:ff:f0 16 fe80:cd00:0001:0002:0003:211e:829c:1234/120 → 8 ff:ff:ff:ff:ff:ff:ff:00 256 fe80:cd00:0001:0002:0003:211e:829c:1234/112 → 16 ff:ff:ff:ff:ff:ff:00:00 65.536
Vaak is het handig om vanaf nul-waardes te werken, omdat je lege dbytes kunt afkorten. Bv.:
Bits #IP-adressen Subclass & prefix over Masker beschikbaar ------------------------------------------- ---- ----------------------- ------------ 16 16 16 16 16 16 16 16 fe80:cd00:0001:0002:0003:211e:829c:1234/128 → 0 ff:ff:ff:ff:ff:ff:ff:ff. 1 fe80:cd00:0001:0002:0003:211e:829c::/112 → 16 ff:ff:ff:ff:ff:ff:ff:00. 65.536 fe80:cd00:0001:0002:0003:211e::/96 → 32 ff:ff:ff:ff:ff:ff:00:00 fe80:cd00:0001:0002:003::/80 → 48 ff:ff:ff:ff:ff:00:00:00 fe80:cd00:0001:0002::/64 → 64 ff:ff:ff:ff:00:00:00:00 2^64 fe80:cd00:0001::/48 → 80 ff:ff:ff:00:00:00:00:00 fe80:cd00::/32 → 96 ff:ff:00:00:00:00:00:00 fe80::/16 → 112 ff:00:00:00:00:00:00:00 ::/0 → 128 ff:00:00:00:00:00:00:00 2^128
Browser
Local loop: Dit werkt op m'n werkstation, terwijl ik vermoedelijk op een IPv4-only-netwerk zit:
http://[::1]
Het werkt ook op VPS'en:
lynx http://[::1]/
Maar verder ben ik er nog niet helemaal uit:
traceroute6 google.com traceroute to google.com (2a00:1450:400e:803::200e) from ... ← Dit is het adres dat ik zoek lynx http://[2a00:1450:400e:803::200e] ← Foutmelding
Tools
Hoe weet je of je site bereikbaar is via IPv6? In de loop van 2017 'verdween' op een gegeven moment een site. Bleek dat de provider van de betreffende klant of eigenaar, net was overgestapt op IPv6, en dat de site nog niet bereikbaar was met IPv6.
Je eigen adressen
ip -6 addr show
Op Ubuntu 18.04 wordt netplan gebruikt. Daarom is het commando ifconfig
niet handig, want het kan niet overweg met meerdere adressen per interface [1]
Routing tables
netstat -A inet6 -rn
of
ip -6 route show
ping6
ping
is voor IPv4. Gebruik voor pingen van IPv6-adressen daarom ping6
.
Om je eigen localhost te pingen:
ping6 -c 3 ::1
ping6 ipv6.google.com
In de lente van 2018 kreeg ik voortdurend de foutmelding connect: Network is unreachable
. Dit bleek afhankelijk te zijn van de computer waarop ik dit commando gaf. vermoedelijk werk ik op een IPv4-only-netwerk. Vanaf servers ging het namelijk prima.
Browsen
Altijd practisch om te testen of je een site krijgt. Bv.:
lynx [2a02:7c9:aac7:4c8:5054:ff:fe0e:7e94]
(note to self: Dit adres is nep).
/etc/hosts
Je kunt IPv6-adressen gewoon toevoegen. Geen vierkante haakjes nodig.
- https://coderwall.com/p/be52-a/ipv6-in-etc-hosts
- https://library.netapp.com/ecmdocs/ECMP1114171/html/GUID-DBF81E5C-CF3C-4B07-AF01-83A625F2B4BF.html
Webservers, hosting & VPS'en
Bij een VPS krijg ik standaard een 64-bits reeks van adressen. Standaard wordt er gebruik gemaakt van DHCP. De VPS krijgt dus één adres uit die beschikbare reeks. De server is dan alleen op dat adres bereikbaar (zie test hieronder). Da's niet handig, omdat dat nummer kan veranderen.
Zie Jeronimum » Dvb5 (VPS) voor details
Test: Alleen bereikbaar op dat ene DHCP-adres
Is een server bereikbaar op alleen dat ene DHCP-adres,of op de gehele reeks? - Test.
Situatie
* IP-range van een server: 2a01:7c8:aab3:2aa::/64 (dvb7) * Dus van 2a01:7c8:aab3:2aa::0 tot 2a01:7c8:aab3:2aa::ffff * Dus van 2a01:7c8:aab3:2aa:00:00:00:00 tot 2a01:7c8:aab3:2aa:ff:ff:ff:ff Vermoedelijke toegewezen adressen: * 2a01:7c8:f:228::2 - Afzender ping6 * fe80::5054:ff:fee9:ef29 - ifconfig * 2a01:7c8:aab3:2aa:5054:ff:fee9:ef29 - ifconfig * 2a01:7c8:aab3:2aa:5054:ff:fee9:ef29 - ip a
Tests
ping6 2a01:7c8:aab3:2aa::
- destination unreachable: Address unreachable-foutmeldingping6 2a01:7c8:aab3:2aa::2
- destination unreachable: Address unreachable-foutmeldingping6 2a01:7c8:aab3:2aa:5054:ff:fee9:ef29
- Geluktlynx [2a01:7c8:aab3:2aa:5054:ff:fee9:ef29]
- Gelukt: Vanpagina webserverlynx [2a01:7c8:aab3:2aa:5054:ff:fee9:ef30]
- Niet gelukt →
Conclusies
- De webserver luistert alleen naar het individuele toegezewen DHCP-adres
- Daarom belangrijk om dat adres statisch toe te wijzen, óf om de hele reeks toe te wijzen aan de webserver (ik ga toch nix anders doen met die adressen).
Netplan
Ubuntu 18.04 gebruikt netplan voor netwerkconfiguratie. Dat configureer je hier via YAML:
sudo vim /etc/netplan/01-netcfg.yaml
Een voorbeeld:
# This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: ens3: dhcp4: yes dhcp6: yes
DNS entries (2023.10)
This chapter is from 2023.10 - Much younger than the rest of this article
- Our new server has IPv6 range 2a01:123:456:5a00::/64, including subnet /64
- You can't enter a subnet when entering a DNS AAAA record
- → Use 2a01:4f8:272:5a00::1.
Apache
Standaard 'luistert' Apache op alle beschikbare IP-adressen [2]:
By default, it listens to all addresses on the machine ... on all interfaces
Daarnaast kun je middels de listen
-directive zelf bepalen naar welke adressen Apache luistert. Dat kun je zelfs op virtual host-niveau doen. Op die manier kun je oa. per domein een apart IP-adres specificeren.
ufw
Zie opnieuw https://www.digitalocean.com/community/tutorials/how-to-configure-tools-to-use-ipv6-on-a-linux-vps
Zie ook
Bronnen
Basis
- http://www.techrepublic.com/blog/10-things/10-things-you-should-know-about-ipv6-addressing/
- http://www.cyberciti.biz/faq/howto-test-ipv6-network-with-ping6-command/
Hosting
- https://www.transip.nl/forum/post/prm/2432 - Tutorial: Hoe configureer ik extra IPv4- en IPv6-adressen op mijn VPS - Oud?
- https://www.transip.nl/forum/post/prm/36 - Oud?
- https://www.digitalocean.com/community/tutorials/how-to-configure-tools-to-use-ipv6-on-a-linux-vps → Beste bron voor troubleshooting
- https://httpd.apache.org/docs/2.4/bind.html
- https://www.transip.nl/knowledgebase/artikel/219-voeg-extra-ipv4-ipv6-adres-mijn/
- https://www.transip.nl/knowledgebase/artikel/219-voeg-extra-ipv4-ipv6-adres-mijn/#Ubuntu%2018.04