Przekierowywanie portów - pytań kilka

Witam

Mam kilka pytań do zaawansowanych sieciowców o tzw. przekierowywanie portów. nie do końca rozumiem pewne kwestie działania tej usługi.

  1. Czy przekierowywanie portów na routerze dotyczy tylko i wyłącznie urządzeń, które maja być użyte z poziomu sieci zewnętrznej czy można też przekierować port aplikacji?

  2. Jak i na jakiej podstawie ustalić port urządzenia (ew. aplikacji)?

  3. Pomijając “well known ports” to czy porty w sieci komputerowej przydzielane na stałe czy zmienia się to po każdym nowym uruchomieniu urządzenia? Czy mogę samemu przypisać urządzeniu port (jak?)

Trochę wiedzy do przyswojenia :slight_smile:

Przekierowanie portów

NETSTAT - Sprawdzanie otwartych portów

Port protokołu

W skrócie:

  1. Jest NAT - NAT ma tablicę, w której przechowuje parę IP źródłowy:port oraz IP tłumaczony:port;

  2. Jest PAT - PAT od NAT różni się tym, że tłumaczy porty (przydatne, np. gdy masz w sieci lokalnej serwer SSH i chcesz, aby działał na porcie 2222, zamiast na domyślnym, wtedy PAT zamienia port 22 na 2222 i na odwrót);

  3. Aplikacja, która nie jest serwerem działa na losowym porcie;

  4. Aplikacja, który jest serwerem korzysta z portów z listy znanych portów, portów zarezerwowanych itp.

To właśnie aplikacje korzystają z portów (warstwa transportowa), w sieci możesz mieć uruchomionych 100 przeglądarek i klientów e-mail, pakiet musi w jakiś sposób dotrzeć do celu, znając port, wie jaka aplikacja ma go odebrać. Urządzenie nie korzystają z portów.

No właśnie. Gdy czytałem na ten temat widziałem, że często przekierowuje się porty, ale dla protokołów. I teraz pytanie. Skąd mam wiedzieć, że dana aplikacja potrzebuje tych a nie innych protokołów? Rozumiem, że im więcej aplikacji chcę obsługiwać na komputerze “za NAT-em” tym więcej rożnego rodzaju portów i skojarzonych protokołów muszę przekierować.

 

Nic nie musisz przekierowywać o ile dana aplikacja nie wymaga by to serwer / inny klient rozpoczął z tą aplikacją komunikacji.

Przekierowujesz tylko, jeśli w sieci stawiasz serwer, a one działają na konkretnych portach. Jeśli masz kilka serwerów na tym samym porcie, to robisz PAT.

Widziałem niedawno zrzut ekranu z instrukcji przekierowania portów. Było tam coś na zasadzie, że port aplikacji z internetu był przekierowany na port wewnętrzny 80. Przecież pewna grupa portów jest stała, tak jak wspomniany port 80. Jak to więc możliwe, że przekierowuje się jakiś inny port - czyli z innej aplikacji, protokołu - na port 80?

Nie jest stała. Sam sobie ustawiasz co na jakim porcie na TWOIM serwerze chodzi. Ale jest 1024 standardowe porty na których standardowo są jakieś usługi np 80 to www. Ale równie dobrze może chodzić na 15. Ale wówczas przy wpisywaniu adresu w przeglądarkę będziesz musiał wpisać xxx:15

No to jest właśnie PAT (port address translation), o czym pisałem już chyba z 2 razy. Poza tym większość usług sieciowych pozwala zmieniać port nasłuchiwania na inny, niż domyślny. Na przykład Apache (serwer WWW), czy ssh możesz ustawić na innych portach, np. dana strona ma być dostępna dla pewnych użytkowników i działa na porcie 8888 i tylko użytkownicy z taką wiedzą połączą się z serwerem. Tak samo, możesz ustawić aby SSH działał na porcie 2222, zamian na 22. Serwery mają też możliwość nasłuchiwać na wielu portach, np. Apache na domyślnym porcie 80, 443 i dodatkowo na 8888, 4444 itp.

Może się też zdarzyć tak, że w sieci masz kilka serwerów i każdy musi pracować na innym porcie, np. masz dwa hosty, do których łączysz się na ssh. W sieci lokalnej nie ma problemu, bo podajesz różne IP, ale spoza sieci już tak łatwo nie jest i przy przekierowaniu ustawiasz inne porty, np. 192.168.1.1:22 -> 1.1.1.1:222; 192.168.1.1:22 -> 1.1.1.1:223. Wtedy NAT wie, że jak pakiet przychodzi na port 223, to ma go przekazać do hosta o IP 192.168.1.2 na port 22.

Niekoniecznie, bo tu można zastosować PAT w obie strony: 1. Serwer działa na porcie 15, a PAT zamienia go na 80; przychodzi zapytanie na port 80, PAT zmienia go na 15; 2. Serwer działa na porcie 22, a chcesz łączyć się przez SSH na port 2222 (ustawiasz taki port przeciw skanerom portów); połączenie przychodzi na port 2222, PAT zamienia go na 22.

 

Ok. nie wiem czy dobrze rozumiem.

Załóżmy scenariusz. Mam np. w sieci lokalnej serwer FTP. Domyślnie FTP działa na 21, ale zmieniam jego port na 2121, a adres tego komputera to 192.168.1.20. To znaczy, że na moim routerze, abym mógł się połączyć z zewnątrz muszę ustawić przekierowanie z zewnątrz portów 21 na mój port 2121?

Zależy czy robisz translację portów.  Jesli nie, to klient musi łączyć się na porcie, na którym nasłuchuje serwer. 

A czy alternatywą dla przekierowania portów może być np. połączenie VPN?