端点
endpoints 承载同时是入站与出站的协议栈:例如一个 WireGuard 或 Tailscale 实例既接受经隧道到达的连接,也向隧道内发起连接。条目形状与入站、出站相同 — 扁平的 type / tag 信封加上所选类型自身的字段,处于同一层级。
信封
| 字段 | 类型 | 默认值 | 允许值 | 描述 |
|---|---|---|---|---|
type | string | — | wireguard | openconnect | openvpn-client | openvpn-server | tailscale | 端点类型。决定对象其余部分解码到哪个选项结构体。 |
tag | string | — | — | 该端点的唯一名称。凡是可以使用出站 tag 的地方都能用它,入站方向也可被路由规则匹配。 |
源码: option/endpoint.go:18-22 · 锚定版本 v1.14.2 (af6e64c)
各类型字段见 WireGuard 与 Tailscale。OpenVPN 与 OpenConnect 见 OpenVPN 与 OpenConnect。
最简示例
json
{
"endpoints": [
{
"type": "wireguard",
"tag": "wg-ep",
"address": ["10.0.0.2/32"],
"private_key": "<base64-private-key>",
"peers": [
{
"address": "wg.example.com",
"port": 51820,
"public_key": "<base64-public-key>",
"allowed_ips": ["0.0.0.0/0"]
}
]
}
],
"route": { "final": "wg-ep" }
}说明
- WireGuard 是端点;不存在
wireguard出站。同一结构体覆盖隧道的两个方向。 wireguard需要带with_wireguard标签的构建,tailscale需要with_tailscale,openvpn-client/openvpn-server需要with_openvpn,openconnect需要with_openconnect(官方发布的二进制四者都包含)。openvpn-client/openvpn-server可与标准 OpenVPN 服务端和客户端互通,包括静态密钥模式以及旧式加密套件与摘要算法。配套的openvpnDNS 服务器类型使用 OpenVPN 服务端推送的 DNS 选项。openconnect仅为客户端,可连接 Cisco AnyConnect、GlobalProtect、Fortinet、F5、Pulse Connect Secure 与 Juniper Network Connect 服务器;openconnectDNS 服务器类型使用其推送的分流 DNS 解析器。交互式登录(如 SSO)通过图形客户端或 sing-box Dashboard 完成。- 来自 L3 入站(TUN、WireGuard、Tailscale)的 TCP、UDP 与 ICMP 连接可以在 pre-match 阶段直接以 L3 方式转发到 WireGuard 与 Tailscale 端点,无需 L3 到 L4 的转换。
- 路由规则可以像匹配入站 tag 一样匹配从端点流出的流量。
跨内核说明
- Xray-core 把 WireGuard 保留为普通的入站或出站协议(
protocol: "wireguard",IsClient由所在位置决定)。见 Xray WireGuard。 - mihomo 仅把 WireGuard 建模为代理(出站)。见 mihomo WireGuard。
源码: option/endpoint.go:18-22 · v1.14.2 (af6e64c)
