Narzędzia użytkownika

Narzędzia witryny


sk2:ipv6

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
sk2:ipv6 [2022/01/16 23:00]
jkonczak [[Ekstra] Diagnostyka NDP]
sk2:ipv6 [2024/01/18 13:04] (aktualna)
jkonczak [Dodatkowe materiały]
Linia 3: Linia 3:
 === Wyczerpanie się adresów IPv4 === === Wyczerpanie się adresów IPv4 ===
 Adresy IPv4 zostały [[https://​www.icann.org/​en/​announcements/​details/​remaining-ipv4-addresses-to-be-redistributed-to-regional-internet-registries--address-redistribution-signals-that-ipv4-is-nearing-total-exhaustion-20-5-2014-en|podzielone do końca]] między RIRy w 2014 roku. \\ Adresy IPv4 zostały [[https://​www.icann.org/​en/​announcements/​details/​remaining-ipv4-addresses-to-be-redistributed-to-regional-internet-registries--address-redistribution-signals-that-ipv4-is-nearing-total-exhaustion-20-5-2014-en|podzielone do końca]] między RIRy w 2014 roku. \\
-W 2015 roku [[https://​www.arin.net/​vault/​announcements/​2015/​20150924.html|skończyły się adresy IPv4 w ameryce północnej]]. **W 2019 roku w naszym regionie (Europa, bliski wschód i część ​azji) [[https://​www.ripe.net/​publications/​news/​about-ripe-ncc-and-ripe/​the-ripe-ncc-has-run-out-of-ipv4-addresses|przydzielono ostatni wolny blok IPv4]]**. +W 2015 roku [[https://​www.arin.net/​vault/​announcements/​2015/​20150924.html|skończyły się adresy IPv4 w Ameryce Północnej]]. **W 2019 roku w naszym regionie (Europa, bliski wschód i część ​Azji) [[https://​www.ripe.net/​publications/​news/​about-ripe-ncc-and-ripe/​the-ripe-ncc-has-run-out-of-ipv4-addresses|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 [[https://​www.ripe.net/​manage-ips-and-asns/​ipv4/​how-waiting-list-works|mogą liczyć na 256 adresów IPv4]] "odzyskany" po zakończeniu działalności firmy/​organizacji której przydzielono blok adresów (wersja oficjalna).+W tej chwili w naszym regionie tylko firmy/​organizacje którzy nigdy wcześniej nie dostały adresów IPv4 [[https://​www.ripe.net/​manage-ips-and-asns/​ipv4/​how-waiting-list-works|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 ([[ 
 +https://​www.ripe.net/​manage-ips-and-asns/​resource-transfers-and-mergers/​transfer-of-ip-addresses-and-as-numbers|transfer w RIPE]]).
  
 <​html></​small></​html>​ <​html></​small></​html>​
Linia 28: Linia 30:
 ====== Adres IPv6 – struktura, podział ====== ====== Adres IPv6 – struktura, podział ======
  
-W IPv6 zamiast o sieci (jak w IPv4) mówi się o **prefiksie** sieci (network prefix).+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 \\ <​html><​small></​html>​ Długość (rozmiar) prefiksu odpowiada długości maski w IPv4, notacja IPv6 jest identyczna jak ta wprowadzona dla IPv4 w CIDR <​html></​small></​html>​
  
 Struktura adresu IPv6 [[https://​en.wikipedia.org/​wiki/​IPv6_address#​Address_formats]] Struktura adresu IPv6 [[https://​en.wikipedia.org/​wiki/​IPv6_address#​Address_formats]]
   * Adresy unicastowe (i anycastowe):​   * Adresy unicastowe (i anycastowe):​
-    * Adres ma zwykle postać: ''​Network prefix (Routing prefix + subnet, razem 64bit) | Interface ID (64bit)''​ +    * Adres ma zwykle postać: ''​Network prefix (Routing prefix + subnet, razem 64bit) | Interface ID (64bit)'' ​\\ <​html><​small></​html>​ Podział na //routing// i //network// prefix odnosi się do protokołów trasowania (głównie BGP)<​html></​small></​html>​ 
-    * 64-bitowy interface ID pozwala na automatyczną konfigurację [[https://​tools.ietf.org/​html/​rfc7136|RFC-7136]] +    * 64-bitowy interface ID pozwala na automatyczną konfigurację. Wybór interface ID: [[https://​tools.ietf.org/​html/​rfc7136|RFC 7136]] 
-      * Interface ID można stworzyć na podstawie adresu MAC (48-bitowego) zmieniając flagę unikalności adresu MAC na 1 i wstawiając ''​0xfffe''​ między pierwszą a drugą połowę MAC +      * Interface ID można stworzyć na podstawie adresu MAC (48-bitowego) zmieniając flagę unikalności adresu MAC na 1 i wstawiając ''​0xfffe''​ między pierwszą a drugą połowę MAC [[https://​datatracker.ietf.org/​doc/​html/​rfc4291#​page-20|RFC 4291, appendix A]] 
-      * Interface ID można ustawić losowy (dla prywatności,​ [[https://​tools.ietf.org/​html/​rfc4941|RFC-4941]])+      * Interface ID można ustawić losowy (dla prywatności,​ [[https://​tools.ietf.org/​html/​rfc4941|RFC 4941]]) 
 +      * Interface ID można generować powtarzalnie dla danej sieci((generowany używając m. inn. prefiksu sieci i wcześniej wylosowanego (i pamiętanego) sekretu)) [[https://​www.rfc-editor.org/​rfc/​rfc7217|RFC 7217]] [[https://​www.rfc-editor.org/​rfc/​rfc8064|RFC 8064]]
       * Interface ID można też ustawić ręcznie       * Interface ID można też ustawić ręcznie
     * do 64-bitów na prefix wystarczy     * do 64-bitów na prefix wystarczy
     * Adresy anycastowe – dowolny adres unicastowy można używać jako anycast, przy konfiguracji trzeba explicite dodać adres jako anycast.     * Adresy anycastowe – dowolny adres unicastowy można używać jako anycast, przy konfiguracji trzeba explicite dodać adres jako anycast.
     * W tej chwili wszystkie globalne adresy unicastowe są z sieci 2000::/3     * W tej chwili wszystkie globalne adresy unicastowe są z sieci 2000::/3
-  * Multicast: adresy zaczynające się od ff, po których następują 4 bity flag i 4 bity zasięgu+  * Multicast: adresy zaczynające się od ''​ff''​, po których następują 4 bity flag i 4 bity zasięgu: \\ <​html><​small></​html>​Czyli:​ ''​ff⚐Z::/​112'',​ gdzie ''​⚐''​ to miejsce flag, ''​Z''​ - zasięgu; np. ''​ff15:​1234::​6789:​abcd''<​html></​small></​html>​
     * Flagi: ''​0b00PT''​ \\ ''​T==0''​ oznacza że adres jest przydzielony przez "the global internet numbering authority"​[[https://​www.iana.org/​assignments/​ipv6-multicast-addresses/​ipv6-multicast-addresses.xhtml|[1]]] \\ ''​P==1''​ oznacza że adres został utworzony z wykorzystaniem prefixu adresów unicastowych     * Flagi: ''​0b00PT''​ \\ ''​T==0''​ oznacza że adres jest przydzielony przez "the global internet numbering authority"​[[https://​www.iana.org/​assignments/​ipv6-multicast-addresses/​ipv6-multicast-addresses.xhtml|[1]]] \\ ''​P==1''​ oznacza że adres został utworzony z wykorzystaniem prefixu adresów unicastowych
     * Zasięg: [[https://​www.iana.org/​assignments/​ipv6-multicast-addresses/​ipv6-multicast-addresses.xhtml#​ipv6-scope|[2]]] \\  ''​0x1''​ - interface-local,​ ''​0x2''​ - link-local, ''​0x5''​ - site local, ''​0x8''​ - organization-local,​ ''​0xe''​ - global     * Zasięg: [[https://​www.iana.org/​assignments/​ipv6-multicast-addresses/​ipv6-multicast-addresses.xhtml#​ipv6-scope|[2]]] \\  ''​0x1''​ - interface-local,​ ''​0x2''​ - link-local, ''​0x5''​ - site local, ''​0x8''​ - organization-local,​ ''​0xe''​ - global
Linia 60: Linia 64:
  
 ====== Budowa pakietu IPv6 ====== ====== Budowa pakietu IPv6 ======
-Zmiany: +Zmiany ​w porównaniu do IPv4
-  * Nagłówek IPv6 jest stałej długości – usunięto zmiennej długości ''​opcje''​ i zastąpiono ''​protokół''​ polem ''​następny nagłówek''​ \\ Znika pole ''​IHL''​ (długość nagłówka w IPv4) ''​długość całkowita''​ → ''​długość "​ładunku"''​ (payload length - wszystiego po nagłówku)+  * Nagłówek IPv6 jest stałej długości – usunięto zmiennej długości ''​opcje''​ i zastąpiono ''​protokół''​ polem ''​następny nagłówek''​ \\ Znika pole ''​IHL''​ (długość nagłówka w IPv4), a pole ''​długość całkowita''​ → ''​długość "​ładunku"''​ (payload length - wszystiego po nagłówku)
   * Zrezygnowano z pól o fragmentacji – jeśli jest potrzebna, dodaje się jako następny nagłówek ''​fragmentation header''​   * Zrezygnowano z pól o fragmentacji – jeśli jest potrzebna, dodaje się jako następny nagłówek ''​fragmentation header''​
   * Zmiany ewolucyjno/​porządkowe:​ ''​TTL''​→''​Hop Limit'',​ ''​ToS''​→''​Traffic class''​   * Zmiany ewolucyjno/​porządkowe:​ ''​TTL''​→''​Hop Limit'',​ ''​ToS''​→''​Traffic class''​
Linia 92: Linia 96:
  
 Testowanie: Testowanie:
-  * ''​ping6'' ​<​html><​small></​html>​(oraz nowsze implementacje zwykłego ''​ping''​)<​html></​small></​html>​+  * ''​ping6''​ oraz nowsze implementacje zwykłego ''​ping''​
   * ''​traceroute -6'',​ ''​tracepath6''​      (w lab. dodatkowo jest potrzebny przełącznik ''​-T'',​ np. ''​traceroute -T -6''​)   * ''​traceroute -6'',​ ''​tracepath6''​      (w lab. dodatkowo jest potrzebny przełącznik ''​-T'',​ np. ''​traceroute -T -6''​)
   * ''​nc -6''​   * ''​nc -6''​
Linia 98: Linia 102:
   ​   ​
 Wyświetlanie połączeń (domyślnie listuje zarówno IPv4 i IPv6): Wyświetlanie połączeń (domyślnie listuje zarówno IPv4 i IPv6):
-  * ''​netstat -6 -a''​+  * ''​netstat -6 -a [--wide]''​
   * ''​ss -6 -a''​   * ''​ss -6 -a''​
  
Linia 111: Linia 115:
 ====== Automatyczna konfiguracja i ICMPv6 ====== ====== Automatyczna konfiguracja i ICMPv6 ======
  
-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+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
  
 [[https://​en.wikipedia.org/​wiki/​Neighbor_Discovery_Protocol|Neighbor Discovery Protocol]] i Stateless Adress Autoconfiguration (SLAAC) [[https://​tools.ietf.org/​html/​rfc4861|RFC4861]] \\ [[https://​en.wikipedia.org/​wiki/​Neighbor_Discovery_Protocol|Neighbor Discovery Protocol]] i Stateless Adress Autoconfiguration (SLAAC) [[https://​tools.ietf.org/​html/​rfc4861|RFC4861]] \\
Linia 119: Linia 123:
   * Stacja przydziela sobie wybrany adres   * Stacja przydziela sobie wybrany adres
   * Stacja wysyła pytanie o routery (na adres multicastowy wszystkie-routery)   * Stacja wysyła pytanie o routery (na adres multicastowy wszystkie-routery)
-  * Routery odpowiadają wiadomością o dostępnych prefiksach (i DNS'​ach,​ [[https://​tools.ietf.org/​html/​rfc6106|RFC6106]])+  * Routery odpowiadają wiadomością o dostępnych prefiksach (i DNS'​ach,​ [[https://​tools.ietf.org/​html/​rfc8106|RFC8106]])
   * Stacja wybiera po jednym adresie z każdego dostępnego prefiksu   * Stacja wybiera po jednym adresie z każdego dostępnego prefiksu
    
Linia 129: Linia 133:
  
 Polecenie diagnostyczne z radvd do //​pasywnego//​ zbierania Router Advertisment:​ Polecenie diagnostyczne z radvd do //​pasywnego//​ zbierania Router Advertisment:​
-  * ''​radvdump''​ \\ włącza program nasłuchujący na RA+  * ''​radvdump''​ \\ włącza program nasłuchujący na RA \\ <​html><​small></​html>​Instalacja w OpenSuse: ''​zypper install radvd''​ <​html></​small></​html>​
 Pakiet narzędzi diagnostycznych [[https://​www.remlab.net/​ndisc6/​|ndisc6]]:​ Pakiet narzędzi diagnostycznych [[https://​www.remlab.net/​ndisc6/​|ndisc6]]:​
-  ​* Instalacja w OpenSuse: <​code>​zypper ar https://​download.opensuse.org/​repositories/​network:/​utilities/​openSUSE_Leap_15.3/​network:​utilities.repo+<​html><​!--  ​* Instalacja w OpenSuse: <​code>​zypper ar https://​download.opensuse.org/​repositories/​network:/​utilities/​openSUSE_Leap_15.3/​network:​utilities.repo
 zypper ref zypper ref
-zypper in -y ndisc6</​code>​+zypper in -y ndisc6</​code>​--></​html>
   * ''​rdisc6 ​ //​br0//''​ \\ wysyła Router Solicit na interfejsie ''//​br0//''​ i czeka na RA   * ''​rdisc6 ​ //​br0//''​ \\ wysyła Router Solicit na interfejsie ''//​br0//''​ i czeka na RA
   * ''​ndisc6 ​ //​fe80::​20c:​42ff:​feb6:​9452// ​ //​br0//''​ \\ wysyła Neighbour Solicit o adres fe80:… na interfejsie ''//​br0//''​ i czeka na Neighbour Advertisment   * ''​ndisc6 ​ //​fe80::​20c:​42ff:​feb6:​9452// ​ //​br0//''​ \\ wysyła Neighbour Solicit o adres fe80:… na interfejsie ''//​br0//''​ i czeka na Neighbour Advertisment
Linia 148: Linia 152:
 <​html><​small></​html>​ <​html><​small></​html>​
 \\ Możesz sprawdzić działanie Path MTU discovery przez: \\ Możesz sprawdzić działanie Path MTU discovery przez:
 +  ip -6 route flush cache
   ip route get 2001:​470:​647b::​1   ip route get 2001:​470:​647b::​1
   ping -s 1500 2001:​470:​647b::​1   ping -s 1500 2001:​470:​647b::​1
Linia 154: Linia 159:
  
 ====== Współistnienie IPv4 i IPv6 ====== ====== Współistnienie IPv4 i IPv6 ======
 +[[https://​en.wikipedia.org/​wiki/​IPv6#​Dual-stack_IP_implementation|Dual-stack]] – urządzenie ma jednocześnie adres z sieci IPv4 i IPv6 oraz bezpośrednią łączność do sieci IPv4 i IPv6.
  
 Tunele: Tunele:
-  * "​proste"​[[https://​en.wikipedia.org/​wiki/​6in4|6in4]] ​, http://​www.cs.put.poznan.pl/​mlibuda/​IPv6.pdf ​(uwaga: nie mylić z [[https://​en.wikipedia.org/​wiki/​6to4|6to4]]!) +  * "​proste"​[[https://​en.wikipedia.org/​wiki/​6in4|6in4]]((uwaga: nie mylić z [[https://​en.wikipedia.org/​wiki/​6to4|6to4]]!)) – pakiet IPv6 jest przesyłany jako dane pakietu IPv4 wysłanego z jednego końca tunelu do drugiego; tunel dla IPv6 widziany jest jako zwykłe połączenie IPv6   http://​www.cs.put.poznan.pl/​mlibuda/​IPv6.pdf ​ 
-  * tunnel broker https://​en.wikipedia.org/​wiki/​Tunnel_broker +  * tunnel broker ​– usługa konfigurująca automatycznie zdalny koniec tunelu tak, by użytkownik końcowy mógł połączyć się z internetem IPv6 https://​en.wikipedia.org/​wiki/​Tunnel_broker ​
 Skąd brać tunele? Przykłady: Skąd brać tunele? Przykłady:
   * https://​www.tunnelbroker.net   * https://​www.tunnelbroker.net
-  * https://​en.wikipedia.org/​wiki/​List_of_IPv6_tunnel_brokers+  * <del>https://​en.wikipedia.org/​wiki/​List_of_IPv6_tunnel_brokers</​del> ​ [[https://​tunnelbroker.services]]
   * <​html><​small></​html><​del>​[[https://​www.sixxs.net/​sunset/​|https://​www.sixxs.net]]</​del><​html></​small></​html>​   * <​html><​small></​html><​del>​[[https://​www.sixxs.net/​sunset/​|https://​www.sixxs.net]]</​del><​html></​small></​html>​
 +
 +Tłumaczenia adresów, różne:
 +  * [[https://​en.wikipedia.org/​wiki/​NAT64|NAT64 + DNS64]] – host nie ma wcale IPv4, co za tym idzie żadnej łączności do adresów IPv4.
 +    * host może wysłać pakiet pod adresy IPv6 z sieci (zwykle) 64:​ff9b::/​96,​ w których w ostatnie 32 bity wpisuje adres IPv4. \\ pakiet trafia do translatora (NAT64) który ma adres publiczny IPv4 i taki pakiet przesyła dalej po IPv4. \\ NAT64 jest zwykle stanowy, ma wady i ograniczenia.
 +    * żeby dostać się do stron dostępnych tylko po IPv4 host używa specjalnego DNSa (DNS64) który odpowiada adresem z sieci IPv6 powyższego tłumacza zawierającym adres IPv4 tłumaczonej domeny
 +  * [[https://​en.wikipedia.org/​wiki/​IPv6_transition_mechanism#​464XLAT|464XLAT]] – host ma prywatny IPv4((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)) i sam tłumaczy adresy IPv4 na IPv6 tłumacza (wyżej opisanego NAT64) ​
 +  * [[https://​en.wikipedia.org/​wiki/​IPv6_transition_mechanism#​Dual-Stack_Lite_(DS-Lite)|DS-lite]] – host dostaje od usługodawcy,​ poza publicznym IPv6, prywatny adres IPv4, a usługodawca u siebie tłumaczy adresy (logicznie zwykły NAT z IPv4 na IPv4, tylko duży i po stronie usługodawcy:​ [[https://​en.wikipedia.org/​wiki/​Carrier-grade_NAT|Carrier-grade_NAT]])
 +
 +
  
  
Linia 176: Linia 190:
     * https://​www.ripe.net/​support/​training/​material/​basic-ipv6-training-course/​BasicIPv6-Slides.pdf ​     * https://​www.ripe.net/​support/​training/​material/​basic-ipv6-training-course/​BasicIPv6-Slides.pdf ​
     * https://​www.ripe.net/​support/​training/​material/​ripe-ncc-training-material#​IPV6     * https://​www.ripe.net/​support/​training/​material/​ripe-ncc-training-material#​IPV6
-    * https://​www.ripe.net/​support/​training/​videos/​ipv6/​transition-mechanisms) +    ​* **https://​www.ripe.net/​support/​training/​videos/​ipv6/​transition-mechanisms** 
-  * Materiały przygotowane w ramach finansowanego przez EU [[https://​cordis.europa.eu/​project/​id/​015926|projektu ]] //IPv6 dissemination and exploitation//:+  * Materiały przygotowane w ramach finansowanego przez EU [[https://​cordis.europa.eu/​project/​id/​015926|projektu ]] [[http://6diss.6deploy.eu/​tutorials/​|IPv6 dissemination and exploitation]]:
     * http://​6diss.6deploy.eu/​tutorials/​addressing.pdf     * http://​6diss.6deploy.eu/​tutorials/​addressing.pdf
     * http://​6diss.6deploy.eu/​tutorials/​ipv6_protocols.pdf     * http://​6diss.6deploy.eu/​tutorials/​ipv6_protocols.pdf
Linia 185: Linia 199:
 <​html><​small></​html>​ <​html><​small></​html>​
 ====== Ekstra ====== ====== 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''​, np. ''​ping fe80::​a6d:​41ff:​fee0:​1860%eth0'' ​[[https://​en.wikipedia.org/​wiki/​IPv6_address#​Link-local_addresses_and_zone_indices]] ]. \\ Podobnie wygląda składnia dla multicastów,​ np. ''​ping ff02::​01%em1''​ wysyła ping na adres all-nodes na karcie em1.+  * Łą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'' ​ [[https://​en.wikipedia.org/​wiki/​IPv6_address#​Scoped_literal_IPv6_addresses_(with_zone_index)|[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/​   * Apple store wymaga od każdej aplikacji działania w sieciach z samym IPv6 https://​developer.apple.com/​support/​ipv6/​
 <​html></​small></​html>​ <​html></​small></​html>​
sk2/ipv6.1642370451.txt.gz · ostatnio zmienione: 2022/01/16 23:00 przez jkonczak