Dydaktyka:
FeedbackTo jest stara wersja strony!
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 "odzyskany" po zakończeniu działalności firmy/organizacji której przydzielono blok adresów (wersja oficjalna).
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ł:
0123 → 123 ; 00ab → ab ; ale 0000 → 0)fe80:0:0:0:0:0:0:cafe → fe80::cafe ; fe80:0:0:0:beef:0:0:0 → fe80::beef:0:0:0)
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]/
W IPv6 zamiast o sieci (jak w IPv4) mówi się o prefiksie sieci (network prefix).
Struktura adresu IPv6 https://en.wikipedia.org/wiki/IPv6_address#Address_formats
Network prefix (Routing prefix + subnet, razem 64bit) | Interface ID (64bit)0xfffe między pierwszą a drugą połowę MACZasię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)
Zmiany:
opcje i zastąpiono protokół polem następny nagłówek IHL (długość nagłówka w IPv4) i długość całkowita → długość "ładunku" (payload length - wszystiego po nagłówku)fragmentation headerTTL→Hop Limit, ToS→Traffic class
Pole następny nagłówek może zawierać wartość wskazującą na to, że kolejny nagłówek:
następny 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]
Przykładowe strony z IPv6:
Wiele programów sieciowych pozwala na wymuszenie IPv6 / IPv4 podając przełącznik -6 / -4
Konfiguracja:
ip -6 routeTestowanie:
ping6 (oraz nowsze implementacje zwykłego ping)traceroute -6, tracepath6 (w lab. dodatkowo jest potrzebny przełącznik -T, np. traceroute -T -6)nc -6socat + TCP6:host:port, TCP6-LISTEN:port, … socat tcp:[::1]:13 - socat tcp6:localhost:13 -Wyświetlanie połączeń (domyślnie listuje zarówno IPv4 i IPv6):
netstat -6 -ass -6 -aFirewall:
ip6tablesnft pozwala łączyć reguły IPv4 i IPv6 w tabelach inetProgramowanie a IPv6:
man 7 ipv6
W Linuksie preferencje wyboru IPv6/IPv4 można ustawić w pliku /etc/gai.conf
ICMPv6 (następca ICMP dla IPv6), ponad funkcje poprzednika, implementuje protokół NDP (pozwalający na automatyczna 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.
Polecenie diagnostyczne z radvd do pasywnego zbierania Router Advertisment:
radvdump Pakiet narzędzi diagnostycznych ndisc6:
zypper ar https://download.opensuse.org/repositories/network:/utilities/openSUSE_Leap_15.3/network:utilities.repo zypper ref zypper in -y ndisc6
rdisc6 br0 br0 i czeka na RAndisc6 fe80::20c:42ff:feb6:9452 br0 br0 i czeka na Neighbour AdvertismentPakiet iproute 2 i lista MAC <-> IP
ip -6 neighbour
ping6 ff02::01%br0 – żądanie ICMPv6 ping wysłane do grupy multicastowej all-nodes na br0 (uzupełnia mapowania IP <-> MAC)
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 route get 2001:470:647b::1 ping -s 1500 2001:470:647b::1 ip route get 2001:470:647b::1
Prezentacje:
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, np. ping fe80::a6d:41ff:fee0:1860%eth0 [ https://en.wikipedia.org/wiki/IPv6_address#Link-local_addresses_and_zone_indices ]. ping ff02::01%em1 wysyła ping na adres all-nodes na karcie em1.