Na koniec poznaliśmy w jaki sposób możemy weryfikować listy ACL na
naszych urządzeniach.
</p>
+ <h1 id="3.6.natforipv4">3.6. NAT dla IPv4</h1>
+ <p>
+ Jak może pamiętamy z poprzedniego modułu pula adresów IPv4 jest
+ na wyczerpaniu. W obecnym stanie rzeczy nie wystarcza adresów dla
+ wszystkich urządzeń podłączonych do Internetu. Gdy osoby
+ odpowiedzialne za rozwój sieci globalnej spostrzegli, że pula adresów
+ jest alokowana w bardzo szybkim tempie i za jakiś czas ich po prostu
+ zacznie brakować, wydzielono trzy klasy adresów prywatnych. Adresy
+ tego rodzaju są nie jednoznaczne dlatego też nie mogą być routowane
+ w Internecie. Nie należą bowiem one do żadnej organizacji. Za
+ definicję adresów odpowiada dokument RFC 1918, wydzielając tym samym:
+ </p>
+ <ul>
+ <li><strong>Klasa A</strong> - 10.0.0.0 - 10.255.255.255 - 10.0.0.0/8</li>
+ <li><strong>Klasa B</strong> - 172.16.0.0 - 172.31.255.255 -
+ 172.16.0.0/12</li>
+ <li><strong>Klasa C</strong> - 192.168.0.0 - 192.168.255.255 -
+ 192.168.0.0/16</li>
+ </ul>
+ <p>
+ Lokalne sieci komputerowe wykorzystują klasę adresów prywatnych do
+ adresowania swoich komputerów. Jako że te adresy nie mogą
+ funkcjonować poza sieciami lokalnymi, to musi istnieć mechanizm,
+ który pozwoli na zamianę adresów prywatnych na adresy publiczne.
+ Tym właśnie jest <strong>NAT</strong>. Jak wszysystko na świecie,
+ ta funkcjonalność posiada wady i zalety, które zostaną omówione
+ w tym rozdziale.
+ </p>
+ <p>
+ Mechanizm translacji adresów, zamienia adresy prywatne na adresy
+ publiczne. W zależności czy są to adresy prywatne czy publiczne lub
+ ruch jest przychodzący lub wychodzący spotkamy się z takimi
+ określeniami adresów jak:
+ </p>
+ <ul>
+ <li><strong>Wewnętrzny lokalny (<em>Inside local</em>)</strong> -
+ adres źródła widziany z perspektywy wnętrza sieci. Zwykle jest to
+ prywatny adres IPv4.</li>
+ <li><strong>Wewnętrzny globalny (<em>Inside global</em>)</strong> -
+ adres źródła widziany z zewnątrz sieci. Jest to zazwyczaj globalnie
+ routowalny adres IPv4.</li>
+ <li><strong>Zewnętrzny globalny (<em>Outside global</em>)</strong> -
+ adres docelowy widziany z zewnątrz sieci. Jest adresm IPv4
+ globalnie routowalny przypisanym hostowi w Internecie.</li>
+ <li><strong>Zewnętrzny lokalny (<em>Outside local</em>)</strong> -
+ Adres docelowy widziany z perspektywy wnętrza sieci. Nie jest to
+ powszechnie praktykowane, ale adres ten może być inny niż
+ adres publiczny.</li>
+ </ul>
+ <h2 id="3.6.1.typesofnat">3.6.1. Typy NAT</h2>
+ <p>
+ Mechnizm NAT może występować w kilku wariantach. Które różnią się
+ technikami mapowania adresów. Pierwszym z nich jest
+ <strong>statyczny NAT</strong>, w
+ którym to jeden adres prywatny zamieniany na jeden adres publiczny.
+ Translacja jeden-do-jeden (1:1). Takie mapowania są wykonywane przez
+ administratora i są nie zmienne bez rekonfiguracji.
+ </p>
+ <p>
+ Drugim rodzajem jest <strong>dynamiczny NAT</strong> - przypisuje on
+ adresy na podstawie kolejności żądań dostępu do sieci zewnętrznej.
+ Obie te metody NAT, wymagają odpowiednio dużej <strong>puli adresów
+ publicznych</strong> przydzielonych przez operatora internetowego,
+ jeśli pula będzie za mała, to tylko część z hostów będzie mieć
+ dostęp do sieci zewnętrznej. A jak możemy się domyślić to operatorzy
+ obecnie już nawet klientom biznesowym niechętnie ustępniają adresy
+ IP.
+ </p>
+ <p>
+ Istnieje również mechanizm, który jest w stanie zapewnić dostęp do
+ sieci zewnętrznej przy jednym lub kilku adres zewnętrznych. Takim
+ mechanizmem jest <strong>PAT (<em>Port Adress Translation</em>)</strong>
+ Poza zwykłą translacją adresów,
+ działa on na zasadzie zmiany portu źródłowego jeśli do routera
+ docierają połączenia z różnych hostów z tymi samymi numerami portów
+ źródłowych. Wówczas dla adresu wewnętrznego globalnego przypisywany
+ jest inny numer portu i tak przetworzony pakiet wysyłany jest do
+ hosta docelowego. W taki sposób działają mechnizmy NAT w urządzeniach
+ domowych lub przeznaczonych dla małych firm.
+ </p>
+ <p>
+ Podczas działania mechaznizm PAT stara się zachować oryginale porty,
+ jeśli jest to jednak niemożliwe, wówczas używa on pierwszego
+ dostępnego z odpowiedniej grupy portów: 0-511, 512-1023 lub
+ 1024-65535. Jeśli jakimś cudem wszystkie porty zostaną wykorzystane,
+ to dopiero mechanizm przechodzi do kolejnego adresu.
+ </p>
+ <p>
+ Porównując PAT oraz NAT. To NAT:
+ </p>
+ <ul>
+ <li>Mapowanie jeden do jeden między adresami wewnętrznymi lokalnymi
+ a wewnętrznymi globalnymi.</li>
+ <li>Używa tylko adresów IPv4 w procesie translacji.</li>
+ <li>Unikalny adres wewnętrzny globalny jest wymagany, dla każdego
+ wewnętrznego hosta łączącego się z siecą zewnętrzną.</li>
+ </ul>
+ <p>
+ A PAT z kolei:
+ </p>
+ <ul>
+ <li>Jeden adres wewnętrzny globalny można mapować na wiele adresów
+ wewnętrznych.</li>
+ <li>Używa adresów IPv4 i numerów portów źródłowych TCP lub UDP w
+ procesie translacji.</li>
+ <li>Pojedynczyny unikalny adres wewnętrzny globalny, może być
+ wspołdzielony przez wiele wewnętrznych hostów łączących się z
+ siecią zewnętrzną.</li>
+ </ul>
+ <p>
+ W przypadku mechanizmu PAT, pozostaje jedna nierozwiązana kwestia.
+ Otóż wymiana komunikatów <em>echo</em> protokołu ICMP przez PAT.
+ Tak naprawdę to TCP, UDP i ICMP przez PAT osbługiwane są w nieco inny
+ sposób. W przypadku działania narzędzia <em>ping</em> wykorzystywane
+ jest pole <strong>Query ID</strong> zawarte w komunikatach
+ <em>echo request</em>, <em>echo reply</em>. To pole zwiększane jest
+ o jeden z każdym wysłanym zapytaniem do sieci zewnętrznej.
+ </p>
+ <h3 id="3.6.1.pka">Zadanie praktyczne - Packet Tracer</h3>
+ <p>
+ <a href="">Badanie działania NAT - scenariusz</a><br />
+ <a href="">Badanie działania NAT - zadanie</a>
+ </p>
+ <h2 id="3.6.2.natprosandcons">3.6.2. Zalety i wady mechanizmu NAT</h2>
+ <p>
+ Do zalet mechanizmu NAT możemy zaliczyć:
+ </p>
+ <ul>
+ <li>Zmniejszenie zapotrzebowania na publiczne adresy IP.</li>
+ <li>Zwiększenie elastyczności połączenia z siecią zewnątrzną.</li>
+ <li>Zapewnienie spójności schematów adresowania.</li>
+ <li>Ukrycie adresów IPv4 użytkowników i urządzeń sieci lokalnej.</li>
+ </ul>
+ <p>
+ Natomiast do wad mechanizmu NAT możemy zaliczyć:
+ </p>
+ <ul>
+ <li>Wydajność sieci, szczególnie widoczna w protokołach czasu
+ rzeczywistego takich VoIP.</li>
+ <li>Translacje z adresu prywatnego na prywatny.</li>
+ <li>Utrata adresowania <em>end-to-end</em>, co może powodować
+ zaburzenie działania aplikacji bezpieczeństwa, np. podpisu
+ elektronicznego.</li>
+ <li>Utrata śledzenia pakietów IP <em>end-to-end</em>.</li>
+ <li>Komplikacje podczas używania protokołów tunelowania - przez
+ ingerencje w pakiety.</li>
+ <li>Zakłócenie działania protokółów inicjujących połączeń TCP z
+ zewnątrz (FTP), czy protokołów bezstanowych UDP.</li>
+ </ul>
+ <h2 id="3.6.3.staticnatonios">3.6.3. NAT statyczny w IOS</h2>
+ <p>
+ Załóżmy hipotetycznie, że mamy serwer WWW o adresie 192.168.1.10,
+ ma on być dostępny dla klientów z sieci zewnętrznej pod adrem
+ 209.169.201.6. Co należy zrobić, aby zrealizować to zadanie przy
+ użyciu routera Cisco?
+ </p>
+ <p>
+ Otóż na początek tworzymy odwzorowanie między adresem wewnętrznym
+ lokalnym, a adresem wewnętrznym globalnym.
+ </p>
+<pre class="code-block">
+Router(config)# ip nat inside source static 192.168.1.10 209.169.201.6
+</pre>
+ <p>
+ W powyższym polecenie użyliśmy słów kluczowych:
+ <code class="code-inline">inside</code> ze względu, że dokonujemy
+ mapowań wewnętrznych (lokalny do globalnego),
+ <code class="code-inline">source</code>, ponieważ router ma zamieniać
+ adresy źródłowe oraz <code class="code-inline">static</code>,
+ ustawiamy NAT statyczny, to jest mapowanie adresów 1:1.
+ </p>
+ <p>
+ Następnym zadaniem jest określenie stron translacji. Sieć LAN
+ wykorzystuje <em>Ethernet</em> więc ostatni port będzie łączem z
+ sieci do routera. Natomiast port szeregowy będzie symulować naszą
+ sieć rozległą.
+ </p>
+<pre class="code-block">
+Router(config)# interface g0/2
+Router(config-if)# ip address 192.168.1.254 255.255.255.0
+Router(config-if)# ip nat inside
+Router(config-if)# exit
+R2(config)# interface serial 0/1/1
+R2(config-if)# ip address 209.169.201.6 255.255.255.252
+R2(config-if)# ip nat outside
+</pre>
+ <p>
+ Teraz adresy źródłowe serwera WWW będą tłumaczone na nasz adres
+ wewnętrzny globalny.
+ </p>
</div>
</body>
</html>