Dlaczego używanie wielu warstw NAT jest złym pomysłem?


19

Sieć komputerowa organizacji ma NAT z zakresem adresów IP 192.168 / 16. Istnieje dział z serwerem, który ma adres IP 192.168.xy, i ten serwer obsługuje hosty tego działu z innym NAT z zakresem adresów IP 172.16 / 16.

Zatem istnieją 2 warstwy NAT. Dlaczego zamiast tego nie mają podsieci. Umożliwiłoby to łatwe routing.

Wydaje mi się, że wiele warstw NAT może powodować straty wydajności. Czy możesz mi pomóc porównać dwie strategie projektowe.

Aktualizacja:

@Jon Więcej informacji

W dyskusji z przyjacielem zdaliśmy sobie sprawę, że podsieci spowodują następujący problem. Żądania ARP komputera zalałyby całą sieć organizacji. Jeśli router nie przekaże tych żądań, wówczas komputery PC w jednym dziale nie będą mogły połączyć się z komputerami w innych działach, co zresztą nie będzie możliwe, jeśli stoją za różnymi NAT. Dzięki snifferowi pakietów zauważyliśmy, że istnieje duża liczba żądań ARP, ponieważ większość komputerów w dziale ma włączoną funkcję udostępniania plików w systemie Windows.

Jak rozwiązać ten problem?

Również jeśli dwa komputery znajdują się za różnymi NAT, to nie ma sposobu, aby się ze sobą połączyć.


Zmień pytanie na: „Dlaczego używanie wielu warstw NAT jest kiepskim pomysłem?”

2
Kolejne zadanie domowe ...
Jon Rhoades

1
NIE. to praktyczny problem. Zawsze wspominam prace domowe.
Rohit Banga

3
@Jon (i jego upvoters) nie ma tutaj problemów z zadawaniem zadań domowych. Jest to temat, który był omawiany dziesiątki razy na stronie meta.stackoverflow.com - chociaż osobiście nie widzę nic w pytaniu, które wskazuje na HW.
Mark Henderson

@Farseeker - całe pytanie jest abstrakcyjne. Wydaje się, że nie jest w stanie niczego zmienić, chce, abyśmy „porównali 2 strategie projektowe” bez wyraźnego celu - po prostu pachnie pracą domową, a nie prawdziwym problemem na świecie. Oczywiście z wielką radością przyjmuję, że się mylę i ktoś ma taką szaloną konfigurację - w takim razie zapytaj, dlaczego musi mieć dobry powód.
Jon Rhoades

Odpowiedzi:


6

Jedynym prawdziwym problemem związanym z wykonywaniem wielowarstwowego NAT jest to, że sprawia, że ​​topologia sieci jest myląca. Jeśli używasz wielu warstw NAT, wyrzucasz symetryczny routing między wszystkimi hostami w organizacji, a także spotykasz się z możliwością nakładania się prywatnych przestrzeni adresowych w twojej sieci. Wyobraź sobie, że używałeś zakresu adresów w warstwie NAT n + 1, który był używany w warstwie NAT n. Sieci te nigdy nie byłyby w stanie kierować się do siebie, ale hosty w warstwie n + 1 mogą mieć ten sam adres co warstwa n, co dezorientuje tożsamość serwera.

Gdybym układał topologię dużej sieci, użyłbym tylko adresów 10. * lub 172.16-24. * Dla hostów w dowolnej z naszych podsieci. Następnie, jeśli jakiś dział lub osoba chciała podwoić NAT, mogliby (używając sieci 192.168. *), Wiedząc, że są odpowiedzialni za sieć za swoim hostem NAT. Byłbym również bardziej skłonny do tworzenia większej liczby podsieci niż do tego, aby którakolwiek z tych podwójnych sieci NAT była zbyt duża.


9

Problemy z wielopoziomowym NAT są zasadniczo takie same jak w przypadku jednowarstwowego NAT, ale są złożone. Jak na przykład:

  1. Opóźnienie z powodu dodatkowej pracy wykonanej w ciągu całego pakietu (choć w większości przypadków jest to mało prawdopodobne)

  2. Wiedzieć, skąd coś pochodzi. Jeśli próbujesz wyśledzić, skąd pochodzą określone żądania (być może twoja zapora sieciowa zarejestrowała coś, co wygląda na zainfekowaną maszynę próbującą wyrzucać spam lub szukać innych celów infekcji), NAT znacznie utrudnia taką diagnostykę.

  3. Przekierowanie portów połączeń przychodzących, jeśli potrzebujesz połączeń przychodzących, jest znacznie łatwiejsze do skonfigurowania i obsługi.

  4. Ograniczona liczba portów. NAT działa poprzez tłumaczenie adresów źródłowych na siebie na różnych portach, więc na przykład:

    • maszyna 1 komunikuje się z zewnętrznym serwerem WWW za pomocą portu 1024, ponieważ jego źródło jest tłumaczone na adres skrzynki NAT na powiedzmy na porcie 10000.
    • ten sam komputer wysyła dwa żądania do tego lub innego serwera WWW jednocześnie (co nie jest niezwykłe) przy użyciu portu źródłowego 1025 (dwa równoległe połączenia muszą mieć różne porty źródłowe). Pole NAT tłumaczy to na „ja na źródłowym porcie 10001”
    • inna maszyna mówi trzy połączenia z serwerami zewnętrznymi. Dobra, pole NAT tłumaczy je na „ja na portach 10002, 10003 i 10004”
    • w miarę jak pakiety wracają w postaci zewnętrznych maszyn, pole NAT wie, że rzeczy przeznaczone dla siebie na porcie 10000 powinny naprawdę przejść do maszyny 1 na porcie 1024 i tak dalej dla innych aktywnych połączeń.

    Wszystko jest w porządku i eleganckie, dopóki nie uzyskasz wielu połączeń wychodzących - tj. Dużej sieci lub mniejszej sieci z maszynami, które wykonują wiele połączeń (aplikacje P2P, takie jak te, które implementują protokół bittorrent mogą tworzyć wiele równoczesnych połączeń). W protokole IP jest tylko 65536 portów, z wyjątkiem 1024, które są zarezerwowane. Chociaż 60 000 może wydawać się dużo, można je szybko zużyć, ale pole NAT musi zdecydować, które stare mapowania można usunąć, co zwykle nie jest tak proste, jak „upuszczenie najstarszego”. Może to powodować dziwne błędy (przypadkowe zrywanie połączeń z trudnych do zdiagnozowania przyczyn) lub urządzenie po prostu nie będzie w stanie nawiązywać nowych połączeń przez jakiś czas.

  5. załaduj skrzynkę NAT. Jeśli używasz małych urządzeń o niskiej mocy (na przykład gotowych routerów obsługujących NAT, a nie pełnego komputera z mocnym procesorem), aby wykonać translację NAT (w porównaniu do zwykłego przesyłania pakietów zgodnie z podstawową tabelą routingu) ) może spowolnić przesyłanie danych za ich pośrednictwem. W przypadku dostępu do Internetu prawdopodobnie nie będzie to stanowić problemu (twoje połączenie sieciowe będzie wąskim gardłem), ale ponieważ jesteś NATing pomiędzy lokalnymi segmentami sieci, może to stać się dość zauważalne.


punkt 4 ten problem powinien być taki sam dla dowolnej liczby warstw NAT, czy nie!
Rohit Banga,

To prawda, że ​​punkt 4 to ten sam problem zarówno dla NAT jednopoziomowego, jak i wielopoziomowego NAT, ale wielopoziomowy NAT zaostrza problem polegający na ustaleniu, które połączenia są martwe (host zewnętrzny może nie znać tyle kontekstu, co wewnętrzny) i przeprowadza diagnostykę trudniejsze, jeśli ograniczenia mapowania portów stają się problemem. Może również sprawić, że uczciwa alokacja przepustowości i inne kształtowanie ruchu będą bardziej mylące we wdrażaniu i monitorowaniu (chociaż istnieją na to sposoby, uproszczenie topologii sieci jest zwykle lepszą opcją).
David Spillett

6

Utrata wydajności / szybkość naprawdę zależy od jakości używanego routera.

Jeśli chodzi o dobry / zły pomysł, jestem przeciwny, kiedy można po prostu użyć routingu, jednak tak naprawdę zależy to od środowiska i tego, co próbujesz osiągnąć.

Jeśli maszyny będą musiały uruchomić tylko kilka rzeczy, które są współużytkowane przez standardowe porty, możesz przejść do routera / urządzenia podającego nat i ustawić regułę zezwalającą na to, czego chcesz (1). Jeśli jednak zamierzasz wykonywać wiele zadań między urządzeniami, o wiele łatwiej będzie mieć właściwą trasę z każdym komputerem, który ma swój własny unikalny adres IP (2).

(1) Na przykład jeden do wielu - Jedna maszyna ma serwer WWW i chcesz go udostępnić innym - ustawisz w routerze regułę portu 80 komputera, a następnie dowolnego komputera z sieci zewnętrznej (lub wewnątrz jeśli włączona jest funkcja nat-loopback), można po prostu przejść do http: //router.ip i uzyskać dostęp.

(2) Jeśli jednak każda maszyna ma mieć włączony serwer sieciowy lub zamierzasz korzystać z wielu usług, będziesz miał koszmar ustanawiający wszystkie reguły (ale nie jest to niemożliwe).

Jeśli chodzi o twój scenariusz - jeśli jeden dział używa 192.168.xx, a drugi 192.168.yx, przejrzałbym urządzenia i jeśli nie ma nakładania się, może być po prostu możliwa zmiana podsieci z / 24 na / 16 (lub na odwrót), a następnie wymień routery na przełączniki / lub podobne i nie powoduj utraty usług.

Naprawdę trudno jest pomóc, nie wiedząc więcej o twojej sieci, nie ma nic „źle” z podwójnym NAT, pod warunkiem, że jest poprawnie skonfigurowany. Jeśli jednak nie jest to naprawdę potrzebne lub jest ku temu bardzo dobry powód, chciałbym przeprowadzić migrację, jeśli możesz (osobista opinia)


@iamrohitbanga - W odpowiedzi na twoje pytania (za wiele komentarzy).

Porównywanie jest trudne - Routing działa dobrze w sieciach prywatnych, w których każdy komputer ma dostęp do każdego komputera. Nat działa dobrze, ale jest używany głównie w sieciach, które nie wymagają routingu, ponieważ zwykle musisz ręcznie skonfigurować przychodzące reguły / trasy.

Na przykład, jeśli masz połączenie z Internetem i wyłączysz NAT, wówczas ręcznie skonfiguruj trasy lub tryb pomostowy - twoje urządzenie będzie bezpośrednio w Internecie - wszystkie porty są dostępne i każde urządzenie może zrobić to, co chce.

Jeśli z drugiej strony masz router z NAT, pobierze zewnętrzny adres IP i wyświetli „Nat-ed?” (nie jestem pewien co do terminologii ...) Internet - wszystkie komputery wewnętrzne mają adres IP niedostępny w Internecie, ale możesz skonfigurować reguły ręczne - np. port 80 na jeden komputer ... Działa bardzo dobrze w przypadku połączeń wychodzących (zapora ogniowa) reguły na to pozwalają), ale może być koszmarem konfigurowanie reguł przychodzących, jeśli hostujesz wiele usług ... a jeśli robisz coś wymagającego dynamicznych portów (ftp, Windows AD itp.), może to być koszmar.

Mam nadzieję, że to pomoże, jeśli chcesz wiedzieć coś jeszcze, nie krępuj się zapytać.


czy mógłbyś porównać dwie strategie. sieć służy do zapewnienia dostępu do hostów przez Internet.
Rohit Banga,

@iamrohitbanga - aktualizacja odpowiedzi
William Hilsum

5

Główny problem z NAT (ogólnie i konkretnie z wieloma warstwami) polega na tym, że jego rozwiązywanie może być niezwykle trudne.


4

Największym problemem związanym z translacją NAT jest nieaktualne oprogramowanie sieciowe wykonujące tłumaczenie, które powoduje szkody dla wielu aplikacji (FTP, VoIP itp.). Nowoczesne zapory ogniowe / bramy mają tłumaczenia (poprawki w terminach Cisco), co znacznie ułatwia.

Nie rozumiem, dlaczego Twoja firma używa NAT między prywatnymi podsieciami. Dlaczego nie po prostu trasować?


2

Po prostu zaktualizuj swoją sieć i klientów do IPV6, a potem nie będziesz już musiał używać NAT.


1

Aby odpowiedzieć na nową drugą część pytania ...

Routery niszczą domeny rozgłoszeniowe - routery nie przekazują pakietów arp, pozostają w podsieci *. Twoje udostępnianie plików Windows (poważnie?) Ruch emisji Netbios nie opuści podsieci.

Z podsieciami:

Jeśli chcesz uzyskać dostęp do udziału Windows spoza podsieci, możesz uzyskać do niego dostęp albo bezpośrednio, używając jego adresu IP, albo jeśli masz skonfigurowany serwer DNS lub WINS według nazwy hosta.

Z NAT:

Jeśli Twój NAT jest typu PAT i dlatego nie jest mapowaniem jeden na jeden, musisz skonfigurować przekierowanie portów, aby to działało - byłoby źle.

Jak zostało omówione ad naseum, NAT jest ogólnie złą rzeczą, ponieważ psuje funkcjonalność sieci, z której korzystamy tylko dlatego, że musimy. Rzuć na IPv6.

* Oczywiście istnieją spedytorzy / przekaźniki / pomocnicy

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.