Wie werden lokale Ports bestimmt?
Die Portnummer wird von der TCP-Implementierungssoftware aus einem Bereich von Portnummern ausgewählt, die als Ephemere Ports bezeichnet werden .
Der genaue Mechanismus zur Auswahl der Portnummer und des zu verwendenden Bereichs hängt vom Betriebssystem ab.
Gibt es eine Möglichkeit, 63999 zu erzwingen?
Dies kann durch Ändern der Konfiguration der TCP-Implementierungssoftware erfolgen.
Anweisungen zum Konfigurieren des Bereichs für kurzlebige Ports für eine Vielzahl verschiedener Betriebssysteme finden Sie unter Ändern des Bereichs für kurzlebige Ports .
- Anweisungen für Linux und Windows finden Sie in dieser Antwort.
Es ist jedoch keine gute Idee, den Bereich beispielsweise auf einen einzelnen Port zu beschränken 63999
.
Die kurzlebige Port Range
Eine TCP / IPv4-Verbindung besteht aus zwei Endpunkten, und jeder Endpunkt besteht aus einer IP-Adresse und einer Portnummer. Wenn ein Client-Benutzer eine Verbindung zu einem Server-Computer herstellt, kann eine hergestellte Verbindung daher als 4-Tupel von (Server-IP, Server-Port, Client-IP, Client-Port) betrachtet werden.
In der Regel sind drei der vier bekannt - der Client-Computer verwendet seine eigene IP-Adresse, und beim Herstellen einer Verbindung zu einem Remotedienst sind die IP-Adresse und die Service-Portnummer des Server-Computers erforderlich.
Was nicht sofort ersichtlich ist, ist, dass beim Herstellen einer Verbindung die Clientseite der Verbindung eine Portnummer verwendet. Sofern ein Client-Programm nicht ausdrücklich eine bestimmte Portnummer anfordert, handelt es sich bei der verwendeten Portnummer um eine kurzlebige Portnummer.
Temporäre Ports sind temporäre Ports, die vom IP-Stack eines Computers zugewiesen werden und für diesen Zweck aus einem festgelegten Bereich von Ports zugewiesen werden. Wenn die Verbindung getrennt wird, kann der kurzlebige Port erneut verwendet werden, obwohl die meisten IP-Stacks diese Portnummer erst wieder verwenden, wenn der gesamte Pool kurzlebiger Ports verwendet wurde.
Wenn sich das Client-Programm erneut verbindet, wird ihm für seine Seite der neuen Verbindung eine andere temporäre Portnummer zugewiesen.
Quelle Die kurzlebige Port Range
Ändern des kurzlebigen Anschlussbereichs
Linux:
Mit Linux können Sie den kurzlebigen Portbereich anzeigen und ändern, indem Sie einfach die Datei verwenden /proc/sys/net/ipv4/ip_local_port_range
. Dies zeigt zum Beispiel die Standardkonfiguration auf einem Kernel 2.2-System:
$ cat /proc/sys/net/ipv4/ip_local_port_range
1024 4999
Um dies auf den bevorzugten Bereich zu ändern, können Sie (als Superuser) Folgendes tun:
# echo "49152 65535" > /proc/sys/net/ipv4/ip_local_port_range
Beachten Sie, dass Sie dies jedes Mal tun müssen, wenn das System hochfährt. Fügen Sie daher dem Startskript des Systems eine Zeile hinzu, /etc/rc.local
sodass Ihr Bereich immer verwendet wird.
Beachten Sie auch, dass der Linux 2.4-Kernel standardmäßig den Bereich von 32768 bis 61000 verwendet, wenn ausreichend Kernel-Speicher verfügbar ist, sodass eine Änderung des Bereichs auf neueren Linux-Systemen möglicherweise nicht erforderlich ist.
Beachten Sie außerdem, dass Sie möglicherweise die sysctl
Benutzeroberfläche verwenden können, um die Einstellungen zu ändern, anstatt das /proc
Dateisystem zu verwenden. Der Name des sysctl
Parameters lautet "net.ipv4.ip_local_port_range". Bearbeiten Sie die /etc/sysctl.conf
Datei, wenn Sie sie haben, oder lassen Sie den sysctl
Befehl von einem Startskript manuell ausführen, wenn Sie diesen Parameter mit ändern möchten sysctl
.
Windows Vista / Windows Server 2008 und neuer:
Ab Windows Vista und Windows Server 2008 verwendet Windows laut Microsoft Knowledgebase-Artikel 929851 standardmäßig einen großen Bereich (49152-65535) . In demselben Artikel wird auch beschrieben, wie Sie den Bereich bei Bedarf ändern können. Der Standardbereich ist jedoch für die meisten Server jetzt ausreichend.
Quelle Ändern des kurzlebigen Portbereichs
Mit den folgenden netsh
Befehlen können Sie den dynamischen Portbereich auf einem Computer anzeigen, auf dem Windows Vista oder Windows Server 2008 ausgeführt wird
:
netsh int ipv4 show dynamicport tcp
netsh int ipv4 show dynamicport udp
netsh int ipv6 show dynamicport tcp
netsh int ipv6 show dynamicport udp
Anmerkungen:
- Der Bereich wird für jeden Transport und für jede IP-Version separat festgelegt.
- Der Portbereich ist nun wirklich ein Bereich mit einem Startpunkt und einem Endpunkt.
- Microsoft-Kunden, die Server mit Windows Server 2008 bereitstellen, haben möglicherweise Probleme mit der RPC-Kommunikation zwischen Servern, wenn im internen Netzwerk Firewalls verwendet werden.
- In diesen Fällen wird empfohlen, die Firewalls so zu konfigurieren, dass der Datenverkehr zwischen den Servern im dynamischen Portbereich von
49152
bis möglich ist 65535
.
- Dieser Bereich gilt zusätzlich zu bekannten Ports, die von Diensten und Anwendungen verwendet werden.
- Oder der von den Servern verwendete Portbereich kann auf jedem Server geändert werden.
Sie passen diesen Bereich mit dem netsh
Befehl wie folgt an:
netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range
Dieser Befehl legt den dynamischen Portbereich für TCP fest. Der Startport ist die Nummer und die Gesamtzahl der Ports ist der Bereich. Folgendes sind Beispielbefehle:
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
Mit diesen Beispielbefehlen wird der dynamische Portbereich so festgelegt, dass er an Port 10000 beginnt und an Port 10999
(1000 Ports) endet .
Anmerkungen:
- Der minimale Bereich von Ports, die eingestellt werden können, ist
255
.
- Der minimale Startport, der eingestellt werden kann, ist
1025
.
- Der maximale Endport (basierend auf dem zu konfigurierenden Bereich) kann nicht überschritten werden
65535
.
- Verwenden Sie
1025
als den Startport und dann 3976
als den Bereich für TCP und UDP , um das Standardverhalten von Windows Server 2003 zu duplizieren . Dies ergibt einen Startport von 1025
und einen Endport von 5000
.
Quell-Microsoft Knowledgebase-Artikel 929851 :
Windows XP und älter:
Für ältere Windows-Betriebssysteme (Windows XP und älter) verwendet Windows den traditionellen BSD-Bereich von 1024 bis 4999 für seinen kurzlebigen Portbereich. Leider scheint es, dass Sie nur die Obergrenze des kurzlebigen Portbereichs festlegen können. Hier sind Informationen aus dem Microsoft Knowledgebase-Artikel 196271 :
- Starten Sie den Registrierungseditor (
Regedt32.exe
).
Suchen Sie den folgenden Schlüssel in der Registrierung:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
Klicken Sie im Menü "Bearbeiten" auf "Wert hinzufügen", und fügen Sie den folgenden Registrierungswert hinzu:
Wertname: MaxUserPort
Datentyp: REG_DWORD
Wert: 65534
(zum Beispiel)
Gültiger Bereich: 5000-65534
(dezimal) Standard: 0x1388
(5000 dezimal)
Beschreibung: Dieser Parameter steuert die maximale Portnummer, die verwendet wird, wenn eine Anwendung einen verfügbaren Benutzerport vom System anfordert. Normalerweise werden kurzlebige Ports zwischen den Werten von 1024
und 5000
einschließlich zugewiesen .
Beenden Sie den Registrierungseditor.
Hinweis: Es gibt einen anderen relevanten KB-Artikel ( 812873 ), der angibt , dass Sie einen Ausschlussbereich festlegen können. Dies kann 1024-9999
beispielsweise bedeuten, dass Sie Ports ausschließen können , um den kurzlebigen Portbereich zu erhalten 10000-65534
. Es ist uns jedoch nicht gelungen, dies zum Laufen zu bringen (Stand Oktober 2004).
Quelle Ändern des kurzlebigen Portbereichs