Spis treści

Wyczerpanie się adresów IPv4

Adresy IPv4 zostały podzielone do końca między RIRy w 2014 roku.
W 2015 roku skończyły się adresy IPv4 w Ameryce Północnej. W 2019 roku w naszym regionie (Europa, bliski wschód i część Azji) przydzielono ostatni wolny blok IPv4.
W tej chwili w naszym regionie tylko firmy/organizacje którzy nigdy wcześniej nie dostały adresów IPv4 mogą liczyć na 256 adresów IPv4 "odzyskanych" po zakończeniu działalności firmy/organizacji której przydzielono blok adresów (wersja oficjalna).
Na określonych warunkach można wykonywać transfery już przydzielonych adresów (transfer w RIPE).

Adres IPv6 – zapis

Adresacja IPv6 RFC4291

Długość adresu – 128 bitów

Zapis adresu: adres dzieli się na bloki 16-sto bitowe, zapisuje się je szesnastkowo (0÷ffff) oddzielając dwukropkiem:
Przykład: 2001:0808:0201:0000:0000:0000:0005:0114

Dla czytelności adres skraca się według następujących reguł:

Skrócony przykład: 2001:808:201::5:114

Z powodów technicznych zaleca się stosowanie zawsze najkrótszego zapisu i używanie małych liter (tzn. zawsze a-f, nigdy A-F) RFC5952

Zapis adresu IPv6 i portu: IPv6 w nawiasach kwadratowych, port po dwukropku, np: [fe80::dead:beef]:80 , przykład użycia: http://[::1]:631/ czy http://[2001:808:2:3003::2]/

Adres IPv6 – struktura, podział

W IPv6 zamiast o sieci (jak w IPv4) mówi się o prefiksie sieci (network prefix).
Prefix składa się z adresu ipv6 / długość prefiksu, np. 2001:808:201::/48
Długość (rozmiar) prefiksu odpowiada długości maski w IPv4, notacja IPv6 jest identyczna jak ta wprowadzona dla IPv4 w CIDR

Struktura adresu IPv6 https://en.wikipedia.org/wiki/IPv6_address#Address_formats

Zasięg adresów:

Podział adresów; adresy specjalne w IPv6

Przydzielone bloki IPv6 (proszę zwrócić uwagę na "przerwy", np. między 2a10:0000::/12 i 2c00:0000::/12)

Budowa pakietu IPv6

Zmiany w porównaniu do IPv4:


źródło: https://www.ripe.net/support/training/material/ripe-ncc-training-material

Pole następny nagłówek może zawierać wartość wskazującą na to, że kolejny nagłówek:

Nagłówki mają określoną kolejność, tak by na początku znajdowały się te przetwarzane przez wszystkie urządzenia, dalej nagłówki potrzebne niektórym węzłom, na końcu te przetwarzane tylko przez urządzenie docelowe [2]

źródło: https://www.ripe.net/support/training/material/ripe-ncc-training-material

Programy sieciowe a IPv6

Przykładowe strony z IPv6:

  • put.poznan.pl
  • ipv6ripeness.ripe.net
  • ipv6.he.net
  • 6lab.cisco.com
  • google.com/ipv6

Wiele programów sieciowych pozwala na wymuszenie IPv6 / IPv4 podając przełącznik -6 / -4

Konfiguracja:

Testowanie:

Wyświetlanie połączeń (domyślnie listuje zarówno IPv4 i IPv6):

Firewall:

Programowanie a IPv6:

W Linuksie preferencje wyboru IPv6/IPv4 można ustawić w pliku /etc/gai.conf

Automatyczna konfiguracja i ICMPv6

ICMPv6 (następca ICMP dla IPv6), ponad funkcje poprzednika, implementuje protokół NDP (pozwalający na automatyczną konfigurację i zastępujący ARP) i przejmuje zadania IGMP

Neighbor Discovery Protocol i Stateless Adress Autoconfiguration (SLAAC) RFC4861
Typowy przebieg autokonfiguracji:

W Linuksie do ogłaszania prefiksów używa się radvd

Do podstawowej konfiguracji IPv6 NIE potrzebuje DHCP. Jeśli do żądanej konfiguracji nie wystarczy przydzielenie adresów, ustawienie bramy domyślnej i ustawienie DNS'ów, można w NDP wymusić użycie DHCPv6.

[Ekstra] Diagnostyka NDP

Polecenie diagnostyczne z radvd do pasywnego zbierania Router Advertisment:

Pakiet narzędzi diagnostycznych ndisc6:

Pakiet iproute 2 i lista MAC <-> IP

ping6 ff02::01%br0 – żądanie ICMPv6 ping wysłane do grupy multicastowej all-nodes na br0 (uzupełnia mapowania IP <-> MAC)

Path MTU discovery

IPv6 unika fragmentacji jeśli to możliwe. Węzeł który nie może przesłać pakiety ze względu na MTU następnego łącza wysyła do nadawcy pakiet ICMPv6 Packet Too Big informując o MTU. Ostatecznie nadawca pozna w ten sposób najmniejsze MTU całej ścieżki do celu – Path MTU. Taki proces nazywa się Path MTU Discovery (RFC 8201).

Wartości Path MTU są zwykle cache'owane, np. w Linuksie w tablicy tras.
Możesz sprawdzić działanie Path MTU discovery przez:

ip -6 route flush cache
ip route get 2001:470:647b::1
ping -s 1500 2001:470:647b::1
ip route get 2001:470:647b::1

Współistnienie IPv4 i IPv6

Dual-stack – urządzenie ma jednocześnie adres z sieci IPv4 i IPv6 oraz bezpośrednią łączność do sieci IPv4 i IPv6.

Tunele:

Skąd brać tunele? Przykłady:

Tłumaczenia adresów, różne:

IPsec

IPv6 + Firewall

Dodatkowe materiały

Prezentacje:

Ekstra

  • Łączność (np. ping) do adresów fe80::/10 – jako że więcej niż jedna karta może mieć adres z sieci fe80, do jednoznacznego wskazania która karta ma być użyta trzeba przy łączeniu użyć składni adres_link_local%nazwa_interfejsu lub adres_link_local%indeks_interfejsu [1],
    np. ping fe80::a6d:41ff:fee0:1860%eth0
    Podobnie wygląda składnia dla multicastów, np. ping ff02::01%em1 wysyła ping na adres all-nodes na karcie em1.
  • Apple store wymaga od każdej aplikacji działania w sieciach z samym IPv6 https://developer.apple.com/support/ipv6/

1) generowany używając m. inn. prefiksu sieci i wcześniej wylosowanego (i pamiętanego) sekretu
2) uwaga: nie mylić z 6to4!
3) Ten adres nie służy do łączności z żadnym innym urządzeniem, tylko do udawania przed oprogramowaniem że host ma łączność po IPv4