Ip wew. i zew., porty. Własny serwer [jak to działa?]

Od kilku dni interesuję się nieco działaniem serwera podpiętego do sieci. Nie bardzo jednak rozumiem na jakiej zasadzie działają porty - co one robią, w jaki sposób się je odblokowuje, w jaki sposób można sprawdzić otwarte porty, itd. Chciałbym się oprzeć na przykładzie, aby lepiej to jakoś zrozumieć.

Powiedzmy, że istnieje komputer podpięty bezpośrednio do Internetu (rozumiem to tak, że posiada IP zewnętrzne). Ten komputer udostępnia dostęp do sieci “Internet” komputerom podpiętym w sieci lokalnej (czyli komputer główny jest tak jakby w dwóch sieciach: Internet oraz sieć lokalna. W sieci lokalnej przyjmuje IP wewnętrzne 192.168.0.1). Jednym z komputerów, który odbiera wysyłany przez komputer główny sygnał jest mój laptop, który otrzymuje IP wewnętrzne (powiedzmy 192.168.0.2). //jeżeli coś źle przedstawiłem to proszę mnie poprawić//

I teraz pytania:

  • co należy zrobić (i dlaczego), aby komputer podpięty do sieci lokalnej (laptop) był widoczny w sieci “Internet”? Chodzi mi mniej więcej o to, aby odpalony serwer www na laptopie mogli oglądać osoby podpięte do sieci “Internet”.

  • jaki ma to związek z portami (co one robią)

Jak upewnię się, że mniej-więcej dobrze to rozumiem to zadam kolejne pytania, bo jak na razie bawię się w ustawianie portów, a nie bardzo rozumiem co one takiego robią.

Z góry dziękuję za wytłumaczenie.

rozumujesz dobrze :slight_smile:

zakładamy że serwer ma IP zewnętrzne 99.99.99.99 i wewnętrzne 192.168.0.1, wszystkie urządzenia podłączone do niego dostana IP wewnętrzne zgodnie z zasada 192.168.0.x gdzie x i kolejne numery. I w takiej konfiguracji do tych urządzeń nie ma dostępu z sieci globalnej.

Jeśli wystukasz w przeglądarce na komputerze nie należącym do tej sieci lokalnej zewnętrzny numer IP 99.99.99.99 to tak naprawdę połączysz się z portem nr 80 który odpowiada za strony. Jeśli będziesz próbował połączyć się z ftp na 99.99.99.99 to komputer będzie się łączył z portem 21 a przy przesyłaniu plików przez ftp z portem 20. I tak dalej, każda usługa na komputerze posiada swój własny port.

I teraz problem natury serwera html, w sieci lokalnej istnieje komputer np z IP 192.168.0.3 uruchomiony jest na nim serwer pod portem 80 (standardowo). W sieci lokalnej jak wstukamy w przeglądarkę 192.168.0.3 to dostaniemy się do niego, jednak w sieci globalnej nie będzie widoczny. Aby rozwiązać ten problem na naszym serwerze musimy ustawić przekierowanie portu 80, z IP zewnętrznego na IP wewnętrzne tego komputera.

W skutek czego wszystkie wywoływania IP 99.99.99.99 w przeglądarce będą kierowane do komputera wewnątrz sieci z IP 192.168.0.3

Zapoznaj się może na początek z modelem warstw sieciowych, np. model ISO/OSI. Każda aplikacja bądź usługa sieciowa działa w warstwie aplikacji, korzysta z jakiegoś protokołu sieciowego i nasłuchuje na jakimś porcie, dla przykładu, wspomniany serwer www korzysta z protokołu http, który działa na porcie 80, porty wykorzystawane są przez warstwę transportową, dzięki temu dane przesyłane i dostarczane są do konretnej aplikacji. Adresy publiczne są tłumaczone na adresy prywtane przy wykorzystaniu NAT, wspomniany serwer podmienia adresy prywatne na adresy publiczne i odwtotnie, dzieje się tak, dlatego, że adres IP musi być unikalny, nie może się powtarzać w internecie, w każdym LANie adres prywtny jest unikalny, ale takich LANów może być niezliczona ilość, dlatego pakiet z prywatnym IP nie ma prawa istnieć w inernecie. Żeby serwer na twoim laptopie był dostępny ze świata, musisz albo przekierować na tym serwerze porty, albo postawić go w DMZ.

Pozdrawiam!

Skoro protokół http domyślnie działa na porcie 80 to czy można ten port zmienić? Jeśli tak, to czy przeglądarka sama się zorientuje, że serwer www jest na innym porcie? Jeżeli przeglądarka sama się nie zorientuje to co zrobić, aby manualnie “wejść” na chciany port, można wpisać w przeglądarce [adres IP]:[nr portu] (np. 99.99.99.99:81) ?

Co zrobić, jeżeli do sieci lan jest podpiętych więcej komputerów i na każdym postawiony by był serwer www (czy jest to w ogóle możliwe)? Powiedzmy, że w lanie są spięte 2 komputery (i podpięte do komputera głównego, czyli w sumie 3 komputery). Każdy komputer ma swój serwer www - co zrobić, aby z zewnątrz (z Internetu) dało się obejrzeć zawartość serwera zarówno z komputera nr1 jak i z komputera nr2? W jaki sposób odbiorca musiałby przekierować połączenie skoro oby dwa komputery w sieci lan są podpięte do jednego IP zewnętrznego?

Poczytaj sobie na temat NAT i PAT, powinieneś znaleźć odpowiedź na swoje pytania.

Pozdrawiam!

Poczytałem tyle co na wikipedii napisane, jednak nie do końca chyba rozumiem.

Z tego co tam poczytałem, to NAT i PAT są systemami, które “konwertują” wiadomość nadaną z jakiegoś komputera w sieci lokalnej posiadającego wewnętrzny adres IP na zewnętrzny adres IP o zmienionym porcie. Jednak jak to się ma, jeżeli chodzi taką sytuację, w której to użytkownik z sieci zewnętrznej (Internet) chce się dostać do konkretnego komputera zawartego w innej sieci lokalnej? Czy osoba z zewnątrz musi nadawać przez odpowiedni port, który odwołuje się do odpowiedniego komputera w sieci lan (np. do komputera nr1)? W takim razie czy można ręczni dopisać w pasku adresu przeglądarki port, przykładowo: 99.99.99.99 :293? A więc wychodzi na to, że porty nie są jakoś specjalnie “zarezerwowane” dla odpowiednich czynności i można je według własnych potrzeb zmieniać?

Teraz sobie tak myślę, że gdy chcę połączyć się z serwerem (dajmy na to jakiejś gry) to muszę dopisywać do adresu IP odpowiedni port, żeby poprawnie nawiązać połączenie. Czy to znaczy, że komputer główny (służący jako pośrednik) nadaje uprawnienia komputerom w sieci lokalnej do nadawania i odbierania przez odpowiednie porty? Jeżeli tak to wychodzi na to, że każdy komputer w sieci lokalnej ma jakieś “swoje” porty, przez które ma wyjście na świat - w takim razie dlaczego dostawca internetu (posiadający komputer główny) musi nadać odpowiednie przekierowania, aby jakiś tam komputer w sieci lokalnej mógł prowadzić serwer?

Jak pisałem wcześniej, jak zapoznasz się z modelem warstaw sieciowych, to będzie Ci to łatwiej zrozumieć. Pewne protokoły mają określone porty, masz trzy zakresy portów: dobrze znane porty; porty zarejstrowane i porty dynamiczne/prywatne. Serwer i działająca na nim usługa ma jakiś określony port, Klient zawsze ma losowy port, NAT działa tak, że podmienia źródłowy adres IP prywatny na źródłowy adres IP publiczny z takim samym portem jaki działa w LANie, czyli przykładowo 192.168.1.10:1024 na 100.100.100.1:1024 i odwrotnie. Jeśli w LANie masz np. 2 serwery www, oba korzystają z portu 80, to w tym przypadku zachodzi zmiania portu źródłowego (PAT), dla przykładu 192.168.1.100:80 i 192.168.1.200:80 na 100.100.100.1:1024 i 100.100.100.1:1025 i odwrotnie.

Pozdrawiam!

Ok, dzięki za namiary - zapewne poczytam jeszcze o tych modelach i pokombinuję coś w praktyce.

Dziękuję za pozdrowienia i pozdrawiam. :slight_smile: