MONO VPN
Documentation technique

Configuration de SSTP et NaiveProxy

Exemples indépendants du fournisseur pour connecter votre propre serveur ou un point tiers à MONO VPN. Sélectionnez le schéma souhaité et adaptez-le à votre infrastructure.

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ômeQue vérifier
TLS se ferme immédiatementChaîne de certificats, SNI/nom d'hôte, pare-feu, politique TLS non prise en charge ou proxy avant SSTP.
Erreur d'authentificationNom 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 traficRoutes, 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éseauPolitique 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.