跳转至

OpenConnect 客户端

自 sing-box 1.14.0 起

仅客户端

构建标签

OpenConnect endpoint 需要 with_openconnect 构建标签。

当禁用 system 时,内部网络栈还需要 with_gvisor 构建标签。

结构

{
  "type": "openconnect",
  "tag": "oc-client",

  "system": false,
  "name": "",
  "server": "vpn.example.com",
  "flavor": "anyconnect",
  "username": "",
  "password": "",
  "auth_group": "",
  "token": {
    "mode": "",
    "secret": "",
    "pin": "",
    "password": "",
    "device_id": "",
    "counter": 0
  },
  "reported_os": "",
  "user_agent": "",
  "csd": {
    "wrapper_path": ""
  },
  "hip": {
    "wrapper_path": ""
  },
  "tncc": {
    "wrapper_path": "",
    "device_id": "",
    "user_agent": "",
    "machine_identification_enabled": false,
    "certificates": [
      {
        "certificate": [],
        "certificate_path": ""
      }
    ]
  },
  "no_udp": false,
  "allow_insecure_crypto": false,
  "tls": {
    "certificate_authority": [],
    "certificate_authority_path": "",
    "client_certificate": [],
    "client_certificate_path": "",
    "client_key": [],
    "client_key_path": "",
    "client_key_password": "",
    "mca_certificate": [],
    "mca_certificate_path": "",
    "mca_key": [],
    "mca_key_path": "",
    "mca_key_password": ""
  },
  "form_entries": [
    {
      "form_id": "",
      "submission_key": "",
      "name": "",
      "value": "",
      "promote": false
    }
  ],

  ... // 拨号字段
}

当内容只有一项时,可以忽略 JSON 数组 [] 标签。

字段

system

使用系统接口。

需要权限,且不能与现有系统接口冲突。

禁用时,sing-box 使用内部网络栈。

禁用时需要 with_gvisor 构建标签。

name

系统接口的自定义接口名称。

默认使用自动生成的 oc 接口名称。

server

必填

OpenConnect VPN 服务器 HTTPS URL。

省略协议时会添加 https://。不支持 URL 用户信息、查询和片段。

flavor

OpenConnect 协议 flavor,可选值为 anyconnectgpfortinetf5pulsenc

默认使用 anyconnect

username

用于填充匹配认证表单字段的用户名。

password

用于填充匹配认证表单字段的密码。

auth_group

认证组,用于在所选 flavor 支持时预选匹配的组、realm、domain 或 gateway 选项。

token

用于自动回答匹配 token 字段的软件 token 配置。

token.mode

必填

软件 token 模式,可选值为:

  • totp:基于时间的一次性密码。
  • hotp:基于 HMAC 的一次性密码。
  • stoken:RSA SecurID 软件 token。

token.secret

必填

软件 token 密钥。

对于 totphotp,可以是 Base32 密钥、带 base32: 前缀的密钥或类型匹配的 otpauth:// URI。

对于 stoken,这是编码后的 RSA SecurID CTF token 内容。

token.pin

stoken 模式的 RSA SecurID PIN。

token.password

stoken 模式下用于解密受密码保护的 RSA SecurID token 的密码。

token.device_id

stoken 模式下用于解密设备绑定 RSA SecurID token 的设备 ID。

token.counter

hotp 模式的初始计数器。

为零时,如果 otpauth:// URI 中存在计数器,则使用该计数器;否则从零开始。

reported_os

所选 flavor 支持时向 VPN 服务器报告的操作系统标识。

对于 anyconnectgppulse,支持的值为 linuxlinux-64winmac-intelandroidapple-ios

anyconnect 默认使用 linux-64gppulse 默认根据系统平台选择值。

user_agent

所选 flavor 支持时向 VPN 服务器报告的 User-Agent。

默认值由 flavor 决定。

csd

AnyConnect CSD/host scan 合规性选项。

服务器请求 CSD 时,默认使用内置 CSD 处理。

csd.wrapper_path

外部 AnyConnect CSD wrapper 可执行文件的路径。

为空时使用内置 CSD 处理。

hip

GlobalProtect HIP 检查和报告选项。

服务器请求 HIP 时,默认使用内置 HIP 报告。

hip.wrapper_path

外部 GlobalProtect HIP report wrapper 可执行文件的路径。

为空时使用内置 HIP 报告。

tncc

Network Connect TNCC 合规性选项。

服务器请求 TNCC 时,默认使用内置 TNCC 处理。

tncc.wrapper_path

外部 Network Connect TNCC wrapper 可执行文件的路径。

为空时使用内置 TNCC 处理。

tncc.device_idtncc.user_agenttncc.machine_identification_enabledtncc.certificates 冲突。

tncc.device_id

内置 TNCC 处理程序报告的设备 ID。

tncc.wrapper_path 冲突。

tncc.user_agent

内置 TNCC 处理程序使用的 User-Agent。

默认使用 Neoteris HC Http

tncc.wrapper_path 冲突。

tncc.machine_identification_enabled

启用内置 TNCC 机器标识,包括平台、主机名和观测到的 MAC 地址。

tncc.wrapper_path 冲突。

tncc.certificates

内置 TNCC 处理程序用于回答证书请求的机器证书。

需要启用 tncc.machine_identification_enabled

tncc.wrapper_path 冲突。

tncc.certificates.certificate

PEM 格式的 TNCC 机器证书内容。

tncc.certificates.certificate_path 冲突。

tncc.certificates.certificate_path

PEM 格式的 TNCC 机器证书路径。

tncc.certificates.certificate 冲突。

no_udp

禁用 DTLS 或 ESP 辅助数据通道,仅使用 TLS 数据通道。

allow_insecure_crypto

允许旧版 VPN 服务器所需的已弃用 TLS 和 DTLS 版本及密码套件。

默认禁用。此选项不会禁用服务器证书验证。

tls

OpenConnect TLS 配置。

tls.certificate_authority

PEM 格式的附加受信任 CA 证书内容。

这些证书会添加到系统证书池。

tls.certificate_authority_path 冲突。

tls.certificate_authority_path

PEM 格式的附加受信任 CA 证书路径。

这些证书会添加到系统证书池。

tls.certificate_authority 冲突。

tls.client_certificate

PEM 格式的客户端证书链内容。

tls.client_certificate_path 冲突。

tls.client_certificate_path

PEM 格式的客户端证书链路径。

tls.client_certificate 冲突。

tls.client_key

PEM 格式的客户端私钥内容。

tls.client_key_path 冲突。

tls.client_key_path

PEM 格式的客户端私钥路径。

tls.client_key 冲突。

客户端证书和私钥必须同时设置或同时为空。

tls.client_key_password

加密客户端私钥的密码。

tls.mca_certificate

PEM 格式的 AnyConnect 多证书认证(MCA)证书链内容。

tls.mca_certificate_path 冲突。

tls.mca_certificate_path

PEM 格式的 AnyConnect 多证书认证(MCA)证书链路径。

tls.mca_certificate 冲突。

tls.mca_key

PEM 格式的 AnyConnect 多证书认证(MCA)私钥内容。

tls.mca_key_path 冲突。

tls.mca_key_path

PEM 格式的 AnyConnect 多证书认证(MCA)私钥路径。

tls.mca_key 冲突。

MCA 证书和私钥必须同时设置或同时为空。

tls.mca_key_password

加密 MCA 私钥的密码。

form_entries

认证表单字段覆盖。

设置 submission_key 时按该字段匹配,否则按 form_idname 的组合匹配。后面的匹配项优先。

form_entries.form_id

form_entries.submission_key 为空时,与 form_entries.name 一起使用的认证表单标识符。

form_entries.submission_key

认证字段提交键。

form_entries.submission_keyform_entries.form_idform_entries.name 的组合之一必填。

form_entries.name

form_entries.submission_key 为空时,与 form_entries.form_id 一起使用的认证字段名称。

form_entries.value

自动提供给匹配认证字段的值。

form_entries.promote 冲突。

form_entries.promote

交互询问匹配的认证字段,而不是自动提供值。

form_entries.value 冲突。

拨号字段

参阅拨号字段了解详情。

交互式认证

在 sing-box dashboard 或任意 sing-box 图形客户端的 工具 > 端点 中认证和管理 endpoint。