wykorzystać system Cisco IOS w roli serwera DHCP, przekaźnika oraz
na koniec klienta.
</p>
+ <h1 id="2.8.slaacanddhcpv6">2.8. SLAAC i DHCPv6</h1>
+ <p>
+ Podobnie do IPv4, mamy możliwość zarówno statycznej jak i dynamicznej
+ konfiguracji interfejsów sieciowych dla IPv6. Przy czym, znając budowę
+ adresów IPv6, nie wiadomo czy ktoś będzie to robić ręcznie. A w
+ przypadku konfiguracji dynamicznej mamy do wykorzystania trzy metody.
+ </p>
+ <ul>
+ <li>Metoda autokonfiguracji - <strong>SLAAC</strong></li>
+ <li>Metoda bezstanowego serwera DHCP - <strong>Stateless DHCPv6</strong>
+ <li>Metoda stanowowego serwera DHCP - <strong>Stateful DHCPv6</strong>
+ </ul>
+ <p>
+ Omówimy sobie pokolei te metody, a następnie zabierzemy się
+ do konfigurowania każdej z nich w systemie Cisco IOS.
+ </p>
+ <p>
+ Za nim jednak do tego przjedziemy, krótkie przypomnienie o IPv6. Adres
+ IPv6 ma długość 128b, składa się z 8 hekstetów po 4 cyfyry
+ heksadecymalne. Adresy IPv6 dzielą się na dwie grupy
+ <strong>GUA</strong> (<em>Global Unicast Address</em>), rozpoczynające
+ się od prefiksu: 2000::/3 oraz <strong>LLA</strong>
+ (<em>Local Link Address</em>), rozpoczynające się od prefiksu
+ fe80::/10. W przypadku IPv6 do określenia części sieciowej adresu IP
+ wykorzystuje tzw. <strong>prefiks</strong> - zarezerwowana liczba
+ bitów. W przypadku adresów <em>unicast</em> przeważnie adres dzieli się
+ na pół - prefiks ma długość 64 bitów. Drugie pół adresu IPv6 określa
+ już sam host generując wartości pseudolosowe (w przypadku większości
+ systemów operacyjnych) lub korzystając z algorytmu EUI-64. Ta część
+ adresu nazwana jest <strong>identyfikatorem hostan</strong>
+ Adresy GUA służą do komunikacji
+ w Internecie, natomiast adresy LLA, ograniczają się do jednej domeny
+ rozgłoszeniowej. Każdy komputer posiada dwa adresy przypisane do
+ swojego interfejsu. Przez co każdy komputer może być w prosty sposób
+ osiągalny z poziomu Internetu. Każdy komputer ma również zapisane
+ adresy typu <em>multicast</em> - ff02::1 - adres wszystkich hostów
+ obsługujących IPv6 oraz ff02::2 - adres wszystkich routerów z
+ routingiem IPv6. Te adresy bedą mieć znaczenie przy dynamicznej
+ adresacji hostów. Dynamiczna adresacja hostów, będzie dotyczyć
+ wyłącznie adresów GUA. Adresy LLA, są konfigurowane automatycznie na
+ hostach.
+ </p>
+ <h2 id="2.8.1.slaac">2.8.1. SLAAC</h2>
+ <p>
+ Protokół IPv6, znacznie bardziej angażuje protokół ICMP w wersji 6 do
+ pracy niż miało to miejsce w przypadku IPv4 i ICMPv4. Założenie
+ IPv6 jak i metody konfiguracji <strong>SLAAC</strong> było takie, że
+ gdzie w sieci musi być jakiś router. I jednym z jego zadań jest
+ wysłanie co 200 sek komunikatu protokołu ICMPv6 zawierającego takie
+ informacje jak:
+ </p>
+ <ul>
+ <li><strong>Flagi</strong> - zbiór bitów, mówiących hostowi w jaki
+ sposób będzie konfigurować adres IPv4 w tej sieci.</li>
+ <li><strong>Prefiks</strong> - część sieciowa adresu IPv6.</li>
+ <li><strong>Długość prefiksu</strong> - długość częsci sieciowej
+ adresu IPv6.</li>
+ <li><strong>Adres bramy domyślnej.</strong></li>
+ </ul>
+ <p>
+ Komunikat ten nosi nazwę <em>Router Advertisement</em>, w skrócie
+ <strong>RA</strong>. Host po podłączeniu do sieci może wysłać
+ inny komunikat ICMPv6 - <em>Router Solicitation</em> -
+ <strong>RS</strong>, który jest prośbą o wysłanie przez Router
+ komunikatu RA. Komunikaty RS jako adres docelowy wykorzystują adres
+ <em>multicast</em> grupy routerów.
+ </p>
+ <p>
+ Flagi przekazywane w komunikacie RA, wskazują hostowi w jaki sposób
+ będzie odbywać się konfiguracji interfejsu IPv6 w tej sieci. Możemy
+ wyróżnić takie flagi jak:
+ </p>
+ <ul>
+ <li><strong>M</strong> (<em>Managed</em>) - oznacza ona, że
+ konfiguracja IPv6 będzie odbyć się przy użyciu serwera DHCPv6
+ (W nomenklaturze CCNA, stanowego serwera DHCPv6).</li>
+ <li><strong>O</strong> (<em>Other</em>) - oznacza ona, że tylko
+ dodatkowe informacje takie jak adresy serwerów DNS, będą dostarczane
+ przez serwer DHCPv6. (W nomenklaturze CCNA, bezstanowy serwer DHCPv6)</li>
+ <li><strong>A</strong> (<em>Autoconfiguration</em>) - oznacza ona,
+ że adres IPv6 będzie uzyskiwany metodą autokonfiguracji - SLAAC.
+ (Dokument RFC 1970, mówi że ta flaga, znajduje się w sekcji opcji
+ odpowiedzialnej za informacje na temat prefiksu, a nie w samym RA
+ stricte.)</li>
+ </ul>
+ <p>
+ Zatem jeśli host otrzyma komunikat RA z ustawiowymi flagami M=0, O=0
+ oraz z flagą A=1, w <em>prefix information</em> - oznacza to, że adres
+ musi on sobie ustawić sam. Dokonuje tego przy użyciu prefiksu i jego
+ długości z komunikatu RA oraz przy użyciu samodzielnie wygenerowanego
+ identyfikatora hosta. Czy użyje metod pseudolosowych czy algorytmu
+ EUI-64, to już zależy od systemu operacyjnego. Przy czym tak
+ wygenerowany należy adres, należy sprawdzić. Szanse są nikłe, ale ta
+ czynność jest wykonywana, rozsyłane są między hostami komunikaty ICMPv6
+ NA (<em>Neighbor Advertisement</em>) oraz NS
+ (<em>Neighbor Solicitation</em>) - co ma być odpowiednikiem protokołu
+ ARP. Host wysła komunikat NS na swój
+ wygenerowany adres i jeśli odpowiedź nie nadejdziej oznacza to, że
+ adres jest operacyjny i może go użyć. W ten sposób działa mechanizm
+ <strong>DAD</strong> (<em>Duplicate Address Detection</em>).
+ </p>
+ <p>
+ Ta metoda zapewnia podstawową konfigurację sieciową, pozwalająca na
+ komunikację z hostem. Jednak jeśli był by to zwykły komputer klasy PC,
+ z którego ma korzystać człowiek, to brakuje informacji takich jak
+ adresy serwerów DNS, aby móc korzystać zasobów sieci firmy czy
+ Internetu.
+ </p>
+ <h2 id="2.8.2.statelessdhcpv6">2.8.2. Metoda bezstanowego serwera DHCPv6</h2>
+ <p>
+ Metoda ta działa na zasadzie uzupełnienia konfiguracji interfesów
+ sieciowych IPv6, wstępnie skonfigurowanych przez metodę SLAAC. Dlatego
+ też możemy spotkać się określeniem SLAAC+DHCPv6. Działanie tej metody
+ zakłada, że w sieci znajduje się serwer DHCPv6, mimo to host dalej
+ będą korzystać informacji zawartych w RA, następnie po proszą serwer
+ DHCPv6 o uzupełnienie informacji dodatkowych.
+ </p>
+ <p>
+ W przypadku metody bezstanowego serwera DHCPv6, host odbiera RA z
+ ustawioną flagą M=0, O=1 i A=1. Ustawia on swoje podstawowe parametry
+ sieciowe, na podstawie informacji zawartych komunikacie (poprzez użycie
+ SLAAC) następnie host wysła <strong>DHCPv6 SOLICIT</strong> w celu
+ odnalezienia serwera DHCP (coś w rodzaju, DHCPDISCOVER) w odpowiedzi
+ otrzymuje <strong>DHCPv6 ADVERTISE</strong>, z informacją że jest
+ serwera taki, a taki i obsługuje on protokoł DHCPv6. To wówczas
+ host wysła komunikat <strong>DHCPv6 INFORMATION-REQUEST</strong> już
+ na adres serwera uzyskany z poprzeniego pakietu. W odpowiedzi uzyska
+ komunikat <strong>DHCPv6 REPLY</strong> o treści odpowiedniej dla
+ <em>DHCPv6 INFORMATION-REQUEST</em>.
+ </p>
+ <h2 id="2.8.3.statefulldhcpv6">2.8.3. Metoda stanowego serwera DHCPv6</h2>
+ <p>
+ Mimo, że SLAAC+DHCPv6, rozwiązuje problemy z niepełną konfiguracją z
+ komunikatów RA, wykorzystywanych przez SLAAC, to w sieciach firmowych
+ chcielibyśmy mieć kontrolę, chociażby nad tym, kto się podłacza do
+ naszej sieci. Dlatego też wprowadzono metodę: stanowego serwera
+ DHCPv6, którego działanie jest podobne do serwera DHCPv4.
+ </p>
+ <p>
+ Host wysła komunikat RS, lub udaje mu się odebrać komunikat RA. W nim
+ flagi są ustawione: M=1, O=0, A=0. Możemy się czasami spotkać z
+ twierdzeniem, że flagi O, nie ma w ogóle, ale jest to raczej błąd. Tak
+ ustawione flagi mówią hostowi, że ma korzystać z serwera DHCPv6. To
+ host rozpoczyna wymianę pakietów, podobną do metody bezstanowowej, a
+ różniącej się tym, że nie korzysta on z informacji zawartych w RA
+ (wszystkich), tylko rozpoczyna poszukiwanie serwera DHCPv6. Główną
+ różnicą między tymi metodami jest użycie komunikatu
+ <strong>DHCPv6 REQUEST</strong>, zamiast <em>INFORMATION-REQUEST</em>.
+ Inna również będzie treść wiadomości <em>DHCPv6 REPLY</em>.
+ </p>
+ <p>
+ Ważną informacją obejmującą wszystkie metody dynamicznej konfiguracji
+ IPv6 jest to, że hosty <strong>będą korzystać z adresu <em>link-local</em>
+ routera (adresu źródłowego komunikatu RA) jako bramy domyślnej</strong>.
+ Nie będą korzystać ani z info zawartego w RA ani w odpowiedzi od
+ DHCP.
+ </p>
+ <h2 id="2.8.4.configurationdhcpv6onios">2.8.4. Konfiguracja DHCPv6 na Cisco IOS</h2>
+ <p>
+ System operacyjny Cisco IOS, jest wstanie świadczyć usługę DHCP
+ również dla IPv6. Przeprowadzimy następujące konfigurację:
+ </p>
+ <ul>
+ <li>Bezstanowego DHCPv6</li>
+ <li>Stanowego DHCPv6</li>
+ <li>Klienta DHCPv6</li>
+ <li>Agenta przekazywania</li>
+ </ul>
+ <p>
+ W przypadku bezstanowego serwera DHCP, na routerze w pierwszej
+ kolejności włączamy routing IPv6. Zawsze jest on domyślnie włączony.
+ </p>
+<pre class="code-block">
+Srv-DHCPv6(config)#ipv6 unicast-routing
+</pre>
+ <p>
+ Następnie definiujemy nowa pulę adresów.
+ </p>
+<pre class="code-block">
+Srv-DHCPv6(config)#ipv6 dhcp pool IPV6-STATELESS
+</pre>
+ <p>
+ Konfigurujemy pule, dodając te opcje, które chcemy aby klienci naszej
+ sieci otrzymywali z serwera DHCPv6.
+ </p>
+<pre class="code-block">
+Srv-DHCPv6(config-dhcpv6)#dns-server 2001:db8:acad:1::254
+Srv-DHCPv6(config-dhcpv6)#domain-name example.com
+</pre>
+ <p>
+ Teraz musimy przypisać pulę do interfejsu, ale także zmodyfikować
+ flagę w komunikatach RA. Dokonujemy tego za pomocą poniższych
+ poleceń.
+ </p>
+<pre class="code-block">
+Srv-DHCPv6(config-if)#ipv6 nd other-config-flag
+Srv-DHCPv6(config-if)#ipv6 dhcp server IPV6-STATELESS
+</pre>
+ <p>
+ Pierwsze polecenie:
+ <code class="code-inline">ipv6 nd other-config-flag</code> ustawia
+ flagę <strong>O</strong> w komunikach RA. Natomiast drugie polecenie:
+ <code class="code-inline">ipv6 dhcp server IPV6-STATELESS</code>
+ przypisuje pulę interfejsu. Teraz możemy skonfigurować klieckiego
+ PC-ta, aby pobrał konfigurację IPv6 z naszej infrastruktury.
+ </p>
+<pre class="code-inline">
+Cisco Packet Tracer PC Command Line 1.0
+C:\>ipconfig /all
+
+FastEthernet0 Connection:(default port)
+
+ Connection-specific DNS Suffix..: example.com
+ Physical Address................: 0060.4784.E138
+ Link-local IPv6 Address.........: FE80::260:47FF:FE84:E138
+ IPv6 Address....................: 2001:DB8:ACAD:1:260:47FF:FE84:E138
+ IPv4 Address....................: 0.0.0.0
+ Subnet Mask.....................: 0.0.0.0
+ Default Gateway.................: FE80::1
+ 0.0.0.0
+ DHCP Servers....................: 0.0.0.0
+ DHCPv6 IAID.....................: 1699464132
+ DHCPv6 Client DUID..............: 00-01-00-01-61-90-B4-E8-00-60-47-84-E1-38
+ DNS Servers.....................: 2001:DB8:ACAD:1::254
+ 0.0.0.0
+</pre>
+ <p>
+ Konfiguracja PC-ta, jest banalna wystarczy kliknąć jedną opcje. A co
+ w przypadku systemu Cisco IOS? Spróbujmy to zrobić, wykorzystując do
+ tego drugi router. Po przejściu do konfiguracji globalnej, włączamy
+ routing IPv6.
+ </p>
+<pre class="code-block">
+Cli-DHCPv6(config)#ipv6 unicast-routing
+</pre>
+ <p>
+ Następnie włączamy IPv6 na interfejsie sieciowym i ustawiamy aby
+ pobrał on konfigurację z DHCP. Na koniec podnosimy interfejs.
+ </p>
+<pre class="code-block">
+Cli-DHCPv6(config)#ipv6 unicast-routing
+Cli-DHCPv6(config)#int gig0/0/1
+Cli-DHCPv6(config-if)#ipv6 enable
+Cli-DHCPv6(config-if)#ipv6 address autoconfig
+Cli-DHCPv6(config-if)#no shut
+Cli-DHCPv6(config-if)#end
+Cli-DHCPv6#sh ipv6 int br
+GigabitEthernet0/0/0 [administratively down/down]
+ unassigned
+GigabitEthernet0/0/1 [up/up]
+ FE80::201:64FF:FE98:9802
+ 2001:DB8:ACAD:1:201:64FF:FE98:9802
+GigabitEthernet0/0/2 [administratively down/down]
+ unassigned
+Vlan1 [administratively down/down]
+ unassigned
+Cli-DHCPv6#sh ipv6 dhcp interface
+GigabitEthernet0/0/1 is in client mode
+ State is INFORMATION-REQUEST(0)
+ Rapid-Commit: disabled
+</pre>
+ <p>
+ Ostatnie dwa polecenia:
+ <code class="code-inline">sh ipv6 int br</code>
+ (<code class="code-inline">show ipv6 interface brief</code>) oraz
+ <code class="code-inline">sh ipv6 dhcp interface</code> mogą nam
+ posłużyć do sprawdzenia konfiguracji IPv6 interfejsów oraz konfiguracji
+ DHCPv6 interfejsu. W tym przypadku na podstawie wyjścia drugie
+ polecenia, może stwiedzić, że działa on w trybie bezstanowego serwera
+ DHCPv6.
+ </p>
+ <p>
+ Kolejny rodzajem konfiguracji jaki możemym przeprowadzić jest stanowy
+ serwer DHCPv6 oraz stanowy klient. Konfiguracja dla serwera wygląda
+ w następujący sposób:
+ </p>
+<pre class="code-block">
+Srv2-DHCPv6(config)#ipv6 unicast-routing
+Srv2-DHCPv6(config)#ipv6 dhcp pool IPV6-STATEFUL
+Srv2-DHCPv6(config-dhcpv6)#address prefix 2001:db8:acad:1::/64
+Srv2-DHCPv6(config-dhcpv6)#dns-server 2001:4860:4860::8888
+Srv2-DHCPv6(config-dhcpv6)#domain-name example.com
+Srv2-DHCPv6(config-dhcpv6)#exit
+Srv2-DHCPv6(config)#int gig0/0/1
+Srv2-DHCPv6(config-if)#ipv6 addr 2001:db8:acad:1::1/64
+Srv2-DHCPv6(config-if)#ipv6 addr fe80::1 link-local
+Srv2-DHCPv6(config-if)#ipv6 nd managed-config-flag
+Srv2-DHCPv6(config-if)#ipv6 dhcp server IPV6-STATEFUL
+Srv2-DHCPv6(config-if)#no shutdown
+</pre>
+ <p>
+ Konfigurując IOS jako serwer stanowy DHCPv6, musimy w definicji puli
+ wpisać prefiks naszej sieci. Następnie w konfiguracji interfejsu
+ ustawiamy flagę <strong>M</strong> i przypisujemy odpowiednią do
+ interfejsu pulę DHCPv6. Reszta konfiguracji pozostaje bez zmian.
+ </p>
+ <p>
+ W materiałach występuje jeszcze jedno polecenie:
+ <code class="code-inline">ipv6 nd prefix default no-autoconfig</code>
+ jednak może być ono niedostępne w wersjach oprogramowania IOS
+ dostarczany wraz z Packet Tracer-em.
+ </p>
+ <p>
+ Natomast konfiguracja stanowego klienta wygląda w opisany poniżej
+ sposób.
+ </p>
+<pre class="code-block">
+Cli2-DHCPv6(config)#ipv6 unicast-routing
+Cli2-DHCPv6(config)#int gig0/0/1
+Cli2-DHCPv6(config-if)#ipv6 enable
+Cli2-DHCPv6(config-if)#ipv6 address dhcp
+Cli2-DHCPv6(config-if)#no shutdown
+Cli2-DHCPv6#sh ipv6 int br
+GigabitEthernet0/0/0 [administratively down/down]
+ unassigned
+GigabitEthernet0/0/1 [up/up]
+ FE80::201:96FF:FEB3:8A02
+ 2001:DB8:ACAD:1:D0CF:E066:3BF5:2825
+GigabitEthernet0/0/2 [administratively down/down]
+ unassigned
+Vlan1 [administratively down/down]
+ unassigned
+Cli2-DHCPv6#sh ipv6 dhcp interface
+GigabitEthernet0/0/1 is in client mode
+ State is OPEN
+ Renew will be sent in 0d0h
+ List of known servers:
+ Reachable via address: FE80::1
+ DUID: 0003000100062ACD7E01
+ Preference: 0
+ Configuration parameters:
+ IA PD: IA ID 226950255, T1 0, T2 0
+ Address: 2001:DB8:ACAD:1:D0CF:E066:3BF5:2825/64
+ preferred lifetime 86400, valid lifetime 172800
+ expires at September 7 2024 3:47:3 pm (172800 seconds)
+ DNS server: 2001:4860:4860::8888
+ Domain name: example.com
+ Information refresh time: 0
+ Prefix name:
+ Rapid-Commit: disabled
+</pre>
+ <p>
+ W taki sposób wygląda to od strony serwera:
+ </p>
+<pre class="code-block">
+Srv2-DHCPv6#show ipv6 dhcp interface
+GigabitEthernet0/0/1 is in server mode
+ Using pool: IPV6-STATEFUL
+ Preference value: 0
+ Hint from client: ignored
+ Rapid-Commit: disabled
+Srv2-DHCPv6#show ipv6 dhcp binding
+Client: FE80::201:96FF:FEB3:8A02
+ DUID: 00030001000196B38A01
+ IA NA: IA ID 226950255, T1 0, T2 0
+ Address: 2001:DB8:ACAD:1:D0CF:E066:3BF5:2825
+ preferred lifetime 86400, valid lifetime 172800
+ expires at September 7 2024 3:50:18 pm (172800 seconds)
+Srv2-DHCPv6#show ipv6 dhcp pool
+DHCPv6 pool: IPV6-STATEFUL
+ Address allocation prefix: 2001:db8:acad:1::/64 valid 172800 preferred 86400 (2 in use, 0 conflicts)
+ DNS server: 2001:4860:4860::8888
+ Domain name: example.com
+ Active clients: 1
+</pre>
+ <p>
+ <code class="code-inline">binding</code>, przedstawia listę klientów
+ serwera DHCPv6. Natomiast <code class="code-inline">pool</code>,
+ pokazuje nam statystyki na temat przydzielonej do interfejsu puli.
+ </p>
+ <p>
+ Ostatnią konfiguracją będzie konfiguracja agenta przekazującego.
+ Nie mniej jednak na Packet Tracerze, nie będziemy w stanie tego zrobić.
+ Dlatego można potraktować to jako suchą wiedzę. Na interfejsie
+ nasłuchującym w sieci, z którego normalnie powinniśmy otrzymać adres IP
+ wpisujemy poniższe polecenie.
+ </p>
+<pre class="code-block">
+ Rly-DHCPv6(config)#int gig0/1
+Rly-DHCPv6(config-if)#ipv6 dhcp ?
+ client Act as an IPv6 DHCP client
+ server Act as an IPv6 DHCP server
+Rly-DHCPv6(config-if)#ipv6 dhcp relay destination 2001:db8:acad:1::2 gig0/0
+ ^
+% Invalid input detected at '^' marker.
+
+Rly-DHCPv6(config-if)#exit
+</pre>
+ <p>
+ W poleceniu <code class="code-inline">relay destination</code>
+ podajemy adres serwera. Dodatkowo, jeśli adresem serwera DHCP będzie
+ LLA, musimy podać wyjściowy interfejs taki jak na przykładzie
+ (<code class="code-inline">gig0/0</code>).
+ </p>
+ <h2 id="ch8summary">Podsumowanie</h2>
+ <p>
+ W tym rozdziale dowiedzieliśmy się jak wyglądają metody dynamicznej
+ adresacji hostów dla protokołu IPv6. Poznaliśmy w jaki sposób te
+ metody działają oraz jakie komunikaty klient oraz serwer (w zależności
+ od metody) ze sobą wymieniają aby finalnie skonfigurować adres IPv6 dla
+ interfejsu. Na koniec poznaliśmy jakie w tym zakresie możliwości ma
+ system Cisco IOS oraz jakim <em>crapem</em> są materiały, w których
+ funkcjonuje jedno zagadnienie, a nie jest ono możliwe do zrealizowania
+ w środowisku symulacyjnym jakim jest Packet Tracer. Nie prościej było
+ to usunąć lub poprawić tego Packet Tracer-a. Czy to tak wiele dla tak
+ dużej firmy?
+ </p>
</div>
</body>
</html>