Skip to content

端点 ​

endpoints 承载同时是入站与出站的协议栈:例如一个 WireGuard 或 Tailscale 实例既接受经隧道到达的连接,也向隧道内发起连接。条目形状与入站、出站相同 — 扁平的 type / tag 信封加上所选类型自身的字段,处于同一层级。

信封 ​

字段类型默认值允许值描述
typestring—wireguard | openconnect | openvpn-client | openvpn-server | tailscale端点类型。决定对象其余部分解码到哪个选项结构体。
tagstring——该端点的唯一名称。凡是可以使用出站 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 服务端和客户端互通,包括静态密钥模式以及旧式加密套件与摘要算法。配套的 openvpn DNS 服务器类型使用 OpenVPN 服务端推送的 DNS 选项。
  • openconnect 仅为客户端,可连接 Cisco AnyConnect、GlobalProtect、Fortinet、F5、Pulse Connect Secure 与 Juniper Network Connect 服务器;openconnect DNS 服务器类型使用其推送的分流 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)

由 Argsment 出品的 Core Tutorial