]> gitweb.morketsmerke.org Git - mmdev.git/commitdiff
Rozpoczęcie i zakończenie pisania 8 rozdziału, modułu 2, Cisco CCNA.
authorxf0r3m <jakubstasinski@protonmail.com>
Thu, 5 Sep 2024 15:37:40 +0000 (17:37 +0200)
committerxf0r3m <jakubstasinski@protonmail.com>
Thu, 5 Sep 2024 15:37:40 +0000 (17:37 +0200)
articles/terminallog/Cisco_-_CCNA.html

index f47612eaed2a3a7fad0975df8b3fa60e38b2a3c5..5e8951d87541cda4a24c4f7b65518a0e502cd295 100755 (executable)
@@ -8101,6 +8101,413 @@ Vlan1                  192.168.10.4    YES DHCP   up                    up
         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:\&gt;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>