Czym jest port sieciowy? TCP, UDP i otwarte porty
Port sieciowy to numer, za pomocą którego protokoły transportowe, takie jak TCP i UDP, kierują ruch do właściwej usługi. Protokół, adres IP i port razem tworzą w praktyce punkt końcowy połączenia. Port jest identyfikatorem logicznym, a nie fizycznym gniazdem w routerze.
Numery i typowe zastosowania
Numery portów to wartości 16-bitowe od 0 do 65535. IANA dzieli je na porty systemowe 0–1023, porty użytkownika 1024–49151 oraz porty dynamiczne lub prywatne 49152–65535. HTTP korzysta zwykle z portu TCP 80, a HTTPS z TCP 443, ale usługę można skonfigurować na innym numerze.
TCP i UDP mają osobne przestrzenie portów, więc ten sam numer może w każdym z nich służyć do czegoś innego. Łącząc się z portem docelowym, na którym nasłuchuje serwer, klient zwykle wybiera tymczasowy port źródłowy. Wysoki numer portu po stronie klienta to normalne zjawisko i nie oznacza, że jakaś usługa publiczna jest otwarta.
Co znaczy „otwarty”
W przypadku TCP test zewnętrzny może uznać port za otwarty, jeśli uda mu się nawiązać połączenie z nasłuchującym programem. Odpowiedź o zamkniętym porcie, odrzucone pakiety i przekroczenie limitu czasu znaczą co innego, a zapora może utrudniać ich rozróżnienie. Testy UDP są mniej rozstrzygające, bo milcząca usługa może po prostu nie odpowiadać na sondę.
Program nasłuchujący na adresie lokalnym nie jest automatycznie osiągalny z internetu. Na wynik wpływają zapora hosta, przekierowanie portów w routerze, filtrowanie u dostawcy i CGNAT. Najpierw sprawdź adres nasłuchiwania i protokół, a potem przetestuj port spoza sieci lokalnej.
Odpowiedzialne otwieranie portów
Udostępniaj tylko te usługi, których potrzebujesz. Skonfiguruj uwierzytelnianie, aktualizuj oprogramowanie i tam, gdzie to możliwe, ograniczaj adresy źródłowe. Udany test połączenia nic nie mówi o tym, czy aplikacja jest bezpieczna i dobrze skonfigurowana. Z kolei nieudany test sam nie wskaże, na której warstwie ruch jest blokowany.
Jeśli usługa ma działać tylko lokalnie, powiąż ją z interfejsem loopback lub prywatnym i zrezygnuj ze zbędnych przekierowań. Przed zmianą reguł zapory zapisz oczekiwany protokół i port docelowy. Po zmianie sprawdź wynik z innej sieci, a gdy usługa zostanie wycofana, usuń nieaktualne reguły.
Opisując problem, zanotuj nazwę usługi, protokół transportowy, port docelowy i miejsce testu. Wynik uzyskany w sieci domowej może różnić się od testu przez dane komórkowe, bo router może inaczej obsługiwać połączenia do własnego adresu publicznego. Zanim poprosisz dostawcę o zmianę, powtórz test z naprawdę zewnętrznej sieci.
TCP i UDP wymagają różnych testów
Ten sam numer portu może istnieć w TCP i w UDP, ale to różne protokoły transportowe. Udane połączenie TCP nic nie mówi o usłudze UDP na tym samym numerze. Zobacz TCP a UDP oraz porty otwarte, zamknięte i filtrowane.