Co to jest przekierowanie portów i do czego służy?

Odpowiedzi:

318

Podstawy

Aby naprawdę wyjaśnić przekierowanie portów, najpierw musisz dowiedzieć się nieco więcej o tym, co robi router . Twój dostawca usług internetowych przypisuje jeden adres IP do twojego połączenia internetowego. Wszystkie komputery w Internecie potrzebują unikalnego adresu IP, ale masz w domu wiele komputerów i tylko jeden adres. Jak to działa?

Jeśli wiesz, co to jest i po prostu chcesz wiedzieć, jak to zrobić : http://portforward.com/ zawiera instrukcje ze zrzutami ekranu dla dosłownie setek różnych routerów. Dokumentacja jest tam ukryta za stroną reklamową dla ich automatycznego narzędzia portconfig. (Po prostu kliknij trochę, a go znajdziesz).

NAT - co to jest? Dlaczego go używamy?

Twój domowy router ma wbudowaną funkcję Network Address Translation lub NAT. W twojej sieci komputery mają adresy takie jak 192.168.1.100. Wszystkie adresy w zakresie 192.168. * (Lub w zakresie 10. *) są adresami prywatnymi lub zarezerwowanymi . Adresy te są oficjalnie przypisywane przez IANA do użytku w sieciach prywatnych. Router automatycznie przypisuje taki adres każdemu komputerowi podłączonemu przez DHCP . Te adresy to sposób, w jaki komputery w sieci komunikują się z routerem i między sobą.

Router ma oddzielny interfejs sieciowy, który łączy go z Internetem. Ten interfejs ma zupełnie inny adres, który jest przypisany przez twojego dostawcę usług internetowych. To jest jeden adres, o którym wspomniałem wcześniej, a router używa go do komunikowania się z innymi komputerami w Internecie. Komputery w twojej sieci mają nieprzenośne prywatne adresy IP, co oznacza, że ​​jeśli wysyłają pakiety bezpośrednio do Internetu, pakiety zostaną automatycznie odrzucone (pakiety z prywatnymi adresami nie mogą przechodzić przez Internet ze względu na stabilność). Ale twój router ma adres z routingiem . Tłumaczenie adresu sieciowego, jak sugeruje jego nazwa, tłumaczy między tymi dwoma rodzajami adresów, umożliwiając pojawienie się wielu komputerów w twojej sieci w Internecie jako jeden komputer z jednym adresem.

Szczegóły

Chociaż może się to wydawać skomplikowane, w rzeczywistości jest to dość proste, jak robi to router. Za każdym razem, gdy komputer w sieci chce połączyć się z komputerem w Internecie, wysyła żądanie połączenia do routera (wie, że wysyła je do routera, ponieważ jego parametr Bramy domyślnej jest ustawiony na adres routera). Router następnie przyjmuje to żądanie połączenia („żądanie SYN” w TCP / IP) i zmienia adres źródłowy („adres zwrotny” lub adres zwrotny) i zmienia go z prywatnego adresu IP komputera na publiczny adres IP router, aby odpowiedź została wysłana do routera. Następnie odnotowuje w bazie danych (zwanej tabelą NAT ), że połączenie zostało zainicjowane, aby zapamiętać je później.

Gdy odpowiedź wróci z komputera zdalnego („SYN-ACK”), router sprawdza tablicę NAT i widzi, że połączenie z tym hostem na tym porcie zostało wcześniej zainicjowane przez prywatny komputer w sieci, zmienia miejsce docelowe adres na prywatny adres komputera i przekazuje go do sieci. W ten sposób pakiety mogą nadal przesyłać między sieciami, a router transparentnie zmienia adresy, aby działało. Po zakończeniu połączenia router po prostu usuwa je z tabeli NAT.

Lub pomyśl o tym w ten sposób

Może to być nieco łatwiejsze do zwizualizowania za pomocą metafory - powiedzmy, że jesteś spedytorem w USA współpracującym z chińskimi klientami. Muszą wysyłać paczki do wielu klientów w USA, ale ze względów celnych / formalności łatwiej jest wysyłać paczki tylko w jednym miejscu. Tak więc paczka przychodzi do ciebie od jednego z twoich klientów w Chinach (sieć prywatna, w tym przykładzie) z faktycznym miejscem docelowym gdzieś w USA (internet). Zmieniasz etykietę adresową na pudełku na adres amerykański (publiczny) i zmieniasz adres zwrotny na własny adres publiczny (ponieważ nie można go zwrócić bezpośrednio do Chin bez niedogodności dla klienta) i przekazujesz go pocztowej usłudze pocztowej . Jeśli klient zwróci produkt, przychodzi do Ciebie. Sprawdzasz to w swoich rejestrach i widzisz, z jakiej firmy w Chinach pochodzi,

Działa to świetnie, ale jest pewien problem. Co jeśli klient musi wysłać coś do firmy, powiedzmy przekaz pieniężny w zamian za coś? Lub powiedzmy, że komputer w Internecie inicjuje połączenie z routerem (żądanie SYN), powiedzmy serwerowi sieciowemu, który jest w sieci. List / pakiet ma tylko adres publiczny routera, więc router tak naprawdę nie wie, gdzie go wysłać! może być przeznaczony dla dowolnego komputera w sieci prywatnej lub dla żadnego z nich. Być może ten problem wystąpił, gdy dzwonisz na czyjś domowy telefon - kiedy dzwoni do ciebie, to nie jest problem, ale kiedy dzwonisz do niego, nie ma sposobu, aby wiedzieć, kto dzwoni, więc niewłaściwa osoba może odebrać.

Chociaż ludzie mogą to łatwo rozwiązać, jest to o wiele trudniejsze dla komputerów, ponieważ nie każdy komputer w sieci zna wszystkie inne komputery.

I wreszcie docieramy do Port Forwarding

Przekazywanie portów to sposób, w jaki rozwiązujemy ten problem: jest to sposób, aby powiedzieć routerowi, do którego komputera w sieci powinny być kierowane połączenia przychodzące. Mamy na to trzy różne sposoby:

  • Faux-DMZ : wiele routerów ma funkcję o nazwie DMZ. Oznacza Strefę Zdemilitaryzowaną, która jest rodzajem konfiguracji bezpieczeństwa sieci. Strefa DMZ na routerach domowych jest często nazywana faux-DMZ, ponieważ brakuje jej cech rzeczywistej strefy DMZ. To, co robi, jest najprostszym rodzajem obsługi połączeń przychodzących: wszystkie żądania połączeń przychodzących będą wysyłane do jednego określonego w sieci. Jest to bardzo proste - wpisujesz adres IP w konfiguracji routera, a wszystkie połączenia przychodzące są tam. Jednak nie zawsze to działa, ponieważ może istnieć wiele komputerów, które muszą akceptować połączenia przychodzące. W tym celu mamy ...
  • Przekierowanie portów : wszystkie żądania połączenia sieciowego zawierają „port”. Port jest tylko liczbą i jest częścią tego, jak komputer wie, co to jest pakiet. IANA określiła, że ​​port 80 jest używany do HTTP. Oznacza to, że pakiet przychodzący z numerem portu 80 musi być żądaniem przeznaczonym dla serwera WWW. Przekazywanie portów w routerze pozwala wprowadzić numer portu (ewentualnie zakres lub kombinację liczb, w zależności od routera) oraz adres IP. Wszystkie połączenia przychodzące z pasującym numerem portu będą przekazywane do komputera wewnętrznego o tym adresie.
  • Przekazywanie portów UPnP : Przekazywanie UPnP działa dokładnie tak samo, jak przekierowywanie portów, ale zamiast konfigurowania go, oprogramowanie na komputerze w sieci automatycznie ustawia router na przekazywanie ruchu do danego portu do niego.

Przykład

Spójrzmy na przykład użycia. Wiele gier wideo dla wielu graczy (na przykład Counter Strike) pozwala na uruchomienie serwera gier na komputerze, z którym inne osoby mogą się połączyć, aby grać z tobą. Twój komputer nie zna wszystkich osób, które chcą grać, więc nie może się z nimi połączyć - zamiast tego muszą wysyłać nowe żądania połączenia z komputera z Internetu.

Jeśli nie masz nic skonfigurowanego na routerze, otrzyma on te żądania połączenia, ale nie wiedziałby, który komputer w sieci ma serwer gry, więc po prostu je zignoruje (a ściślej wyśle z powrotem pakiet wskazujący, że nie może się połączyć). Na szczęście znasz numer portu, który będzie przy żądaniach połączenia z serwerem gry. Tak więc na routerze ustawiasz port z numerem portu oczekiwanym przez serwer gry (na przykład 27015) i adresem IP komputera z serwerem gier (na przykład 192.168.1.105).
Router będzie wiedział, że przekierowuje przychodzące żądania połączenia do 192.168.1.105 w sieci, a komputery na zewnątrz będą mogły się połączyć.

Innym przykładem może być sieć lokalna z dwoma komputerami, gdzie druga z IP 192.168.1.10 hostuje stronę internetową przy użyciu Apache. Dlatego router powinien przekazywać przychodzące żądania portu 80 do tego komputera. Korzystając z przekierowania portów, oba komputery mogą działać w tej samej sieci w tym samym czasie.

Przykładowy wykres przekierowania portów

Gry wideo są prawdopodobnie najczęstszym miejscem, w którym codziennie użytkownicy spotykają się z przekierowaniem portów, chociaż większość współczesnych gier korzysta z UPnP, więc nie musisz tego robić ręcznie (zamiast tego jest to w pełni automatyczne). Musisz to zrobić zawsze, gdy chcesz mieć możliwość bezpośredniego połączenia z czymś w swojej sieci (zamiast przez jakiegoś pośrednika w Internecie). Może to obejmować uruchomienie własnego serwera internetowego lub połączenie za pomocą protokołu pulpitu zdalnego z jednym z komputerów.

Uwaga na temat bezpieczeństwa

Jedną z fajnych rzeczy w NAT jest to, że zapewnia ono pewne, niewymagające wysiłku, wbudowane zabezpieczenia. Wiele osób błąka się po Internecie w poszukiwaniu maszyn, które są podatne na ataki ... i robią to, próbując otworzyć połączenia z różnymi portami. Są to połączenia przychodzące, więc, jak omówiono powyżej, router je porzuci. Oznacza to, że w konfiguracji NAT tylko sam router jest narażony na ataki z wykorzystaniem połączeń przychodzących. Jest to dobra rzecz, ponieważ router jest znacznie prostszy (a przez to mniej podatny na ataki) niż komputer z pełnym systemem operacyjnym z dużą ilością oprogramowania. Należy zatem pamiętać, że DMZ, umieszczając komputer w sieci (ustawiając go jako miejsce docelowe DMZ), traci tę warstwę bezpieczeństwa dla tego komputera: jest on teraz całkowicie otwarty na połączenia przychodzące z Internetu, więc musisz go zabezpieczyć tak, jakby był bezpośrednio połączony. Oczywiście za każdym razem, gdy przekierowujesz port, komputer po stronie odbiorczej staje się podatny na ten konkretny port. Upewnij się więc, że korzystasz z dobrze skonfigurowanego oprogramowania.

jcrawfordor
źródło
2
Krótko o tym wspomniałeś, ale możesz chcieć wyjaśnić znaczenie użycia przekierowania portów w stylu DMZ. Nie mogę wymyślić jednego przypadku, w którym dobrym pomysłem byłoby, w środowisku produkcyjnym, udostępnić coś takiego jak serwer SQL (lub cokolwiek innego) światu zewnętrznemu. Przekierowanie portów pozwala uzyskać dostęp do chronionych zasobów bez poważnego naruszenia bezpieczeństwa.
Brian Vandenberg
11
Jednym szczegółem, który nie został omówiony w sekcji NAT, jest fakt, że jeśli komputery w sieci korzystają z DHCP w celu uzyskania swoich wewnętrznych, niemożliwych do routingu prywatnych adresów IP, możliwe jest, że przypisany do nich adres będzie się różnić, a jeśli tak się stanie, przekierowanie portów będzie popsuć się. Najlepiej tego uniknąć, konfigurując adresowanie sieciowe każdego komputera ręcznie. portforward.com podkreśla znaczenie tego i ma przewodnik opisujący, jak skonfigurować statyczny adres IP w systemie, jednak nie wspominają o konieczności skonfigurowania DHCP routera, aby uniknąć tych obecnie zarezerwowanych adresów NAT.
martineau
2
@ jcrawfordor, Cześć, czy masz coś przeciwko wytłumaczeniu, jak dokładnie UPnP jest w pełni automatyczny? Co to jest UPnP i jak działa?
Pacerier
1
@martineau rezerwowanie adresów DHCP jest dobrym sposobem na zrobienie tego. Niektóre routery można przekierować do określonych klientów, a nie adresów, co jest jeszcze bardziej korzystne.
Baldrickk
2
Część odpowiedzi, która mówi: „Port jest tylko liczbą i jest częścią tego, jak komputer wie, co to jest pakiet”. wprowadza w błąd. Naprawianie numeru portu dla aplikacji jest konwencją, a nie czynnikiem decydującym o typie pakietu. W najlepszym razie można uznać, że pakiet przeznaczony dla portu 80 jest HTTP, nic więcej, będzie całkowicie zależał od (w warstwie aplikacji) aplikacji nasłuchującej na porcie 80.
codeman48