MONO VPN
技术文档

设置 SSTP 和 NaiveProxy

将您自己的服务器或第三方点连接到 MONO VPN 的提供商中立示例。选择所需的方案并使其适应您的基础设施。

SSTP服务器

SSTP 需要公共主机名、TCP 443 或其他可用的 TCP 端口、TLS 证书、PPP 身份验证以及服务器上的 IPv4 配置。如果 RouterOS、SoftEther 和 Windows RRAS 类型的部署提供兼容的 SSTP 服务,则它们是合适的。

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

连接链接

sstp://username:strong-password@yourdomain.com:443?name=Office&cc=DE&label=Work
  • 如果可能,请使用有效的公共 TLS 证书。
  • 在防火墙中打开 SSTP TCP 端口。
  • 为每个用户或设备创建唯一的凭据。
  • 如果您的方案支持,让 PPP 服务器提供 IP 和 DNS 参数。
  • 使用 RADIUS 或本机服务器限制来限制过期、记帐和并发会话限制。

SSTP 诊断清单

症状要检查什么
TLS 立即关闭证书链、SNI/主机名、防火墙、SSTP 之前不支持的 TLS 策略或代理。
认证错误登录名和密码、PPP 身份验证方法、帐户状态、秘密到期日期和 RADIUS 响应。
已连接但无流量路由、NAT/伪装、DNS、防火墙和服务器 IP 池中的转发规则。
更换网络时断线服务器超时策略和客户端重新连接行为:当将 Wi-Fi/移动网络切换到 iOS 时,可能会重新创建路径。

NaiveProxy 与 Caddy

常见的 NaiveProxy 方案使用 Caddy 和添加了转发代理的程序集。重要的部分是通过 TLS 进行身份验证的 HTTP CONNECT。 Caddy 和插件语法的确切构建可能有所不同,因此下面显示的部署模式不能保证是复制粘贴。

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

通常选择此选项来完成代理上的常见 TLS、自动证书和简单的基本身份验证。

带单盒的 NaiveProxy

另一种选择是直接从 Naive inbound 运行 sing-box。当一个二进制文件必须同时拥有代理侦听器和路由逻辑时,这很方便。

{
  "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

NaiveProxy 的 UDP-over-TCP

NaiveProxy主要是面向TCP的。如果用户需要通过 Naive 配置文件获得类似 UDP 的流量,MONO VPN 可以将 UDP 流路由到单独的 Naive TCP 侦听器。添加 uot 链接并在该端口上运行兼容的侦听器。

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" }
}

仅在使用此模式时打开 UoT TCP 端口。如果 uot 如果不存在,MONO VPN 使用常规 NaiveProxy 分支来处理 TCP 流量,并且不需要额外的侦听器。

安全与操作

  • 不要发布真实密码、root 凭据或长期共享密钥。
  • 向每个用户或设备颁发唯一的凭据。
  • 当用户离开、链接泄露或访问权限过期时,调用并轮换数据。
  • 更新 Caddy、sing-box、RouterOS、SoftEther 或您选择的 VPN 堆栈。
  • 按 IP 源限制管理端口并将管理与 VPN/代理端口分开。
ufw allow 443/tcp
ufw allow 443/udp
ufw allow 8443/tcp

仅打开符合您设计的端口。 UDP 443 是可选的,取决于 QUIC/HTTP3 的使用。仅 UDP-over-TCP 示例需要 TCP 8443。