Skip to content

Конечные точки ​

endpoints содержат протокольные стеки, которые являются входящими и исходящими одновременно: например, экземпляр WireGuard или Tailscale и принимает соединения, приходящие через туннель, и сам инициирует соединения в него. Форма записи — тот же плоский конверт, что у входящих и исходящих: type / tag плюс собственные поля выбранного типа на том же уровне.

Конверт ​

ПолеТипПо умолчаниюДопустимые значенияОписание
typestring—wireguard | openconnect | openvpn-client | openvpn-server | tailscaleТип конечной точки. Определяет, в какую структуру параметров декодируется остальная часть объекта.
tagstring——Уникальное имя этой конечной точки. Может использоваться везде, где ожидается тег исходящего, и сопоставляться правилами маршрутизации на входящей стороне.

Исходный код: 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, включая режим статического ключа и устаревшие шифры и дайджесты. Парный тип DNS-сервера openvpn использует DNS-параметры, которые передаёт сервер OpenVPN.
  • openconnect — только клиент; работает с серверами Cisco AnyConnect, GlobalProtect, Fortinet, F5, Pulse Connect Secure и Juniper Network Connect. Тип DNS-сервера openconnect использует переданные им резолверы split-DNS. Интерактивный вход (например, SSO) выполняется через графические клиенты или sing-box Dashboard.
  • TCP-, UDP- и ICMP-соединения из L3-входящих (TUN, WireGuard, Tailscale) можно на этапе pre-match пересылать в конечные точки WireGuard и Tailscale прямо на уровне L3, без трансляции L3 в L4.
  • Правила маршрутизации могут сопоставлять трафик, выходящий из конечной точки, так же, как они сопоставляют тег входящего.

Сравнение с другими ядрами ​

  • Xray-core оставляет WireGuard обычным протоколом входящего или исходящего (protocol: "wireguard", где IsClient определяется положением). См. WireGuard в Xray.
  • mihomo моделирует WireGuard только как прокси (исходящий). См. WireGuard в mihomo.

Исходный код: option/endpoint.go:18-22 · v1.14.2 (af6e64c)

Core Tutorial от Argsment