W jaki sposób określane są porty lokalne
Numer portu jest wybierany przez oprogramowanie implementujące TCP z zakresu numerów portów zwanych portami efemerycznymi .
Dokładny mechanizm wyboru numeru portu i zakresu, który należy zastosować, zależy od systemu operacyjnego.
Czy istnieje sposób na zmuszenie go do 63999.
Można to zrobić, zmieniając konfigurację oprogramowania implementacyjnego TCP.
Instrukcje dotyczące konfigurowania zakresu portów efemerycznych dla różnych systemów operacyjnych można znaleźć w części Zmiana zakresu portów efemerycznych .
- Instrukcje dla systemu Linux i Windows znajdują się w poniższej odpowiedzi w celach informacyjnych.
Ograniczenie zasięgu do jednego portu nie jest jednak na przykład dobrym pomysłem 63999
.
Zakres portów efemerycznych
Połączenie TCP / IPv4 składa się z dwóch punktów końcowych, a każdy punkt końcowy składa się z adresu IP i numeru portu. Dlatego, gdy użytkownik klienta łączy się z komputerem serwera, ustanowione połączenie może być traktowane jako 4-krotnie (adres IP serwera, port serwera, adres IP klienta, port klienta).
Zazwyczaj trzy z czterech są dobrze znane - komputer kliencki używa własnego adresu IP, a podczas łączenia się ze zdalną usługą wymagany jest adres IP i numer portu usługi serwera.
Nie jest od razu oczywiste, że po ustanowieniu połączenia strona kliencka połączenia używa numeru portu. O ile program kliencki nie zażąda wyraźnie określonego numeru portu, użyty numer portu jest efemerycznym numerem portu.
Porty efemeryczne to porty tymczasowe przypisane przez stos IP komputera i do tego celu są przypisane z wyznaczonego zakresu portów. Po zakończeniu połączenia port efemeryczny jest dostępny do ponownego użycia, chociaż większość stosów adresów IP nie użyje ponownie tego numeru portu, dopóki cała pula portów efemerycznych nie zostanie wykorzystana.
Tak więc, jeśli program kliencki ponownie się połączy, zostanie mu przypisany inny efemeryczny numer portu dla jego strony nowego połączenia.
Źródło Zakres przejściowy portów
Zmiana zakresu portów efemerycznych
Linux:
Linux pozwala przeglądać i zmieniać efemeryczny zakres portów za pomocą pliku /proc/sys/net/ipv4/ip_local_port_range
. Na przykład pokazuje domyślną konfigurację w systemie jądra 2.2:
$ cat /proc/sys/net/ipv4/ip_local_port_range
1024 4999
Aby zmienić to na preferowany zakres, możesz (jako administrator):
# echo "49152 65535" > /proc/sys/net/ipv4/ip_local_port_range
Pamiętaj, że musisz to zrobić przy każdym uruchomieniu systemu, więc dodaj wiersz do skryptu uruchamiania systemu, tak /etc/rc.local
aby twój zakres był zawsze używany.
Zauważ też, że jądro Linuksa 2.4 ustawi domyślnie zakres od 32768 do 61000, jeśli dostępna jest wystarczająca pamięć jądra, więc zmiana zakresu może nie być konieczna w nowszych systemach Linux.
Na koniec zauważ również, że możesz być w stanie użyć sysctl
interfejsu do zmiany ustawień zamiast używać /proc
systemu plików. Nazwa sysctl
parametru to „net.ipv4.ip_local_port_range”. Edytuj /etc/sysctl.conf
plik, jeśli go masz, lub poproś o uruchomienie skryptu uruchamiania sysctl
ręcznie, jeśli chcesz zmienić ten parametr za pomocą sysctl
.
Windows Vista / Windows Server 2008 i nowsze:
Począwszy od systemów Windows Vista i Windows Server 2008, system Windows domyślnie korzysta z dużego zakresu (49152-65535), zgodnie z art . 929851 bazy wiedzy Microsoft Knowledge Base . Ten sam artykuł pokazuje również, jak możesz zmienić zakres, jeśli to konieczne, ale domyślny zakres jest teraz wystarczający dla większości serwerów.
Źródło Zmiana zakresu portów efemerycznych
Można wyświetlić zakres portów dynamicznych na komputerze z systemem Windows Vista lub Windows Server 2008, używając następujących
netsh
poleceń:
netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp
Uwagi:
- Zakres jest ustawiany osobno dla każdego transportu i każdej wersji adresu IP.
- Zakres portów jest teraz naprawdę zasięgiem z punktem początkowym i końcowym.
- Klienci Microsoft, którzy wdrażają serwery z systemem Windows Server 2008, mogą mieć problemy z komunikacją RPC między serwerami, jeśli zapory są używane w sieci wewnętrznej.
- W takich przypadkach zalecamy zmianę konfiguracji zapór ogniowych w celu umożliwienia ruchu między serwerami w zakresie dynamicznych portów
49152
przelotowych 65535
.
- Zakres ten jest uzupełnieniem dobrze znanych portów używanych przez usługi i aplikacje.
- Lub zakres portów używanych przez serwery można zmodyfikować na każdym serwerze.
Dostosuj ten zakres za pomocą netsh
polecenia w następujący sposób:
netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range
To polecenie ustawia dynamiczny zakres portów dla TCP. Port początkowy to liczba, a łączna liczba portów to zakres. Oto przykładowe polecenia:
netsh int ipv4 set dynamicport tcp start=10000 num=1000
netsh int ipv4 set dynamicport udp start=10000 num=1000
netsh int ipv6 set dynamicport tcp start=10000 num=1000
netsh int ipv6 set dynamicport udp start=10000 num=1000
Te przykładowe polecenia ustawiają dynamiczny zakres portów, aby zaczynały się od portu 10000 i kończyły na porcie 10999
(1000 portów).
Uwagi:
- Minimalny zakres portów, jaki można ustawić, to
255
.
- Minimalny port początkowy, jaki można ustawić, to
1025
.
- Maksymalny port końcowy (na podstawie konfigurowanego zakresu) nie może przekroczyć
65535
.
- Aby powielić domyślne zachowanie systemu Windows Server 2003, użyj
1025
jako portu początkowego, a następnie użyj 3976
jako zakresu zarówno dla TCP, jak i UDP. Powoduje to port początkowy 1025
i port końcowy 5000
.
Źródło artykułu 929851 Microsoft Knowledgebase :
Windows XP i starszy:
W przypadku starszych systemów operacyjnych Windows (Windows XP i starszych), Windows używa tradycyjnego zakresu BSD od 1024 do 4999 dla efemerycznego zakresu portów. Niestety wydaje się, że można ustawić tylko górną granicę efemerycznego zakresu portów. Oto informacje zaczerpnięte z artykułu 196271 bazy wiedzy Microsoft Knowledge Base :
- Uruchom Edytor rejestru (
Regedt32.exe
).
Zlokalizuj następujący klucz w rejestrze:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
W menu „Edycja” kliknij „Dodaj wartość”, a następnie dodaj następującą wartość rejestru:
Nazwa wartości: MaxUserPort
Typ danych: REG_DWORD
Wartość: 65534
(na przykład)
Prawidłowy zakres: 5000-65534
(dziesiętny) Domyślnie: 0x1388
(5000 dziesiętny)
Opis: ten parametr kontroluje maksymalny numer portu używany, gdy aplikacja żąda od systemu dowolnego dostępnego portu użytkownika. Normalnie, efemeryczne (czyli krótkotrwałe) porty są rozdzielane pomiędzy wartościami 1024
i 5000
integracyjnych.
Zamknij Edytor rejestru.
Uwaga: istnieje inny odpowiedni artykuł z bazy wiedzy ( 812873 ), który twierdzi, że umożliwia ustawienie zakresu wykluczeń, co może oznaczać, że można wykluczyć porty 1024-9999
(na przykład), aby mieć zakres portów efemerycznych 10000-65534
. Nie udało nam się jednak uruchomić tego (od października 2004 r.).
Źródło Zmiana zakresu portów efemerycznych