IPv6

Uit De Vliegende Brigade
Ga naar: navigatie, zoeken

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

pingis 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.

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-foutmelding
  • ping6 2a01:7c8:aab3:2aa::2 - destination unreachable: Address unreachable-foutmelding
  • ping6 2a01:7c8:aab3:2aa:5054:ff:fee9:ef29 - Gelukt
  • lynx [2a01:7c8:aab3:2aa:5054:ff:fee9:ef29] - Gelukt: Vanpagina webserver
  • lynx [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

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

Hosting

Netplan & VPS