NAT usługa translacji adresów realizowana w celu: - umożliwienia dostępu do sieci większej ilości hostów niz ilość dostępnych adresów IP - podniesienia poziomu bezpieczeństwa sieci prywatnej - uproszczenia adaminstracji siecią prywatną
NAT zasada działania: Niech m ilość adresów, które maja być tłumaczone. Niech n ilość adresów na które będzie dokonywane tłumaczenie. Wyróżnimy trzy podstawowe rodzaje translacji: 8. NAT statyczny 9. NAT dynamiczny 10. Translację portów (NAPT) (Masquarading)
NAT statyczny (m,n>=1 i m=n ) Przy statycznej translacji tłumaczymy adresy pomiędzy sieciami o takim samym rozmiarze. Dany adres IP jest zawsze tłumaczony na taki sam adres. Strategia ta jest łatwa do zaimplementowania i wymaga tylko kilku prostyczh transformacji adresu wejsciowego: new-address = new-network OR (old-address AND (NOT netmask)) Dodatkowo informacja o translacji nie musi być nigdzie przechowywana. Możliwy jest dostep do hostów z sieci zewnętrznej ich adresy przy odwołaniach z zewnątrz są tylko inne niż adresy wewnętrzne.
Przykład: Przypuśćmy że dokonujemy translacji adresów z sieci 192.168.0.128 na sieć 212.191.65.0 przy masce 255.255.255.128. Wtedy np. adres 192.168.0.220 jest tłumaczony na adres: 11010100101111110100000100000000 OR 11000000101010000000000011011100 AND NOT 11111111111111111111111110000000 co daje 212.191.65.92
NAT dynamiczny (m>=1 and m>=n ) Translacja dynamiczna jest konieczna gdy ilość adresów IP do translacji nie jest równa ilości adresów na które tłumaczymy lub gdy z innych względów (np. bezpieczeństwa) nie jest wskazane użycie translacji statycznej. Liczba hostów, które bedą mogły komunikować się z siecią zewnetrzną jest ograniczona przez ilość dostępnych adresów NAT (na które tłumaczymy). Gdy wszystkie adresy NAT zostaną użyte kolejne połączenia nie mogą być realiowane i muszą być odrzucone przez router NAT powiadamiając nadawcę np. że sieć docelowa (host) jest nieosiągalny. Dynamiczny NAT jest bardziej skomplikowany niż statyczny gdyż musi przechowywać informacje o odokonanej translacji.
NAT dynamiczny może być użyteczny także gdy mamy wystarczajacą ilość adresów NAT np. m=n (lub nawet m<n) gdyż utrudnia on dostęp do sieci prywatnej z sieci zewnętrznej, gdyż ten sam adres IP może wskazywać na zupełnie inny host. Połączenia z sieci zewnętrznej są możliwe tylko gdy host, który ma być osiagniety ma wciąż przypisany adres NAT (przechowywany przez pewien timeout ).
Przykład: - tłumaczymy wszystkie IP z sieci klasy B 138.201 na adresy sieci klasy C 178.201.112 (adrsy NAT) - każde nowe połączenie z sieci wewnętrznej do sieci zewnętrznej ma przypisywane jeden z dostępnych(wolnych) adresów NAT - jeżeli mapowanie dla danego adresu wewnętrznego istnieje jest ono używane - tak długo jak mapowanie istnieje host może być osiagniety z zewnątrz
Masquerading (NAPT) (m>=1 and n=1) Specjalny przypadek dynamicznego NAT (translacja m do 1). Najczęściej obecnie używana technika translacji. Powoduje że wiele adresów IP z sieci wewnetrznej jest ukrytych i widocznych na zewnatrz jako pojedynczy adres. W przciwieństwie do dynamicznego NAT nie oznacza to jednak że tylko jedno połączenie jest dostepne w danym czasie. Większa ilość połączeń jest multipleksowana przy użyciu informacji o portach TCP i jest ograniczona tylko przez ilość dostępnych portów.
Zasada działania: - dokonuje się dynamiczna translacja adresu IP z sieci wewnętrznej na pojedynczy adres NAT - port zródłowy jest zmieniany na wolny port z pewnego skonfigurowanego zakresu, informacja o mapowaniu adresu zródłowego i portu żródłowego do nowego adresu i portu i zapisywana w tablicy NAT
Zaletą maskowania jest że potrzebny jest tylko jeden publiczny adres IP pozwalając całej sieci prywatnej na dostęp do Internetu. Ponadto w przeciwieństwie do gatway-i aplikacyjnych maskowanie pozwala na używanie szerokiego zbioru usług np. opartych nie tylko na TCP, ale również UDP.
Translacja adresów używana jest również do tworzenia tzw. wirtualnych serwerów w znaczeniu, że mamy jeden adres IP, który reprezntuje serwer określonej usługi, dla którego jednak nie istnieje rezczywiste urzadzenie oraz mamy szereg innych adresów IP, dla których istnieją takie urządzenia. Kiedy łączymy się z wirtualnym IP, NAT dokonuje translacji na adres rzeczywitego urządzenia. W zależności od algorytmu użytego do wyboru rzeczywistego adresu IP, wirtualne serwery mogą służyć różnym celom.
Wirtualne serwery mogą być wykorzystane: - dla zapewnienia mechanizmu load balancing (rozładowania obciążenia) gdy wybór rzeczywistego urządzenia będzie odbywał się np. na podstawie stopnia obciążenia rzeczywistych urządzeń lub np. urządzenia bedą wybierane sekwencyjnie. - dla zapewnienia mechanizmu fault tolerance gdy rzeczywiste urządzenia duplikują usługi