Laufender VPN-Server und Apache widersprüchliche Ports

1

Zur Zeit arbeite ich mit XAMPP und einem einfachen VPN-Server, der über Windows-Netzwerkverbindungen bereitgestellt wird.

Wenn ich das lösche Incoming Connections, starte Apache und stelle den VPN-Server wie folgt wieder her:

Es funktioniert gut (sowohl das VPN als auch Apache).

Ich weiß bereits, dass ich Apache so ändern kann, dass es auf verschiedenen Ports läuft, aber das möchte ich nicht. Kann ich trotzdem verhindern, dass das System Port 443 verwendet?

Vielleicht ist es auch nicht in meinem Interesse, den Port des VPN-Servers zu ändern.

Ich möchte Apache und VPN gleichzeitig ausführen. Gibt es Empfehlungen?

David Chen
quelle

Antworten:

4

Das Problem besteht darin, dass Windows 7 versucht, eingehende VPN-Verbindungen mit allen unterstützten Protokollen zu akzeptieren, einschließlich SSTP (Secure Socket Tunneling Protocol) . SSTP ist im Grunde genommen PPP-getunnelt über SSL und verwendet standardmäßig denselben Port 443 wie normale HTTPS-Verbindungen. Durch diese Verwendung von Port 443 kann SSTP viele HTTP-Proxys passieren, die eine Verbindung zu HTTPS-Servern ermöglichen. Leider führt dies auch zu Konflikten mit der Ausführung eines HTTPS-Servers auf demselben Computer wie der SSTP-VPN-Server - es sei denn, der HTTPS-Server ist Microsoft IIS, das http.syszur Verarbeitung von HTTP- und HTTPS-Anforderungen denselben Kerneltreiber wie der SSTP-Server verwendet.

Beachten Sie, dass eingehende SSTP-Verbindungen höchstwahrscheinlich fehlschlagen werden, da Ihr Computer möglicherweise nicht über ein entsprechendes Serverzertifikat verfügt, um diese zu akzeptieren. Wahrscheinlich werden RasSstp / 18-Warnereignisse im Systemereignisprotokoll angezeigt, die über diese Probleme informieren. Dies hindert das System jedoch nicht daran, den Port 443 zu belegen, selbst wenn die SSTP-Client-Verbindungen dazu tatsächlich fehlschlagen.

Im Routing- und RAS-Blog finden Sie einige nützliche Artikel zu SSTP . Es ist mir jedoch nicht gelungen, eine Methode zum Deaktivieren der SSTP-Verwendung nur für den VPN-Server zu finden. Es ist möglich, das Gerät "WAN Miniport (SSTP)" im Geräte-Manager zu deaktivieren (nachdem die Option "Versteckte Geräte anzeigen" aktiviert wurde), dies kann jedoch auch ausgehende VPN-Verbindungen von demselben Computer betreffen.

Es gibt jedoch einen Artikel zur SSTP-Serverkonfiguration und KB947054 , in dem eine Möglichkeit beschrieben wird, den vom SSTP-Server verwendeten Port zu ändern, um eingehende Verbindungen zu akzeptieren. Suchen Sie mit einem Registrierungseditor den folgenden Unterschlüssel:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Sstpsvc\Parameters

ListenerPortStellen Sie dann den DWORD-Wert auf die Portnummer ein, die für eingehende SSTP-Verbindungen verwendet werden soll. Stellen Sie sicher, dass Sie einen Dezimalwert angeben (standardmäßig ist das Optionsfeld "Hex" aktiviert). Wählen Sie einen Port aus, der nicht mit anderen vom System oder Ihren Anwendungen verwendeten Ports in Konflikt steht.

Starten Sie den Dienst "Routing und RAS" neu, um die neue Einstellung zu übernehmen. Überprüfen Sie die Ausgabe des netstat -aonBefehls, um sicherzustellen, dass der neu angegebene Port jetzt verwendet wird und der Port 443 nicht mehr verwendet wird.

Sergey Vlasov
quelle
Vielen Dank! Ich fand auch dieses Juwel support.microsoft.com/kb/947032
David Chen
2

Dies ist eine alte Frage, aber ich möchte einige andere Optionen hinzufügen.

Der Vorteil von beiden ist, dass Sie SSTP weiterhin auf Port 443 verwenden können. Dies ist besonders nützlich, da dieser Port in den meisten Firewalls für Unternehmen, Hotels, Hotspots usw. geöffnet ist, sodass Sie eine VPN-Verbindung einrichten können, in der PPTP / IPSec / ... würde fehlschlagen.

Verwenden Sie IIS anstelle von Apache

Sie können fast alles (wie PHP) unter IIS ausführen, das auch unter Apache ausgeführt wird.

Mit dem Microsoft Web Platform-Installationsprogramm können Sie dies für Sie einrichten: http://www.microsoft.com/web/downloads/platform.aspx Von dort aus können Sie alle Arten von Frameworks installieren.

Wenn Sie speziell PHP möchten (dies startet nur den Web Platform Installer mit vorausgewähltem PHP): http://www.microsoft.com/web/platform/phponwindows.aspx

Dies wird auch unter Windows viel schneller sein als bei Apache.

Apache wird von IIS als Reverse-Proxy bereitgestellt

Lassen Sie IIS auf Port 443 lauschen (SSL-Offloading) und an Apache weiterleiten (auf Port 80 oder etwas anderem).

Suchen Sie bei Google nach "IIS-Reverseproxy". Ihre Optionen sind URL-Umschreibung oder Application Request Routing (ARR).

Einige Webanwendungen müssen möglicherweise speziell konfiguriert werden, um hinter einem Reverse-Proxy zu funktionieren, da die eingehende URL vom Proxy geändert wird.

Steven De Kock
quelle
+1, ich mag diese Option auch. Ich benutze jedoch Apache für seine Module. Meine Live-Server laufen unter Linux und verwenden Apache. Normalerweise ist meine Testumgebung Ubuntu, aber in letzter Zeit habe ich keine Lust, zwischen Betriebssystemen zu booten oder eine virtuelle Maschine zu verwenden. Ich werde mich jedoch eingehender mit dem IIS-Reverseproxy befassen, und ich habe keinen Zweifel daran, dass IIS auf einer Windows-Plattform schneller sein würde.
David Chen
0

Ich habe eine VBS-Datei erstellt, um den Port des SSTP schnell zu ändern.

If WScript.Arguments.length = 0 Then
    Set ObjShell = CreateObject("Shell.Application")
    ObjShell.ShellExecute "wscript.exe", """" & WScript.ScriptFullName & """" & " RunAsAdministrator",, "runas", 1
    WScript.Quit
End If

Set objRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")

strValue = InputBox("Desired new port for SSTP:")
objRegistry.SetDWORDValue &H80000002, "SYSTEM\CurrentControlSet\services\SstpSvc\Parameters", "ListenerPort", strValue
MsgBox "SSTP ListenerPort has been changed to " & strValue & "."

Kopieren Sie diese und fügen Sie sie in ein neues Textdokument ein und ändern Sie die Erweiterung in .vbs.

Sie können dieses Skript auch hier herunterladen .

Nachdem der Port geändert wurde, müssen Sie als Administrator zur Eingabeaufforderung wechseln (eine cmd.exeVerknüpfung erstellen und als Administrator ausführen). Dann geben Sie diese beiden Befehle ein:

net stop "routing and remote access"
net start "routing and remote access"
David Chen
quelle