# 出口代理

**出口代理（落地出口协议）** 在落地节点与真实目标之间再增加一层上游代理。入站协议决定客户端怎样连接入口，出口协议决定落地怎样连接上游，两者分别配置。

```text
客户端 → 入口入站代理 → 已配置的转发路径 → 落地 → 上游代理 → 真实目标
```

直连路径没有额外 forwarder 时，由入口承担出站角色。真实目标仍由客户端请求携带，上游代理地址不等于真实目标网站。

填写上游提供的地址和认证参数。

## 打开出口设置

进入 **端口管理 → 端口管理 → 添加 / 编辑端口 → 入站配置**：

1. 启用入站代理，选择客户端需要的入站协议并配置认证。
2. 展开 **出口代理（落地出口协议）**。
3. 选择 SOCKS5、Hysteria2、TUIC、Juicity，或 **引用其他端口 / 分流规则**。
4. 回到表单顶部，按当前地址栏标题填写上游地址或保留引用地址。

入站基础设置见[入站代理](/docs/inbound-proxy/)。出口面板依赖入站代理启用，不应把普通端口转发直接当作动态目标代理来配置。

## 先看顶部地址栏的含义

| 当前配置 | 顶部地址栏填写什么 |
| --- | --- |
| 入站代理开启，出口选“无” | **连通性测试目标**，用于探测；真实业务目标由客户端指定 |
| 出口为 SOCKS5 | **出口 SOCKS5 服务器**，填写上游的 `host:port` |
| 出口为 Hysteria2 / TUIC / Juicity | 上游代理服务器的 `host:port` |
| 出口为引用 | **出口上游地址（可选覆盖）**；留空使用被引用对象的地址 |

例如 SOCKS5 上游可以填写 `proxy.example.com:1080`，Hysteria2 上游可以填写 `hy2.example.com:443`。每行一个，IPv6 用 `[2001:db8::10]:443`；多条地址可作为上游候选。同一端口使用同一套协议和认证，不适合把参数不同的上游混在一份地址列表中。

切换出口模式后，检查原来的地址是否仍合适，尤其不要把原探测用的 `1.1.1.1:53` 留成代理服务器地址。普通目标的 `# pause / # first / # last` 注释不用于这组出口地址。

## 配置 SOCKS5 上游

![SOCKS5 出口协议、分享链接导入及上游认证字段](https://img.coderluny.com:444/uploads/zfc-tutorial-20261018-egress-socks5-1b538f7555ad.png)

1. 出口协议选 **SOCKS5**。
2. 顶部 **出口 SOCKS5 服务器**填写真实上游地址。
3. 上游要求认证时，填写其用户名和密码；只有上游允许无认证时，才将两者同时留空。
4. 多条 SOCKS5 地址共用这套认证，保存前逐一核对。

这里填写的是上游认证，与入口客户端使用的密码各自独立。

## 配置 Hysteria2、TUIC 或 Juicity

![Hysteria2 出口的认证、SNI、证书校验、ALPN 和混淆设置](https://img.coderluny.com:444/uploads/zfc-tutorial-20261018-egress-hy2-773968602239.png)

| 协议 | 核对的主要参数 |
| --- | --- |
| Hysteria2 | 认证口令、TLS、ALPN，以及上游是否启用混淆 |
| TUIC | UUID、密码、拥塞控制、TLS、ALPN；仅在上游支持时开启 0-RTT |
| Juicity | UUID、密码、拥塞控制、TLS、ALPN |

UUID 和密码必须与上游账号一致。面板的“生成”按钮不会自动修改上游账号，已有上游不能随意生成一个新 UUID 代替。

这些出口使用 QUIC，需要落地到上游的 UDP 可达。上游地址、认证都正确仍连不上时，检查这段路径的防火墙和 UDP 支持。

### TLS、ALPN 与混淆

- **TLS SNI**：填写上游证书认可的名称；留空时由落地使用上游地址的主机名兜底。使用 IP 连接但证书签给域名时，应明确填写域名。
- **公共 CA 校验**：校验证书链、名称和有效期，是新表单默认值。
- **只钉指纹**：只核对上游叶证书 SHA-256，适用于已确认指纹的自签证书；不执行常规证书链、名称和有效期校验。
- **公共 CA 校验 + 钉指纹**：同时要求常规校验与指纹匹配。
- **不校验**：关闭证书验证，不应作为排障时的默认修复方法。

指纹应来自可信渠道提供的上游叶证书 DER SHA-256，可填写 64 位十六进制，也可粘贴冒号分隔形式。上游换证后，应同步核对指纹。

ALPN 必须与上游兼容。不确定时保留协议默认值；填写一个不匹配的值可能直接导致握手失败。Hysteria2 的 Salamander / Gecko 混淆类型与口令也要和上游一致，口令至少 4 字节；Gecko 包长区间留空使用默认值。

## 从分享链接导入

在出口面板粘贴上游提供的 `socks5://`、`hysteria2://`、`tuic://` 或 `juicity://` 链接，点击 **导入**。

导入成功会替换当前出口配置和顶部上游地址，保存前仍可调整。重新检查协议、地址、认证、SNI、证书验证和混淆；不要认为链接导入一定等于当前上游可用。

分享链接包含凭据，不要放进教程、公开工单或截图。解析失败时先核对链接协议和格式，避免把未成功导入的表单直接保存。

## 引用已有端口或共同规则

引用模式让当前出口像客户端一样连接另一个端口，使用它的入站协议、地址和认证，减少重复维护。

![出口引用模式：对象类型、搜索选择和地址自动展开](https://img.coderluny.com:444/uploads/zfc-tutorial-20261018-egress-reference-3139cd0b0fcf.png)

> 旧 UI 把第二种引用对象写作“分流规则”。这里实际选择的是 **多线路共同规则**，不是“分流管理”里的流量匹配规则或规则集。

1. 先确认被引用对象已开启可用的入站代理，并与当前端口属于同一订阅。
2. 出口协议选 **引用其他端口 / 分流规则**。
3. 单端口选择 **端口**；多线路共同规则选择界面上的 **分流规则**。
4. 搜索并选择对象，核对其协议以及暂停、过期等状态。
5. 顶部 **出口上游地址（可选覆盖）** 通常留空；有意覆盖时，确认新地址仍使用被引用对象那套协议和凭据。

候选由服务端按订阅和协议资格筛选。当前可引用的入站协议是 **SOCKS5、Hysteria2、TUIC、Juicity**；SS、VLESS、Reality、AnyTLS 等入站端口不会因此自动具备出口引用资格。管理员编辑他人的端口时，也受被编辑端口的订阅范围约束。

“候选加载失败”应重试请求；“没有可引用对象”则检查同订阅对象是否已开启合格的入站协议。两者需要分别处理。

单端口被暂停、过期或删除，或者出现循环、自引用、过深引用时，会导致引用不可用，不能假定系统会自动绕过这个上游。共同规则仍有合格可用成员时可以展开；全部成员不可用时才整体不可用，这不等于按网络健康状态对所有入口做负载均衡。编辑已有端口时查看引用状态，修复后再验证业务。

## 保存与验证

1. 保存后确认端口已同步。
2. 客户端仍按入口入站协议连接，不要把客户端地址替换成上游地址。
3. 访问实际目标，检查连接统计中的真实目标和转发路径。
4. 核对上游日志及最终出站地址，确认增加的代理层生效。
5. 需要 UDP 时，验证实际 UDP 请求与响应；启用出口代理的端口仍存在 **WireGuard 原生 UDP 分流拒绝**限制。

| 现象 | 优先检查 |
| --- | --- |
| 地址栏仍是连通性测试目标 | 入站开关和出口协议是否已经正确选择 |
| SOCKS5 认证失败 | 上游用户名、密码，以及多地址是否确实共用认证 |
| QUIC 握手失败 | UDP 可达性、SNI、证书校验、指纹和 ALPN |
| Hysteria2 有连接却不通 | 认证口令、混淆类型与混淆口令 |
| 引用对象不在列表 | 同订阅要求、入站协议资格、对象类型、候选加载状态 |
| 修改引用后业务中断 | 被引用对象是否暂停、过期或换号，地址覆盖是否仍正确 |

继续阅读：[入站代理](/docs/inbound-proxy/) · [多线路共同维护](/docs/multi-line-rule/) · [连接诊断与测速](/docs/diagnostics-speed-test/)。