serveur SSTP
SSTP nécessite un nom d'hôte public, TCP 443 ou tout autre port TCP disponible, un certificat TLS, une authentification PPP et une configuration IPv4 sur le serveur. Les déploiements de style RouterOS, SoftEther et Windows RRAS conviennent s'ils fournissent un service SSTP compatible.
Exemple de style RouterOS
/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
Lien de connexion
sstp://username:strong-password@yourdomain.com:443?name=Office&cc=DE&label=Work
- Si possible, utilisez un certificat TLS public valide.
- Ouvrez le port TCP SSTP dans le pare-feu.
- Créez des informations d'identification uniques pour chaque utilisateur ou appareil.
- Laissez le serveur PPP fournir les paramètres IP et DNS si votre système le prend en charge.
- Utilisez les restrictions RADIUS ou du serveur natif pour les limites d'expiration, de comptabilité et de sessions simultanées.
Liste de contrôle de diagnostic SSTP
| Symptôme | Que vérifier |
|---|---|
| TLS se ferme immédiatement | Chaîne de certificats, SNI/nom d'hôte, pare-feu, politique TLS non prise en charge ou proxy avant SSTP. |
| Erreur d'authentification | Nom d'utilisateur et mot de passe, méthode d'authentification PPP, statut du compte, date d'expiration du secret et réponse RADIUS. |
| Connecté mais pas de trafic | Routes, NAT/mascarade, DNS, règles de transfert dans le pool IP du pare-feu et du serveur. |
| Déconnexion lors d'un changement de réseau | Politique de délai d'expiration du serveur et comportement de reconnexion du client : lors du passage du réseau Wi-Fi/mobile vers iOS, le chemin peut être recréé. |
NaiveProxy avec Caddy
Un schéma NaiveProxy courant utilise Caddy avec un assembly auquel un proxy direct est ajouté. La partie importante est HTTP CONNECT authentifié sur TLS. La version exacte de Caddy et la syntaxe du plugin peuvent varier, de sorte que le modèle de déploiement présenté ci-dessous n'est pas un copier-coller garanti.
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
Cette option est souvent choisie pour la complétion TLS habituelle au niveau du proxy, les certificats automatiques et l'authentification de base simple.
NaiveProxy avec boîte de chant
Une autre option consiste à exécuter sing-box directement à partir de Naive inbound. Ceci est pratique lorsqu'un binaire doit posséder à la fois l'écouteur proxy et la logique de routage.
{
"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 sur TCP pour NaiveProxy
NaiveProxy est principalement orienté TCP. Si les utilisateurs ont besoin d'un trafic de type UDP via un profil Naive, MONO VPN peut acheminer les flux UDP vers un écouteur Naive TCP distinct. Ajouter uot au lien et exécutez un écouteur compatible sur ce port.
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" }
}
Ouvrez le port TCP UoT uniquement lorsque vous utilisez ce mode. Si uot est absent, MONO VPN utilise la branche NaiveProxy standard pour le trafic TCP et un écouteur supplémentaire n'est pas nécessaire.
Sécurité et fonctionnement
- Ne publiez pas de vrais mots de passe, d’informations d’identification root ou de clés partagées de longue durée.
- Émettez des informations d’identification uniques à chaque utilisateur ou appareil.
- Rappelez et faites pivoter les données lorsqu'un utilisateur quitte, qu'un lien a fui ou que l'accès a expiré.
- Mettez à jour Caddy, sing-box, RouterOS, SoftEther ou la pile VPN de votre choix.
- Limitez les ports de gestion par source IP et séparez l'administration des ports VPN/proxy.
ufw allow 443/tcp
ufw allow 443/udp
ufw allow 8443/tcp
Ouvrez uniquement les ports qui correspondent à votre conception. UDP 443 est facultatif et dépend de l'utilisation de QUIC/HTTP3. TCP 8443 n'est nécessaire que pour l'exemple UDP-over-TCP.
