SSTP-Server
SSTP erfordert einen öffentlichen Hostnamen, TCP 443 oder einen anderen verfügbaren TCP-Port, ein TLS-Zertifikat, eine PPP-Authentifizierung und eine IPv4-Konfiguration auf dem Server. RouterOS-, SoftEther- und Windows-RRAS-Bereitstellungen sind geeignet, wenn sie einen kompatiblen SSTP-Dienst bereitstellen.
Beispiel im RouterOS-Stil
/ip pool
add name=your-pool ranges=10.20.30.10-10.20.30.200
/ppp profile
add name=sstp-profile \
local-address=10.20.30.1 \
remote-address=your-pool \
dns-server=1.1.1.1,8.8.8.8 \
use-encryption=yes
/ppp secret
add name=username password="strong-password" service=sstp profile=sstp-profile
/interface sstp-server server
set enabled=yes \
port=443 \
certificate=your-certificate-name \
authentication=mschap2 \
default-profile=sstp-profile
Verbindungslink
sstp://username:strong-password@yourdomain.com:443?name=Office&cc=DE&label=Work
- Verwenden Sie nach Möglichkeit ein gültiges öffentliches TLS-Zertifikat.
- Öffnen Sie den SSTP-TCP-Port in der Firewall.
- Erstellen Sie eindeutige Anmeldeinformationen für jeden Benutzer oder jedes Gerät.
- Lassen Sie den PPP-Server IP- und DNS-Parameter bereitstellen, wenn Ihr Schema dies unterstützt.
- Verwenden Sie RADIUS- oder native Serverbeschränkungen für Ablauf, Abrechnung und Grenzwerte für gleichzeitige Sitzungen.
Checkliste für die SSTP-Diagnose
| Symptom | Was zu überprüfen ist |
|---|---|
| TLS wird sofort geschlossen | Zertifikatskette, SNI/Hostname, Firewall, nicht unterstützte TLS-Richtlinie oder Proxy vor SSTP. |
| Authentifizierungsfehler | Login und Passwort, PPP-Authentifizierungsmethode, Kontostatus, geheimes Ablaufdatum und RADIUS-Antwort. |
| Verbunden, aber kein Verkehr | Routen, NAT/Masquerade, DNS, Weiterleitungsregeln in der Firewall und Server-IP-Pool. |
| Verbindungsabbruch beim Netzwerkwechsel | Server-Timeout-Richtlinie und Client-Wiederverbindungsverhalten: Beim Wechsel von WLAN/Mobilfunknetzwerk zu iOS wird der Pfad möglicherweise neu erstellt. |
NaiveProxy mit Caddy
Ein gängiges NaiveProxy-Schema verwendet Caddy mit einer Assembly, zu der ein Forward-Proxy hinzugefügt wird. Der wichtige Teil ist die authentifizierte HTTP-VERBINDUNG über TLS. Der genaue Aufbau von Caddy und die Plugin-Syntax können variieren, daher ist das unten gezeigte Bereitstellungsmuster kein garantiertes Kopieren und Einfügen.
yourdomain.com {
tls admin@yourdomain.com
route {
forward_proxy {
basic_auth username strong-password
hide_ip
hide_via
probe_resistance
}
respond 204
}
}
naive+https://username:strong-password@yourdomain.com:443?sni=yourdomain.com&name=Office&cc=DE&label=Work
Diese Option wird häufig für die übliche TLS-Vervollständigung am Proxy, automatische Zertifikate und einfache Basisauthentifizierung gewählt.
NaiveProxy mit Sing-Box
Eine andere Möglichkeit besteht darin, Sing-Box direkt über Naive Inbound auszuführen. Dies ist praktisch, wenn eine Binärdatei sowohl den Proxy-Listener als auch die Routing-Logik besitzen muss.
{
"log": { "level": "warn" },
"inbounds": [
{
"type": "naive",
"tag": "naive-in",
"listen": "0.0.0.0",
"listen_port": 443,
"users": [
{ "username": "username", "password": "strong-password" }
],
"tls": {
"enabled": true,
"server_name": "yourdomain.com",
"certificate_path": "/etc/letsencrypt/live/yourdomain.com/fullchain.pem",
"key_path": "/etc/letsencrypt/live/yourdomain.com/privkey.pem"
}
}
],
"outbounds": [
{ "type": "direct", "tag": "direct" }
],
"route": { "final": "direct" }
}
[Unit]
Description=sing-box naive proxy
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/sing-box run -c /etc/sing-box/config.json
Restart=on-failure
RestartSec=3
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
UDP-over-TCP für NaiveProxy
NaiveProxy ist hauptsächlich TCP-orientiert. Wenn Benutzer UDP-ähnlichen Datenverkehr über ein Naive-Profil benötigen, kann MONO VPN UDP-Streams an einen separaten Naive TCP-Listener weiterleiten. Hinzufügen uot auf den Link und führen Sie einen kompatiblen Listener auf diesem Port aus.
naive+https://username:strong-password@yourdomain.com:443?sni=yourdomain.com&uot=8443
{
"log": { "level": "warn" },
"inbounds": [
{
"type": "naive",
"tag": "naive-uot-in",
"listen": "0.0.0.0",
"listen_port": 8443,
"users": [
{ "username": "username", "password": "strong-password" }
],
"tls": {
"enabled": true,
"server_name": "yourdomain.com",
"certificate_path": "/etc/letsencrypt/live/yourdomain.com/fullchain.pem",
"key_path": "/etc/letsencrypt/live/yourdomain.com/privkey.pem"
}
}
],
"outbounds": [
{ "type": "direct", "tag": "direct" }
],
"route": { "final": "direct" }
}
Öffnen Sie den UoT-TCP-Port nur, wenn Sie diesen Modus verwenden. Wenn uot fehlt, verwendet MONO VPN den regulären NaiveProxy-Zweig für TCP-Verkehr und ein zusätzlicher Listener ist nicht erforderlich.
Sicherheit und Betrieb
- Veröffentlichen Sie keine echten Passwörter, Root-Zugangsdaten oder langlebigen gemeinsamen Schlüssel.
- Geben Sie jedem Benutzer oder Gerät eindeutige Anmeldeinformationen aus.
- Rufen Sie Daten ab und rotieren Sie sie, wenn ein Benutzer die Website verlässt, ein Link durchgesickert ist oder der Zugriff abgelaufen ist.
- Aktualisieren Sie Caddy, Sing-Box, RouterOS, SoftEther oder den von Ihnen gewählten VPN-Stack.
- Begrenzen Sie die Verwaltungsports nach IP-Quelle und trennen Sie die Verwaltung von den VPN-/Proxy-Ports.
ufw allow 443/tcp
ufw allow 443/udp
ufw allow 8443/tcp
Öffnen Sie nur Ports, die Ihrem Design entsprechen. UDP 443 ist optional und hängt von der Verwendung von QUIC/HTTP3 ab. TCP 8443 wird nur für das UDP-over-TCP-Beispiel benötigt.
