metody konfiguracji w systemie IOS oraz rozwiązywanie związanych z nią
problemów.
</p>
+ <h1 id="2.7.dhcpv4">2.7. DHCPv4</h1>
+ <p>
+ Komputery w sieci, tak jak my ludzie potrzebujemy adresów, żeby
+ otrzymywać móc wysyłać i odbierać komunikaty. Komputerom w sieci
+ możemy przypisać adresy ręcznie - co nazwane jest
+ <strong>statyczną</strong> konfiguracją hosta, bądź też wykorzystać
+ do tego odpowiednie oprogramowanie, które pozwoli na zautomatyzowanie
+ procesu oraz na bezobsługowe zarządzanie nim. Jedyną czynnością będzie
+ konfiguracja protokołu
+ <strong><em>Dynamic Host Configuration Protocol</em></strong>. Za
+ konfigurację hostów sieci odpowiada konkretny protokół, który
+ dynamicznie przydziela (dzierżawi) adres IPv4 z puli dostępnych
+ adresów, na określony czas lub do momentu kiedy host już go nie
+ potrzebuje. Czas dzierżawy może być zdefiniowany przez administratora,
+ najczęściej są to 24 godziny.
+ </p>
+ <p>
+ Serwer DHCP działa na zasadzie architektury klient-serwer. Serwerami
+ DHCP, może być dedykowane oprogramowanie instalowane na dystrybucjach
+ Linuksa oraz na systemach MS Windows. Urządzenia z systemem IOS takie
+ jak routery, czy przełączniki warstwy 3 mogą również pełnić rolę
+ serwera DHCP o czym się przekonamy w dalszej części tego materiału.
+ </p>
+ <p>
+ Komputer będąc skonfigurownym w ten sposób, aby otrzymywał adres
+ autotomatycznie, komunikuje się z serwerem DHCP. Miedzy hostami
+ wymieniane są komunikaty protokół, rezultatem czego jest wydzierżawienie
+ adresu IP dla tego hosta. Jeśli czas dzierżawy dobiega końca, host
+ komunikuje się z serwerem w celu odnowienia dzierżawy, jeśli klient
+ nie skontaktuje się z serwerem w odpowiednim czas, dzieżawa wygasa, a
+ adres trafia z powrotem do <strong>puli</strong> - zakresu adresów,
+ przeznaczonych dla tej sieci - i może zostać wydzierżawiony innym
+ hostom. Ten mechanizm pozwala na zwolnienie adresów, które hosty już
+ nie potrzebują, bo są np. wyłączone.
+ </p>
+ <p>
+ Wymiana komunikatów protokołu DHCP w celu uzyskania dzierżawy wygląda
+ w następujący sposób:
+ </p>
+ <ol>
+ <li>Klient wysyła ramkę <em>broadcastową</em>, zawierającą komunikat
+ <strong>DHCPDISCOVER</strong>. Klient nie ma adresu IP stąd ten
+ <em>broadcast</em>. Ten komunikat mówi, że dany host szuka serwera
+ DHCP.</li>
+ <li>Serwer odpowiada klientowi, za pomocą komunikatu
+ <strong>DHCPOFFER</strong>, przedstawiając mu już konkretną ofertę
+ adresu jaki dostanie.</li>
+ <li>Klient potwierdza dzierżawę adresu za pomocą komunikatu
+ <strong>DHCPREQUEST</strong> wysyłanego w ramce
+ <em>broadcast</em>. Mimo, że host mógłby wysłać ten komunikat
+ prosto do serwera, z którego otrzymał ofertę, to nie robi tego.
+ Ponieważ w sieciach może istnieć więcej niż jeden serwer DHCP.
+ Wysłanie DHCPREQUEST na <em>broadcast</em>, przekaże informacje
+ innym serwerom DHCP, że host przyją ofertę innego serwera, więc
+ tamtem serwer może przywrócić proponowany adres z powrotem do puli.
+ </li>
+ <li>Serwer na koniec potwierdzenie akceptacji w postaci komunikatu
+ <strong>DHCPACK</strong>. Teoretycznie komunikacja z serwerem DHCP
+ tutaj się kończy, ale klient wykonuje jescze jedną czynność.</li>
+ </ol>
+ <p>
+ Mianowicie wysyła pakiet ARP z zapytaniem o przydzielony mu właśnie
+ adres. Może zdażyć się taka sytuacja, że mamy część komputerów
+ skonfigurowanych ze statycznymi adresami, a część z dynamicznymi.
+ A na serwerze DHCP nie dokonano odpowiednich wykluczeń z puli.
+ Wówczas serwer DHCP, będzie przydzielać adresy, które już funkcjonują
+ w sieci. Wtedy dochodzi do konfilktu adresów IP.
+ </p>
+ <p>
+ Odnowienie adresu IP, skraca powyższą procedurę do dwóch ostatnich
+ komunikatów. Klient prosi o odnowienie adresu za pomocą komunikatu
+ DHCPREQUEST, a natomiast serwer odpowiada za pomocą DHCPACK.
+ </p>
+ <h2 id="2.7.1.dhcpv4serveronios">2.7.1. Konfiguracja serwera DHCPv4 na Cisco IOS</h2>
+ <p>
+ Poznaliśmy niezbędną teorie, to teraz możemy zmusić IOS, nie tylko na
+ routerze, ale i na przełącznikach też - do pełnienia funkcji serwera
+ <em>DHCPv4</em>.
+ </p>
+ <p>
+ Możemy tego dokonać za pomocą kilku kroków. Pierwszą czynnością będzie
+ uwzględnienie ewentualnych urządzeń z ustawionymi statycznym adresami
+ IP. Należy dokonać konkretnych wykluczeń, podając zakres adresów,
+ które nie będą przydzielane. Mimo, że nie mamy jeszcze zdefiniowanej
+ puli adresowej to już na samym początku konfiguracji możemy podać
+ tego typu informacje.
+ </p>
+<pre class="code-block">
+Router(config)#ip dhcp excluded-address 192.168.10.1 192.168.10.10
+</pre>
+ <p>
+ Zakres adresów do wyłączenia przekazujemy podając pierwszy i ostatni
+ adres. Chcąc wyłączyć jeden pojedynczy adres, podajemy go zaraz
+ po słowie <code class="code-inline">excluded-address</code>.
+ Następnym krokiem jest zdefiniowanie puli. W definicji puli podajemy
+ dodatkowe adresy IP jakie host powinien mieć w swojej konfiguracji,
+ takie jak adres bramy czy adresy serwerów DNS. Tworzenie puli
+ rozpoczyna się od wydania poniższego polecenia.
+ </p>
+<pre class="code-block">
+Router(config)#ip dhcp pool LAN10
+</pre>
+ <p>
+ Po wydaniu tego polecenia zostaniemy przeniesieni do trybu konfiguracji
+ puli. W tym trybie podajemy sieć na podstawie, której zostanie
+ utworzona pula adresów.
+ </p>
+<pre class="code-block">
+Router(dhcp-config)#network 192.168.10.0 255.255.255.0
+</pre>
+ <p>
+ Następnie dodajemy adres bramy domyślnej oraz serwera DNS:
+ </p>
+<pre class="code-block">
+Router(dhcp-config)#default-router 192.168.10.1
+Router(dhcp-config)#dns-servers 8.8.8.8
+</pre>
+ <p>
+ Po wykonaniu tych czynności, możemy opuścić konfigurację. Serwer DHCP
+ został skonfigurowany i jest on operacyjny. Możemy to sprawdzić
+ ustawiając jeden z interfejsów routera i podłączając do niego komputer.
+ </p>
+<pre class="code-block">
+C:\>ipconfig /all
+
+FastEthernet0 Connection:(default port)
+
+ Connection-specific DNS Suffix..:
+ Physical Address................: 0002.1661.4A3D
+ Link-local IPv6 Address.........: FE80::202:16FF:FE61:4A3D
+ IPv6 Address....................: ::
+ IPv4 Address....................: 192.168.10.11
+ Subnet Mask.....................: 255.255.255.0
+ Default Gateway.................: ::
+ 192.168.10.1
+ DHCP Servers....................: 192.168.10.1
+ DHCPv6 IAID.....................:
+ DHCPv6 Client DUID..............: 00-01-00-01-64-36-79-72-00-02-16-61-4A-3D
+ DNS Servers.....................: ::
+ 8.8.8.8
+</pre>
+ <p>
+ Teraz kiedy nasz serwer DHCP został skonfigurowany i działa, to możemy
+ poznać polecenia, które pozwalą nam sprawdzić informacje odnośnie
+ działania DHCP w IOS.
+ </p>
+ <ul>
+ <li><code class="code-inline">show running-config | section dhcp</code>
+ - to polecenie filtruje wyświetlenie bierzącej konfiguracji po
+ kątem występowania sekcji <code class="code-inline">dhcp</code>.
+ Jeśli polecenie zawiera to słowo kluczowe i samo w sobie nie tworzy
+ sekcji, to również zostanie uwzględnione przez ten filtr.
+<pre class="code-block">
+Router#show running-config | section dhcp
+ip dhcp excluded-address 192.168.10.1 192.168.10.10
+ip dhcp pool LAN10
+ network 192.168.10.0 255.255.255.0
+ default-router 192.168.10.1
+ dns-server 8.8.8.8
+</pre>
+ </li>
+ <li><code class="code-inline">show ip dhcp binding</code> - polecenie
+ wyświetla listę dzierżaw serwera DHCP.</li>
+<pre class="code-block">
+Router#show ip dhcp binding
+IP address Client-ID/ Lease expiration Type
+ Hardware address
+192.168.10.11 0002.1661.4A3D -- Automatic
+</pre>
+ </li>
+ <li><code class="code-inline">show ip dhcp server statistics</code> -
+ polecenie zwraca statystyki na temat serwera DHCP. Na PacketTracerze
+ to polecenie jest niedostępne, przynajmniej w wersji 8.2.2.</li>
+ </ul>
+ <p>
+ Konfiguracja serwera DHCP wydaje się prosta, w momecie gdy znajduje
+ sie on w tej samej sieci lokalnej. A co jeśli będzie znajdować się w
+ innej sieci? Ramki Ethernet, <em>broadcast</em> nie mogą przecież
+ być routowane. Tutaj wymyślono coś takiego jak adres pomocnika.
+ Na interfejsie, który normalnie by oczekiwał na komunikaty
+ DHCPDISCOVER, konfigurujemy adres serwera DHCP w innej sieci. Tworząc
+ z tego interfejsu coś w rodzaju przekaźnika.
+ </p>
+<pre class="code-block">
+Router(config-if)#int gig0/0
+Router(config-if)#ip helper-address 192.168.11.2
+Router(config-if)#end
+</pre>
+ <p>
+ W tym przypadku serwer DHCP ma adres
+ <code class="code-inline">192.168.11.2</code>.
+ </p>
+ <h3 id="2.7.1.pka">Zadanie praktyczne - Packet Tracer</h3>
+ <p>
+ <a href="">Konfiguracja DHCPv4 - scenariusz</a><br />
+ <a href="">Konfiguracja DHCPv4 - zadanie</a>
+ </p>
+ <h2 id="2.7.2.iosdhcpclient">2.7.2. Konfiguracja klient DHCP w systemie Cisco IOS</h2>
+ <p>
+ Konfiguracja interfejsu urządzenia z systemem Cisco IOS jako klienta
+ DHCP, jest banalnie prosta. Sprowadzania się ona do wydania
+ dwóch/trzech poleceń. Już wcześniej konfigurowaliśmy statyczne adresy
+ IP, np. na interfejsach VLAN 1 przełączników. To w tym przypadku
+ sprawa ma się podobnie. Wystarczy, że zamiast wpisywania adresu IP oraz
+ maski podamy jedno słowo - <em>dhcp</em>.
+ </p>
+<pre class="code-block">
+Switch(config)#int vlan 1
+Switch(config-if)#ip address
+Switch(config-if)#ip address dhcp
+Switch(config-if)#no shutdown
+Switch#sh ip int br | section Vlan1
+Vlan1 192.168.10.4 YES DHCP up up
+</pre>
+ <h2 id="ch7summary">Podsumowanie</h2>
+ <p>
+ W tym rozdziale zapozanliśmy z działaniem protokołu automatycznej
+ konfiguracji hosta w wersji 4 - DHCPv4. Dowiedzieliśmy się jak możemy
+ wykorzystać system Cisco IOS w roli serwera DHCP, przekaźnika oraz
+ na koniec klienta.
+ </p>
</div>
</body>
</html>