mistgate 文档
中文

在管理后台:协议配置

协议配置

了解协议配置的含义、编辑器的使用方法、如何设置协议配置在节点上的端口和证书,以及哪些更改会影响现有用户。

本页内容

协议配置是一组带名称的协议设置,例如「Hysteria2 · 443,使用 Salamander 和 Let’s Encrypt」或「伪装成 DNS 的 AmneziaWG 3.1」。创建一次后,可以将它部署到任意数量的节点上;每次部署都是一台节点上的服务器。用户通过所属分组获得协议配置。本页介绍协议配置部分、协议配置编辑器以及如何将协议配置部署到节点;各协议的设置详见 Hysteria2、VLESS REALITY 和 AmneziaWG。

协议配置、节点和分组#

对象 用途
协议配置 确定协议及其设置:端口、证书、混淆和出口。
节点上的协议配置 确定协议配置在哪个节点上运行。节点可单独更改该协议配置的端口和域名(SNI)。
分组 确定哪些用户可以获得协议配置。分组是一组协议配置;每位用户都属于一个分组。

只有满足以下所有条件,用户才能获得一台服务器:协议配置属于其分组;协议配置部署在用户可使用的节点上;节点上的该协议配置已启用,且状态为运行中或启动中;用户处于有效状态;用户已启用的应用支持此协议。用户和分组详见用户与分组。

协议以插件形式提供#

每种协议都是面板的一个插件,目前包括 Hysteria2、VLESS 和 AmneziaWG。插件会以配置结构的形式提供设置,编辑器据此生成表单。因此,各协议的表单结构相同:

  • 字段分为基础、混淆和高级;每个部分的标题会显示已更改的项目数量(「已更改 2 项」)和错误数量(「1 个错误」);
  • 数值字段会标明单位(Mbit/s、s、字节);
  • 敏感信息(Hysteria2 混淆密码、AmneziaWG 头部保护密钥)有生成按钮。敏感信息会加密保存,之后不会再次显示;字段会提示「已保存在服务器上,无法显示。生成新值即可替换。」;
  • 某些字段属于关键字段:更改后会导致用户已有的配置失效。编辑器保存前会先询问,详见下文。

协议配置列表#

每项协议配置以卡片显示:名称、协议、简短设置摘要(「UDP 443 · Salamander · Let’s Encrypt」)、部署节点数和可获取它的用户数。黄色标签会说明为何没有用户能使用协议配置:未部署到任何节点和未加入任何分组。节点上的协议配置启动失败或 UDP 被封锁时,会显示警告圆点。

新建协议配置会打开编辑器。

每张卡片上有一行不显眼的文字,说明协议配置能在哪些订阅格式中使用:参见协议配置的订阅格式。

协议配置的订阅格式#

并非每种订阅格式都能包含每种协议配置:sing-box 没有 XHTTP,Gecko 和 AmneziaWG 只有 Mihomo 支持。列表中的每张卡片,以及编辑器中客户端看到的内容下的订阅格式,都会显示协议配置在哪些格式中可用。各类协议配置的对照表见订阅。

  • 这一行列出包含该协议配置的格式:「链接列表 · Mihomo · Xray JSON · sing-box」。在所有格式中都可用的协议配置只有这一行。
  • 黄色标签表示实际缺失:「sing-box:不可用(XHTTP)」。因同一原因缺失的格式共用一个标签:「链接列表、Xray JSON、sing-box:不可用(Gecko)」。悬停或聚焦标签可看到完整说明。
  • AmneziaWG 不算缺失,这是它的工作方式:这一行以「Mihomo · AmneziaVPN 密钥」结尾,没有标签。
  • Hysteria2 的端口跳跃范围同样不算缺失。链接列表和 Xray JSON 把它写成单个端口,因此它们的名称带有点状下划线和提示:「跳跃范围写为单个端口。」
  • 在编辑器中,这一行会随你的修改实时变化;草稿有错误时会隐藏。在用户卡片上,订阅类协议配置如果被某个格式排除,旁边只显示黄色标签。

原因是固定的代码。面板 API 和 MCP 会把它们作为协议配置每种格式的 note 返回。

代码 标签 含义
xhttp XHTTP sing-box 没有 XHTTP 传输:使用 XHTTP 的 VLESS(REALITY 或 TLS,直连或经 CDN)以及节点自己的站点。
self_signed 自签名 sing-box 无法按指纹校验自签名的 Hysteria2 证书。
gecko Gecko 只有 Mihomo 支持使用 Gecko 的 Hysteria2。
awg AmneziaVPN 密钥 链接列表、Xray JSON 和 sing-box 不包含 AmneziaWG。以点状下划线的文字显示,不是标签。
unsupported 不支持 该格式无法为此协议配置生成任何内容,也没有给出具体原因,例如地址无效。
hop_single_port 单端口 该格式包含此协议配置,但把端口跳跃范围写成了单个端口。不算缺失。

创建协议配置#

  1. 新建协议配置。面板中有多种协议时,可在协议下选择。表单使用插件的默认值,且所有敏感信息都已生成。
  2. 名称。输入名称前,名称会根据端口自动生成,例如「Hysteria2 · 443」。最多 64 个字符,会显示在面板列表中;名称模板中的 {profile} 也会将其显示在用户看到的服务器名称中(请参阅订阅)。
  3. 更改所需设置。面板会在输入时检查设置;有问题的字段会标记出来,修复问题前不会更新预览。
  4. 创建后立即执行决定点击创建后会发生什么:
    • 部署到节点:默认选中所有节点,或只选中你刚才所在的节点。Let’s Encrypt 协议配置尚未设置域名时,此区域会警告地址为 IP 的节点。
    • 添加到分组:会选中尚未拥有此协议的分组(否则该分组中的用户无法在此应用中使用任何协议配置);已有此协议配置的分组不会选中,因为第二个协议配置通常用于测试或作为变体。如果还没有分组,会显示创建分组「所有人」并添加此协议配置开关。
  5. 创建协议配置。系统会创建协议配置、将其添加到分组,然后在同一窗口中逐个部署到节点。节点拒绝部署时,窗口会保留并显示原因及可修改字段(例如其他端口或域名)。

右侧的客户端看到的内容面板会显示客户端将获得的协议配置内容,并隐藏敏感信息:Hysteria2 的分享链接(「订阅链接 · URI 列表」)和 AmneziaWG 的 .conf 文件(「AmneziaVPN · .conf」)。其下的订阅格式会显示协议配置在哪些格式中可用。

部署位置#

现有协议配置页面以部署位置开头:首行显示协议配置是否正常运行(「运行中:2 个节点、1 个分组、14 位用户」)或缺少什么,并提供相应修复按钮;其下分为三列:

  • 节点:每个节点及其端口、协议配置状态;启动失败时还会显示 Agent 错误。部署到节点可添加更多节点。
  • 分组:包含此协议配置的分组;编辑会打开一个分组,添加到分组可再添加一个分组。
  • 用户:按分组显示可获得此协议配置的用户数。只统计已启用支持该协议的应用的有效用户。

将协议配置部署到节点#

可通过以下两种方式部署,检查方式相同:

  • 在协议配置页面点击部署到节点,勾选节点(或所有节点),然后点击部署到 N 个节点;
  • 在节点页面点击协议配置 → 添加协议配置,选择协议配置,然后点击添加。

协议配置可以部署到集群中的任何节点,包括仍在等待安装的节点,但不能部署到已退役的节点。已连接的节点会立即收到新状态,协议配置会在几秒内启动;离线节点会在 Agent 重新连接后启动协议配置。

节点上的协议配置还可以单独设置:

  • 端口。留空表示使用协议配置的端口。
  • 域名(SNI)(Hysteria2)。留空表示使用协议配置的域名;协议配置未设置域名时,如果节点地址是域名,则使用节点地址。

节点上的第一个 AmneziaWG 协议配置还会要求选择该节点使用的 AmneziaWG 后端,详见 AmneziaWG。

端口和空闲端口建议#

同一节点上的两个协议配置不能监听同一端口,某个端口也不能落入其他协议配置的端口跳跃范围。端口被占用时,对话框会立即填入一个空闲端口并说明原因(「端口 443 已被「Main」占用:已填入空闲端口 8443。你也可以输入自己的端口。」);如果你输入了其他端口,点击使用 8443可恢复建议值。Hysteria2 会优先尝试 8443、4443、2053、2083、2087 和 2096,然后从 10000 至 60000 中随机选择;AmneziaWG 只选择随机端口。端口跳跃范围内的端口也视为已占用。

端口也可能被 Mistgate 以外的程序占用。协议配置启动前,面板无法检测到这种情况;协议配置启动后会失败,并显示「端口 443 已被其他程序占用」。如果能识别进程,诊断会显示其名称;更换端口会打开包含空闲端口的对话框。

证书#

AmneziaWG 不需要证书,VLESS REALITY 也不需要,它会使用目标站点的证书。Hysteria2 协议配置可以使用以下两种证书之一:

证书 要求 应用如何验证
Let’s Encrypt 域名的 A 记录指向节点,且可从互联网访问端口 80 和 443。 常规方式:验证域名和信任链。
自签名(固定指纹) 无要求:可使用 IP。 根据证书的 SHA-256 指纹(固定指纹)验证;订阅中会包含此指纹。

节点会自动获取 Let’s Encrypt 证书,并在证书到期前约一个月续期。节点会在 TCP 443 上响应验证请求(Hysteria2 协议配置也会在此端口提供伪装站点);端口 80 空闲时也会在该端口响应。同一节点上的 VLESS 协议配置若使用 TCP 443,就会占用该端口:请参阅在同一节点上运行 VLESS 和 Hysteria2。自签名证书在节点上生成,有效期为 10 年;剩余不足 30 天或域名(SNI)更改时,节点会生成新证书和新指纹。用户会在下次更新订阅时收到新指纹。

证书使用的服务器名称依次为:节点的域名(SNI)、协议配置的域名(SNI),或节点地址(如果是域名)。使用 IP 地址的节点采用自签名证书时,证书会包含该 IP。

节点地址为 IP 且未设置域名时,Let’s Encrypt 协议配置无法运行。对话框会在点击前提示,并提供两种处理方式:

  • 输入域名,其 A 记录指向节点 IP;
  • 切换到自签名证书:协议配置尚未部署时使用将「…」切换为自签名;协议配置已使用 Let’s Encrypt 部署到其他节点时使用为……创建自签名协议配置(原协议配置保持不变)。
注意

面板说明,自签名证书已通过官方 Hysteria2 客户端和 Mihomo 的验证,尚未通过 Happ 的验证。依赖此证书前,请先在手机上检查。

点击前的检查#

填写添加协议配置对话框(或节点设置中的编辑对话框)时,面板会向服务器确认实际操作是否会通过。每次更改后约 300 ms,面板会使用「仅验证」标志发送相同请求。服务器会运行实际操作中的所有检查,但不写入任何内容。服务器可能拒绝请求;此时对话框会在对应字段旁显示说明,并禁用按钮。也可能返回该协议配置在节点上的预期状态(占位符使用实际端口和域名),并包含警告和空闲端口建议。

代码 触发条件 对话框的说明或操作
acme_needs_domain 使用 Let’s Encrypt,且地址为 IP 的节点未设置域名 Let’s Encrypt 区域会显示输入域名和自签名证书选项。
port_taken 节点上的其他协议配置监听此端口,或端口位于它的端口跳跃范围内 「de1 上的端口 443 已被协议配置「Main」占用。」系统会填入空闲端口;可点击使用 N。
hop_taken 此协议配置的端口跳跃范围与节点上的另一协议配置重叠 显示重叠情况,并提供打开协议配置;只有更改范围才能解决。
port_in_hop 端口位于此协议配置自身的端口跳跃范围内 「端口必须在协议配置的跳跃范围(20000–30000)之外。」
sni_needs_domain 在 Let’s Encrypt 协议配置的域名(SNI)中输入 IP 地址 「Let’s Encrypt 在此处需要域名,而「……」不是域名。」
sni_invalid 输入内容既不是域名,也不是 IP 「「……」既不是域名,也不是 IP 地址。」
already_on_node 协议配置已部署到此节点 「此协议配置已部署在该节点上。」
node_retired 节点已退役 「此节点已从集群退役。」

保存新端口或更改端口时会运行 UDP 传递检查,最多约需 8 秒;「仅验证」只使用缓存。如果选定端口丢包,保存会停止,并建议一个通过相同检查的端口。你可以选择仍要添加来保存该端口;Mistgate 会将此选择记录在审计日志中。端口选择器会隐藏过去 30 天内出现丢包的端口,因此不会建议这些端口;它会优先建议刚通过检查的端口,然后列出未经检查的端口。

警告不会禁用按钮。目前有两种警告:

  • warp_missing:协议配置经 WARP 出口,但节点没有 WARP 账户、WARP 在该节点上已暂停,或节点最近一次报告表明隧道已断开。对话框会说明该协议配置无法在此节点上传输流量,并链接到节点的 WARP 卡片。
  • hy2_decoy_paused:将 TCP 端口上的 VLESS 协议配置与使用此端口的 Hysteria2 站点一起部署(默认使用 TCP 443),或反向操作。对话框会列出两个协议配置,并说明 VLESS 占用端口时 Hysteria2 站点会关闭。请参阅在同一节点上运行 VLESS 和 Hysteria2。

API 和 MCP 服务器也会返回相同代码,格式为「code: key=value&key=value」,因此脚本也可以读取。请参阅 API。

编辑器说明的错误#

服务器拒绝某个字段时,编辑器会在字段旁显示说明。以下代码会显示编辑器自带的提示;其他字段和代码会显示服务器返回的简短英文文本。

字段 代码 编辑器提示
端口 out_of_range 端口范围为 1 至 65535
端口跳跃,起始端口 invalid 端口必须位于跳跃范围之外
端口跳跃,起始端口 out_of_range 范围起始值必须介于 1024 和 65535 之间,且不能占用 SSH 和其他常用端口
端口跳跃,结束端口 too_wide 范围最多包含 20,000 个端口
混淆密码 length 密码长度必须为 8 至 128 个字符
域名(SNI) invalid 这看起来不像域名

AmneziaWG 客户端网络会显示服务器返回的文本:网络与其他 AmneziaWG 协议配置重叠(「与协议配置……的网络重叠」),或网络无法再更改(「协议配置部署到节点或添加设备后,客户端网络无法更改」)。

保存更改及其对现有用户的影响#

底部的栏会统计更改内容(「已更改:3 项」),并提供放弃更改和保存。保存后,更改会发送到此协议配置已部署的所有节点(「已保存 · 正在下发到 2 个节点」);协议配置会在节点上重启,连接它的用户会自动重新连接。

有些字段是关键字段:节点和应用必须保持设置一致,因此更改这些字段后,用户已有的配置会失效。保存此类更改前,编辑器会询问应用关键变更?并说明影响:

协议 关键字段 影响
Hysteria2 端口、端口跳跃、域名(SNI)、证书、混淆类型和密码 所有使用此协议配置的用户都将无法连接,直至应用更新订阅(最长为订阅刷新间隔,默认 12 小时)。窗口会列出受影响的用户。
VLESS 端口、传输方式、REALITY 目标、服务器名称、Short ID、XHTTP 路径、Host 请求头和填充 所有使用此协议配置的用户都将无法连接,直至应用更新订阅,与 Hysteria2 相同。窗口会列出受影响的用户。
AmneziaWG 协议版本、端口、客户端网段、S1–S4、H1–H4、头部保护密钥、随机尾部 此协议配置的所有设备都会停止工作并标记为过时:每台设备都需要重新获取配置。按钮显示为更改并重新签发密钥。

更改 Hysteria2 或 VLESS 时,窗口会提供两种处理方式:请用户手动更新订阅,或在新端口上复制协议配置,之后再移除旧配置。

在节点的协议配置标签页中更改某节点上的 AmneziaWG 协议配置端口,也会将其设备标记为过时,因为设备配置保存着旧端口。更改节点的地址(在节点的设置中)也会将该节点上所有 AmneziaWG 协议配置设备标记为过时,因为设备配置保存着旧地址。

如果编辑期间有其他人保存了协议配置,保存时会显示「此协议配置已在其他位置更改」和重新加载;面板不会静默覆盖较新的版本。

同一服务器同时直连和经 WARP 出口#

在协议配置页面的部署位置下,点击WARP 副本(协议配置已经经 WARP 出口时则显示直连副本),会创建一个使用另一种出口方式的副本。窗口会准确列出将创建的内容:

  • 名称会添加(或移除)「 · WARP」;名称被占用时,会在此前加上数字(「Main 2 · WARP」);
  • 所有节点上均空闲的端口(使用上文介绍的空闲端口建议);
  • 新密码和密钥:不会复制任何敏感信息;AmneziaWG 副本也会使用自己的客户端网段;
  • 不设置端口跳跃(两个范围会重叠);
  • 使用相同的节点和分组。没有可用 WARP 的节点会列出,但不会为 WARP 副本选中,因为该副本无法在那里传输流量。

先保存更改:副本根据已保存的协议配置创建。此后,这些分组中的用户会在应用中看到每个节点两次。服务器名称使用订阅 → 名称与文本中的模板:默认情况下先显示国家,再显示协议配置名称,因此副本名称为「🇩🇪 DE · Main · WARP」,原名称为「🇩🇪 DE · Main」。如果模板不含 {profile},两个名称只会相差一个数字;请参阅订阅。使用 AmneziaWG 时,每位要使用副本的用户都需要单独的设备(密钥)。WARP页面介绍了 WARP 本身。

删除协议配置#

危险区域 → 删除协议配置会永久删除协议配置,包含该配置的分组也会移除它。仍部署在节点上的协议配置不能删除:窗口会列出这些节点。请先从这些节点移除协议配置(节点 → 协议配置 → 移除)。

谁可以执行哪些操作#

只有所有者可以创建、更改和删除协议配置、将其部署到节点、从节点移除,或创建副本。所有者和协作者可以将协议配置添加到分组。所有管理员都可以查看协议配置。请参阅安全。

在 GitHub 上编辑此页