在管理后台:节点
经入口节点中转
中转在什么情况下能帮到网络封锁了境外节点的用户、它解决不了什么、入口节点能看到什么、如何添加和检测中转、订阅里多出的第二个服务器,以及它的限制。
中转是某个节点(入口)上的一个端口,它把另一个节点(出口)上某个服务器的加密流量原样转发过去。网络封锁了出口地址的用户,只需连接入口:入口把他们的数据交给出口,其余一切仍由出口完成。途中不会解密任何内容:会话依旧是从用户的手机直达出口。
入口节点用内核转发(一张它自己的 nftables 表 mistgate_relay,每条中转一条 DNAT 规则),因此几乎不占用 CPU 和内存。入口上没有被中转服务器的任何密钥。
什么时候有用#
| 用户遇到的封锁 | 经中转 |
|---|---|
| 出口的 IP 地址或子网被其运营商或所在地区封锁,而国内其他地方能访问 | 有用。用户连接入口的地址;入口从自己的数据中心访问出口。 |
| 连接境外托管商的流量在几 KB 后冻结(主要是移动运营商) | 如果入口所在网络不在该名单上,且入口到出口的链路不冻结,则有用。 |
| 移动网络的白名单:只放行获批的地址 | 只有当入口的地址本身在名单上才行。普通 VPS 通常不在其中;在承诺任何事之前先检测。 |
| 出口 IP 在全国范围内被封锁,包括入口所在的数据中心 | 没用:入口到出口的链路同样被封。开启前的检测会发现这一点。 |
| 入口也被过滤(它的地址、它托管商的地址段) | 没用:用户连不上入口。入口节点自己在可达性中的国家检测会显示这一点。 |
| 协议在整条路径上都被切断 | 没用:中转传递的是同一个协议,同样会被切断。 |
所以中转针对的是按地址或按网络、而不是按国家的封锁,并且要求用户能够连上入口。选择之前,对话框会给出三条提示:国家检测如何看待出口、入口能否访问出口(当 TSPU 探测从该入口运行时才知道),以及用户能否连上入口。「无数据」表示未知,不表示没问题。
入口所在国家能看到什么#
- 能看到:连接的用户的地址(那里的家庭和移动线路与个人绑定)、时间、流量大小,以及出口的地址。
- 看不到:网站、内容和密钥。会话从手机到出口全程加密。入口自身的运营商看到的与任何运营商一样:与某个地址的连接。
- 入口被查扣时,能得到「端口 → 出口地址」这张表,以及该节点为它自己的服务器保存的内容。上面没有任何用户去向的信息。
位于审查国家的中转受该国法律管辖:其托管商可能需要识别你的身份,并提供对服务器的访问。中转能看到地址和流量大小,看不到内容。托管商也可能关闭服务器;中转可以一键移除,入口上也没有用户访问去向的记录。这不是法律意见:请自行判断入口所在国家对你和你的用户是否可以接受。
工作方式#
- 你选择另一个节点的服务器,以及入口上的端口(默认使用出口自己的端口,前提是它在入口上空闲)。
- 面板检测链路:入口节点尝试连接出口的服务器(TCP 端口必须表现为 Mistgate 自己的服务器;UDP 则由出口统计收到的数据包)。
- 开启中转:入口的 Agent 安装转发。
- 面板检测路径:第三个节点(不是入口也不是出口;只有没有其他节点可用时才用面板本身)经由入口的端口访问出口的服务器。
- 只有这时中转才是「正常」,订阅里才会出现第二个服务器。任一检测未通过的中转会被再次关闭,对话框会说明停在哪个阶段。
计费仍留在出口:流量、配额、限速、设备和种子保护照旧按每个人生效。出口看到的是入口的地址,而不是用户的地址。流量会两次经过入口(来自用户和发往出口),因此入口的流量限额和负载两个方向都计入;延迟是用户到入口加上入口到出口。MTU 不变。
添加中转#
- 如果更新页面提示,请先更新入口节点的 Agent:旧版 Agent 不能转发(「请更新节点 Agent 后再添加中转」)。服务器的防火墙必须放行被转发的流量;如果它丢弃这类流量(
FORWARD策略为DROP,UFW 和 Docker 默认如此),中转无法工作,卡片会说明。 - 打开用户访问不了的节点:节点 → 该节点 → 入口 → 添加入口…。节点无法访问时,对话框这样开头:「从俄罗斯,de1 在 MTS 无法访问。给这些用户另一条路 — 节点和密钥都不变。」
- 选择经其他节点:「用户连接他们网络能访问的节点,由它把流量原样转发给 de1。」最佳选择会有提示(「推荐 msk1:MTS 可以访问」)。IPv6 入口目前是灰色的,并注明原因。
- 选择入口节点(经哪个节点)。先是推荐:MTS 可以访问,然后是其他节点;每个节点显示国家代码、用户能否访问它,以及在 TSPU 探测从它运行的情况下,它能否连到 de1。已经在中转 de1 服务器的节点会写「已转发 de1 的 2 个服务器」。
- 勾选要中转的服务器。每个服务器在入口上都有一个端口(自动表示出口的端口,若空闲则用它,否则用一个空闲端口)。无法中转的服务器显示为灰色并注明原因。
- 检测并开启会运行两项检测并开启中转。仅检测只运行链路检测,并添加处于关闭状态的中转;请在 15 分钟内点击该行的开启,或重新检测(开启需要 15 分钟内通过的链路检测)。对话框会显示进度和每个服务器的结果;返回回到选择节点。
- 该行显示「正常,3 分钟前检测过」,或「未开启」并给出阶段:
leg(入口连不上出口的服务器:封锁、路由、出口的防火墙),path(从外部无法访问入口上的端口:入口的防火墙或托管商,或FORWARD被丢弃)。立即检测会重复检测;关闭和删除会停止入口上的转发。
也可以从入口一侧开始:入口节点 → 入口 → 分组经 msk1 访问 → 中转其他节点…。对话框相同,只是列出所有节点的服务器,而不是某一个节点的。
在出口节点上,每条中转是入口标签页里的一个入口经 msk1;在入口节点上,它是分组经 msk1 访问中的一行(「→ DE de1」)。从节点上删除协议配置,或让节点退役,也会删除依赖它们的中转;对话框会告诉你有几条。
监控#
每条开启的中转都会作为单独的目标加入客户端视角检测轮次:面板像应用一样,经入口的转发端口、使用出口的协议配置和凭据建立连接,并通过它读取 64 KB,因此开始后又停止的传输会被算作冻结。
- 中转行显示最近一轮的结果:「经中转:正常,182 ms,4 分钟前」,或失败的阶段。
- 它还显示自入口 Agent 安装转发以来经转发通过的字节数和数据包数,以及 Agent 读取的时间。没有计数器的旧版 Agent 不显示这些。
- 连续两轮失败后,运行状况页面会出现
relay_down告警:「经 msk1 的 de1 中转不可用」。告警用文字说明所处阶段:leg,入口连不上出口;entry,入口上的转发没有安装;path,从外部经入口没有任何流量通过;freeze,传输在最初几 KB 之后停滞。告警上的打开入口按钮会打开出口节点的入口标签页,并定位到该入口。 - 出口自身的检测告警或任一节点的
node_down未关闭时,该告警让位于它们;中转恢复正常后自动关闭。Telegram 也会发送它。
面板自己的检测从面板所在的服务器发起,位于入口所在国家之外,因此它们能发现链路中断或面板这条路径上的停滞,但发现不了 TSPU 对国内用户施加的冻结;对此请查看可达性中的 bsbord 和 kl!ck 报告。
订阅里的第二个服务器#
每条正常的中转,会让用户在订阅中紧接着出口的服务器得到一个副本:密钥、SNI 和证书指纹都相同,地址换成入口的地址,端口换成中转的端口。名称以入口的国家代码结尾:🇩🇪 DE · VLESS · via RU(俄语订阅中是 через RU,中文订阅中是 经 RU),并按 Happ 的 30 字符限制压缩。所有格式都有它(链接列表、Mihomo YAML、Xray JSON、sing-box JSON);在 Mihomo 分组里,它是同一个选择器的又一个选项。
- 谁会得到:所有可以使用出口服务器、且可以使用入口节点的用户。没有新的设置;可以通过用户的节点选择来限制。
- 何时:订阅下一次刷新时(默认每 12 小时)。已关闭或出故障的中转没有副本。
- 用户看到什么:一个可选的第二个服务器,第一个连不上时可以用它。他们正在使用的服务器不变。
无法转发的服务器#
| 服务器 | 原因 | 怎么办 |
|---|---|---|
| CDN 之后的 VLESS | 用户连接的是 CDN,不是节点。 | 不用处理:它不需要中转。 |
| Let's Encrypt 证书签发给节点 IP 地址的服务器 | 应用会拒绝入口上的这个地址。 | 改用域名证书,或带指纹的自签名证书。 |
| 带端口跳跃范围的服务器 | 中转只传递一个端口。 | 副本只使用这一个端口:端口跳跃不能经中转使用。 |
| AmneziaWG | 它的副本是单独的密钥,尚未实现。 | 稍后支持。 |
中转只支持 IPv4:入口的转发两端都使用 IPv4。
使用 MCP#
管理员令牌可以读取和管理中转:relays_list、relay_candidates 和 relay_check 用于读取和检测,relay_plan / relay_apply 用于创建、开启、迁移和删除(始终需要所有者批准)。没有任何工具会显示节点的地址。请参阅 MCP。