
TCP-Portweiterleitungs-Dienstprogramm in C
Ein leistungsstarker TCP-Port-Weiterleiter für Windows mit optionaler IP-Whitelist und ausführlicher Protokollierung.
cl PortForwarder.c /Fe:PortForwarder.exe ws2_32.lib
gcc PortForwarder.c -o PortForwarder.exe -lws2_32
PortForwarder.exe <local_port> <remote_host> <remote_port> [allowed_ip] [-v]
<local_port> - Lokaler Port, auf dem gehört werden soll (1-65535)<remote_host> - Remote-Hostname oder IP-Adresse, an die der Datenverkehr weitergeleitet werden soll<remote_port> - Remote-Port, an den der Datenverkehr weitergeleitet werden soll (1-65535)[allowed_ip] - Optional - Nur Verbindungen von dieser IP-Adresse akzeptieren[-v] - Optional - Ausführlichen Modus aktivieren (abgelehnte Verbindungen anzeigen)Lokalen Port 8080 an Remote-Server 192.168.1.100 Port 80 weiterleiten:
PortForwarder.exe 8080 192.168.1.100 80
Nur Verbindungen von 192.168.1.50 akzeptieren:
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50
Abgelehnte Verbindungsversuche anzeigen:
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50 -v
PortForwarder.exe 3306 database.example.com 3306
PortForwarder.exe 2222 10.0.0.50 22 192.168.1.100
Auf SMB-Port 445 lauschen und an einen entfernten SMB-Endpunkt weiterleiten. Wenn 445 der lokale Port ist, gibt das Tool den Port zuerst vom integrierten Windows-SMB-Server frei:
PortForwarder.exe 445 10.0.0.50 445 192.168.1.100
Wenn der lokale Port 445 ist, wird das Tool vor dem Binden automatisch:
System, PID 4, über den srvnet-Kernel-Treiber).LanmanServer und die Treiber srv2/srvnet stoppen (abhängige Dienste rekursiv stoppen), wobei jeder Schritt zur Transparenz ausgegeben wird.Beispielausgabe:
[445] === Port 445 / SMB takeover ===
[445] Privilege check: running elevated (administrator). OK
[445] Port 445 currently held by PID 4 (System (kernel / srvnet))
[445] Disabling SMB server and releasing port 445...
[445] Stopping 'LanmanServer'...
[445] service 'LanmanServer' stopped
[445] Stopping 'srv2'...
[445] service 'srv2' stopped
[445] Stopping 'srvnet'...
[445] service 'srvnet' stopped
[445] Port 445 is now free. Proceeding to bind.
[445] (Restore SMB later with: net start LanmanServer)
⚠️ Das Stoppen dieser Dienste deaktiviert die Datei-/Druckerfreigabe auf dem Host für die Dauer des Einsatzes. Stellen Sie sie anschließend mit
net start LanmanServerwieder her (die Treiber werden bei Bedarf oder beim nächsten Start neu gestartet). Nur auf Systemen verwenden, die Sie testen dürfen.
Der Weiterleiter bietet eine detaillierte Protokollierung:
[INFO] Configuration:
Local port: 8080
Remote host: 192.168.1.100
Remote port: 80
Allowed IP: 192.168.1.50 (filtered mode)
Verbose: OFF
[INFO] Listening on port 8080...
[INFO] Press Ctrl+C to stop
[INFO] New connection from 192.168.1.50:54321 ACCEPTED
[INFO] Connected to remote 192.168.1.100:80
[INFO] Connection established, forwarding traffic...
[INFO] Closing connection (Sent: 1024 bytes, Received: 2048 bytes, Total: 3072 bytes)
Wenn das Flag -v aktiviert ist, werden auch abgelehnte Verbindungen protokolliert:
[INFO] Connection from 192.168.1.99:54322 REJECTED (IP not allowed)
Jede Verbindung erzeugt einen dedizierten Weiterleitungsthread, der:
Der Weiterleiter behandelt häufige Netzwerkfehler ordnungsgemäß:
WSAECONNRESET - Verbindung vom Peer zurückgesetztWSAECONNABORTED - Verbindung abgebrochenWSAENETRESET - Netzwerk verursachte TrennungWSAETIMEDOUT - Verbindungszeitüberschreitungrunning-Flag für sauberes Herunterfahren⚠️ Wichtige Sicherheitshinweise:
[allowed_ip] in der Produktion, um den Zugriff einzuschränken[ERROR] bind() failed: 10048
Lösung: Eine andere Anwendung verwendet den Port. Wählen Sie einen anderen lokalen Port oder stoppen Sie den konkurrierenden Dienst.
[ERROR] connect() to remote failed: 10061
Lösung: Überprüfen Sie, ob der Remote-Host erreichbar ist und der Dienst auf dem angegebenen Port läuft.
[ERROR] bind() failed: 10013
Lösung: Ports unter 1024 erfordern möglicherweise Administratorrechte. Führen Sie das Programm als Administrator aus oder verwenden Sie eine höhere Portnummer.
[INFO] Connection from X.X.X.X:XXXXX REJECTED (IP not allowed)
Lösung: Aktivieren Sie den ausführlichen Modus (-v), um abgelehnte IPs zu sehen, oder entfernen Sie die IP-Filterung.
Drücken Sie Strg+C, um den Weiterleiter ordnungsgemäß zu stoppen. Er wird:
Mögliche Funktionen für zukünftige Versionen:
Diese Software wird wie besehen für Bildungszwecke und legitime Netzwerkverwaltungszwecke bereitgestellt. Verwenden Sie sie verantwortungsbewusst und in Übereinstimmung mit den geltenden Gesetzen und Vorschriften.
Beiträge sind willkommen! Bitte stellen Sie sicher:
Bei Problemen, Fragen oder Feature-Wünschen öffnen Sie bitte ein Issue im Projekt-Repository.
Sie können meine Arbeit auch auf Patreon unterstützen.