mirror of
				https://github.com/v2fly/v2ray-examples.git
				synced 2025-11-04 11:55:38 +08:00 
			
		
		
		
	update community contributed v5 template
This commit is contained in:
		@@ -1,3 +1,57 @@
 | 
			
		||||
/*
 | 
			
		||||
I'm a Dune fan, so let me be your Maud Dib and guide you through the v2ray config for V5.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
✦✦✦ Updateds Logs ✦✦✦
 | 
			
		||||
所有的配置基于 v2fly/v2ray-core v5.19.0,且给出的配置与案例经过实操验证可行,除了 services 下的一些流量统计的服务没有测试是否可以。
 | 
			
		||||
 | 
			
		||||
2024.9.**
 | 
			
		||||
		   dns.staticHosts 配置写法案例;
 | 
			
		||||
		   注释的完善,DNS 写法的完善;
 | 
			
		||||
		   DNS expectIPs 确实已经不支持;
 | 
			
		||||
		   DNS 全局配置注释完善。
 | 
			
		||||
 | 
			
		||||
		   添加 Inbounds 和 Outbounds 的模板,被注释状态;
 | 
			
		||||
		   添加 dokodemo 相关入站配置,可用性尚不可知,有待验证;
 | 
			
		||||
		   添加一个出站配置案例,完善一个出站的所有配置参数和注释;
 | 
			
		||||
		   节点添加链式代理和多路复用;
 | 
			
		||||
		   节点添加更多的参数,streamSettings.securitySettings { nextProtocol,disableSystemRoot };
 | 
			
		||||
		   节点添加更多的参数,Mux,Mux 功能是在一条 TCP 连接上分发多个 TCP 连接的数据。实现细节详见 Mux.Cool。Mux 是为了减少 TCP 的握手延迟而设计,而非提高连接的吞吐量。使用 Mux 看视频、下载或者测速通常都有反效果。Mux 只需要在客户端启用,服务器端自动适配;
 | 
			
		||||
		   添加 dns-out 出站;
 | 
			
		||||
		   添加 loopback 出站配置,不知干嘛的;
 | 
			
		||||
		   添加被注释的常规 balancer 对应的路由模块;
 | 
			
		||||
		   添加被注释的订阅管理器对应的路由模块;
 | 
			
		||||
		   添加透明代理时 DNS 路由和出站的相关配置;
 | 
			
		||||
		   出站配置中 proxySettings 测试无效,再找找案例试试;
 | 
			
		||||
		   balancingRule 测试成功。
 | 
			
		||||
 | 
			
		||||
		   添加常规的 balancingRule 配置,以及订阅管理器对应的 balancingRule 模块,目前只剩订阅管理器测试没成功;
 | 
			
		||||
		   添加订阅管理,配置了对应的路由等等;
 | 
			
		||||
		   V2Ray 内置了一些服务来补充 V2Ray 的主要功能,添加了对应的服务配置。
 | 
			
		||||
 | 
			
		||||
		   dns-out 配置的完善;
 | 
			
		||||
		   dokodemo-door 配置的完善;
 | 
			
		||||
		   balancer 功能在 xray 和 v2ray V4 版本中正常,但是 v2ray V5 版本中会奔溃;
 | 
			
		||||
		   balancingRule 功能如果没有生效的话,至少会选择默认的出站方式;
 | 
			
		||||
		   完善 v2ray WebSocket maxEarlyData 的配置,用于减少连接建立的时间;
 | 
			
		||||
		   添加 commander 入站,对应的路由,以及 services.commander 模块,功能暂且不明;
 | 
			
		||||
		   完善 services 中的服务配置,目前还有 services.policy.level.timeout 语法有问题;
 | 
			
		||||
		   Tun 模式配置的修复以及测试运行成功,sniffingSettings 一个常规错误,destinationOverride 一个语法错误。无法正确解析Tun sniffing config中的destOverride。根本原因是services部分的配置使用了raw json,没有经过类似InboundConfig中的检查和转换,因此destOverride字段实际应为destinationOverride,这与文档记载不符;
 | 
			
		||||
		   对应一个负载均衡器的标识。balancerTag 和 tag 须二选一。当同时指定时,balancerTag 生效;
 | 
			
		||||
		   完善 services 里各个项目的注释。
 | 
			
		||||
 | 
			
		||||
		   对于每一个连接,路由将根据这些规则从上到下依次进行判断,当遇到第一个生效规则时,即将这个连接转发至它所指定的 outboundTag或 balancerTag。当没有匹配到任何规则时,流量默认由第一个 outbound 发出;
 | 
			
		||||
		   完成所有配置的搭配和组合;
 | 
			
		||||
		   拼图的最后一块,代理链的设置。代理链设置后,只有能访问,就是成功了;
 | 
			
		||||
		   V2Ray 提供了代理转发功能,利用它可以实现中转(在没有中转服务器操作权限的情况下);
 | 
			
		||||
		   使用代理转发可以实现由一个 Shadowsocks 服务器或者 V2Ray(VMess) 服务器来中转你的网络流量,并且中转服务器只能看到你加密的数据而不知道原始的数据是什么;
 | 
			
		||||
		   性能:链式代理使用了多个节点,可能会造成延时、带宽等网络性能问题,并且客户端对每一个加解密的次数取决于代理链的长度,理论上也会有一定的影响;
 | 
			
		||||
		   安全:代理转发会一定程度上提高安全性,但安全取决于最弱一环,并不意味着代理链越长就会越安全。如果你需要匿名,请考虑成熟的匿名方案。 另外,使用了代理转发 streamSettings 会失效,即只能是非 TLS、无 HTTP 伪装的 TCP 传输协议;
 | 
			
		||||
		   实测得到的数据为:开启前置代理后,proxy 如果转发给 vmess+ws,vmess+ws 接受的数据完全加密,并不知道访问的数据是什么,只能看到需要转发给 proxy 的地址和端口,落地 IP 还是 proxy 的地址;
 | 
			
		||||
		   数据的加密和转发的流程应该是:浏览器 -> 客户端 proxy 协议加密 -> 客户端 vmess+ws 协议加密 -> 服务端 vmess+ws 协议解密 -> 服务端 proxy 协议解密 -> 目标服务器;
 | 
			
		||||
		   修复 backgroundObservatory 和 burstObservatory 配置项,加强了对这两个参数的理解和应用。
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
// emmm~ 本配置只是作为 v2ray jsonv5 写法的参考,尝试尽量把各个功能配置写法展现出来,如果日常使用,请先自行精简。(DNS 、路由)
 | 
			
		||||
// 修复了上一个版本的问题,完善一些功能:DNS 地址、IP 语法导致匹配问题,freedom 协议的功能完善,流量嗅探等等
 | 
			
		||||
// 启动命令
 | 
			
		||||
@@ -82,6 +136,20 @@
 | 
			
		||||
  },
 | 
			
		||||
  "dns": {
 | 
			
		||||
    "staticHosts": [
 | 
			
		||||
      //
 | 
			
		||||
      //
 | 
			
		||||
      // type: "Full" | "Subdomain" | "Keyword" | "Regex"
 | 
			
		||||
      // domain: string,与 type 所对应的 domain 值。以下为 type 与domain 的对应关系:
 | 
			
		||||
      //   Full:当此域名完整匹配目标域名时,该规则生效。例如 v2ray.com 匹配 v2ray.com 但不匹配 www.v2ray.com。
 | 
			
		||||
      //   Regex:当 domain 所表示的正则表达式匹配目标域名时,该规则生效。例如 \.goo.*\.com$ 匹配 www.google.com、fonts.googleapis.com,但不匹配 google.com。
 | 
			
		||||
      //   Subdomain (推荐):当此域名是目标域名或其子域名时,该规则生效。例如 v2ray.com 匹配 www.v2ray.com、v2ray.com,但不匹配 xv2ray.com。
 | 
			
		||||
      //   Keyword:当此字符串匹配目标域名中任意部分,该规则生效。比如 sina.com 可以匹配 sina.com、sina.com.cn、www.sina.com 和 www.sina.company,但不匹配 sina.cn。
 | 
			
		||||
      // 与 domain 匹配后返回的是:
 | 
			
		||||
      //    ip,匹配的域名所映射的 IP 地址列表。
 | 
			
		||||
      //    proxiedDomain,如指定 proxiedDomain,匹配的域名将直接使用该域名的查询结果,类似于 CNAME。
 | 
			
		||||
      //    如果同时指定了 ip 和 proxiedDomain,将优先生效 proxiedDomain。
 | 
			
		||||
      //
 | 
			
		||||
      //
 | 
			
		||||
      {
 | 
			
		||||
        "type": "Full",
 | 
			
		||||
        "domain": "services.gfe.nvidia.com",
 | 
			
		||||
@@ -122,6 +190,8 @@
 | 
			
		||||
    // "https+local://223.5.5.5/dns-query"
 | 
			
		||||
    // "https+local://a.b.c.d:8443/my-dns-query"
 | 
			
		||||
    // "quic+local://dns.adguard.com"
 | 
			
		||||
    // localhost:使用本机预设的 DNS 配置
 | 
			
		||||
    // FakeDNS:使用 V2Ray 内建的 FakeDNS 服务器。
 | 
			
		||||
    //
 | 
			
		||||
    //
 | 
			
		||||
    "nameServer": [
 | 
			
		||||
@@ -386,22 +456,34 @@
 | 
			
		||||
    },
 | 
			
		||||
    //    "clientIp": "1.2.3.4",	// 此功能需要 DNS 服务器支持 EDNS Client Subnet,用于 DNS 查询时通知 DNS 服务器,客户端所在的地理位置(不能是私有 IP 地址)。不建议全局通知 "1.2.3.4",会导致返回为空。
 | 
			
		||||
    "domainMatcher": "mph",
 | 
			
		||||
    "queryStrategy": "USE_IP4",
 | 
			
		||||
    "cacheStrategy": "CacheEnabled",
 | 
			
		||||
    "disableCache": false,
 | 
			
		||||
    "fallbackStrategy": "Enabled",
 | 
			
		||||
    "disableFallback": false,
 | 
			
		||||
    //    "disableFallbackIfMatch": false,	// (v5.2.0+ 弃用)
 | 
			
		||||
    "queryStrategy": "USE_IP4", // "USE_IP" | "USE_IP4" | "USE_IP6"
 | 
			
		||||
    "cacheStrategy": "CacheEnabled", // "CacheEnabled" | "CacheDisabled"
 | 
			
		||||
    "disableCache": false, // bool,默认为 false
 | 
			
		||||
    "fallbackStrategy": "Enabled", // "Enabled" | "Disabled" | "DisabledIfAnyMatch",DNS 回退(fallback)查询策略。默认为 Enabled,即启用 DNS 回退(fallback)查询。Disabled 为禁用 DNS 回退(fallback)查询。DisabledIfAnyMatch 为在 DNS 服务器的优先匹配域名列表命中时禁用 DNS 回退(fallback)查询。
 | 
			
		||||
    "disableFallback": false, // bool,禁用 DNS 回退(fallback)查询。默认为 false,即为不禁用。详情见 DNS 处理流程。 (v5.2.0+ 弃用)
 | 
			
		||||
    // "disableFallbackIfMatch": false,	// bool,禁用在 DNS 服务器的优先匹配域名列表命中时执行 DNS 回退(fallback)查询。 (v5.2.0+ 弃用)
 | 
			
		||||
    "tag": "dns"
 | 
			
		||||
  },
 | 
			
		||||
  "inbounds": [
 | 
			
		||||
    /*
 | 
			
		||||
    Inbounds 入站模板
 | 
			
		||||
    {
 | 
			
		||||
      "listen": "",
 | 
			
		||||
      "port": "",
 | 
			
		||||
      "protocol": "vmess",
 | 
			
		||||
      "settings": {},
 | 
			
		||||
      "sniffing": {},
 | 
			
		||||
      "streamSettings": {},
 | 
			
		||||
      "tag": ""
 | 
			
		||||
    }
 | 
			
		||||
*/
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "socks",
 | 
			
		||||
      "protocol": "socks",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "udpEnabled": true,
 | 
			
		||||
        "address": "127.0.0.1",
 | 
			
		||||
        "packetEncoding": "Packet"
 | 
			
		||||
        "packetEncoding": "Packet" // Packet 模式适合于实时性要求高的应用:如 VoIP、在线游戏等。需要保证连接稳定的应用:如远程桌面、文件传输等。需要穿透 NAT 的应用:如 P2P 应用。None 模式适合于:对连接稳定性要求不高的应用。需要灵活配置路由路径的应用。
 | 
			
		||||
      },
 | 
			
		||||
      "port": 7830,
 | 
			
		||||
      "listen": "127.0.0.1",
 | 
			
		||||
@@ -428,9 +510,113 @@
 | 
			
		||||
        ],
 | 
			
		||||
        "metadataOnly": true
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "dokodemo-door",
 | 
			
		||||
      "protocol": "dokodemo-door",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "127.0.0.1",
 | 
			
		||||
        "port": 65535,
 | 
			
		||||
        "networks": [
 | 
			
		||||
          "tcp,udp"
 | 
			
		||||
        ],
 | 
			
		||||
        "followRedirect": false // 当值为 true 时,Dokodemo door 会识别出由 iptables 转发而来的数据,并转发到相应的目标地址。
 | 
			
		||||
      },
 | 
			
		||||
      "port": 19829,
 | 
			
		||||
      "listen": "127.0.0.1",
 | 
			
		||||
      "sniffing": {
 | 
			
		||||
        "enabled": true,
 | 
			
		||||
        "destOverride": [
 | 
			
		||||
          "http",
 | 
			
		||||
          "tls"
 | 
			
		||||
        ],
 | 
			
		||||
        "metadataOnly": true
 | 
			
		||||
      },
 | 
			
		||||
      "streamSettings": {
 | 
			
		||||
        "sockopt": {
 | 
			
		||||
          "tproxy": "tproxy"
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "commander",
 | 
			
		||||
      "protocol": "dokodemo-door",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "127.0.0.1",
 | 
			
		||||
        "port": 65535,
 | 
			
		||||
        "networks": [
 | 
			
		||||
          "tcp"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "port": 19629,
 | 
			
		||||
      "listen": "127.0.0.1"
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "outbounds": [
 | 
			
		||||
    /*
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "proxy",
 | 
			
		||||
      "protocol": "vmess",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "1.1.1.1",
 | 
			
		||||
        "port": 10000,
 | 
			
		||||
        "uuid": "adc27dd2-e7f9-41e8-a01d-2573e257564f"
 | 
			
		||||
      },
 | 
			
		||||
      "streamSettings": {
 | 
			
		||||
        "transport": "ws",	// 传输层协议名称,mKCP、TCP、WebSocket、gRPC、QUIC、meek、httpupgrade、Hysteria2
 | 
			
		||||
        "transportSettings": {	// 传输层协议设置
 | 
			
		||||
          "path": "/ws"
 | 
			
		||||
        },
 | 
			
		||||
        "security": "tls",	// 传输层安全协议,TLS,uTLS,none,xray 还有 reality。uTLS 仅在 TCP 和 WebSocket 中支持。
 | 
			
		||||
        "securitySettings": {	// 传输层安全协议设定
 | 
			
		||||
          "serverName": "你的域名.com",	// 指定服务器端证书的域名,在连接由 IP 建立时有用。当目标连接由域名指定时,比如在 Socks 入站时接收到了域名,或者由 Sniffing 功能探测出了域名,这个域名会自动用于 serverName,无须手动配置。
 | 
			
		||||
          "next_protocol": ["h2", "http/1.1"],	// h2 会出错,一个字符串数组,指定了 TLS 握手时指定的 ALPN 数值。默认值为 ["h2", "http/1.1"]。
 | 
			
		||||
          "disable_system_root": false,	// 是否禁用操作系统自带的 CA 证书。默认值为 false。当值为 true 时,V2Ray 只会使用 certificates 中指定的证书进行 TLS 握手。当值为 false 时,V2Ray 只会使用操作系统自带的 CA 证书进行 TLS 握手。
 | 
			
		||||
          "allow_insecure_if_pinned_peer_certificate": true,	// 此选项将在 pinnedPeerCertificateChainSha256 被设置时禁用 TLS 证书验证。如果 pinnedPeerCertificateChainSha256 没有被设置,本选项会被忽略。
 | 
			
		||||
          "pinned_peer_certificate_chain_sha256": [	// 使用 Base64 标准编码格式表示的远程服务器的证书链的SHA256散列值。在设置后,远程服务器的证书链的散列值必须为列表中的数值之一。此数值可以通过以下命令生成: ./v2ray tls certChainHash --cert <cert.pem> (v5.18.0+)
 | 
			
		||||
            "qwertyuiomnbgvc/x="
 | 
			
		||||
          ]
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      "proxySettings": {
 | 
			
		||||
        "tag": "链式代理节点的 tag",	// 当指定另一个出站连接的标识时,此出站连接发出的数据,将被转发至所指定的出站连接发出。
 | 
			
		||||
        "transportLayer": true	// 是否启用传输层转发支持。在启用后,此出站连接的传输层协议将保持生效(如果传输层协议支持)。如果不启用此选项, 在转发时传输层协议将失效,只能使用默认的 TCP 传输协议。
 | 
			
		||||
      },
 | 
			
		||||
      "sendThrough": "1.2.3.4",	// 用于发送数据的 IP 地址,当主机有多个 IP 地址时有效,默认值为 "0.0.0.0"。
 | 
			
		||||
      "mux": {
 | 
			
		||||
        "domainStrategy": "AsIs", // [ "AsIs" | "UseIP" | "UseIP4" | "UseIP6" ]
 | 
			
		||||
        "enabled": true,
 | 
			
		||||
        "concurrency": 8	// 最大并发连接数。最小值 1,最大值 1024,默认值 8。如果填负数,如 -1,则不加载 Mux 模块。此数值表示了一个 TCP 连接上最多承载的 Mux 连接数量。当客户端发出了 8 个 TCP 请求,而 concurrency=8 时,V2Ray 只会发出一条实际的连接,客户端的 8 个请求全部由这条连接传输。
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
      // 
 | 
			
		||||
      "streamSettings": {
 | 
			
		||||
        {
 | 
			
		||||
          "mark": 0,	// 一个整数。当其值非零时,在出站连接上标记 SO_MARK。仅适用于 Linux 系统。需要 CAP_NET_ADMIN 权限。
 | 
			
		||||
          "tcpFastOpen": false,	// 是否启用 TCP Fast Open。当其值为 true 时,强制开启 TFO;当其值为 false 时,强制关闭 TFO;当此项不存在时,使用系统默认设置。可用于入站出站连接。
 | 
			
		||||
          "tcpFastOpenQueueLength": 4096,	// number 入站连接的 TCP Fast Open 队列长度,默认值为 4096,仅在 Linux 中可用。
 | 
			
		||||
          "tproxy": "off",	// 是否开启透明代理(仅适用于 Linux)。"redirect":使用 Redirect 模式的透明代理。支持 TCP 和 UDP 连接。"tproxy":使用 TProxy 模式的透明代理。支持 TCP 和 UDP 连接。"off":关闭透明代理。透明代理需要 Root 或 CAP_NET_ADMIN 权限。当 Dokodemo-door 中指定了 followRedirect,且 sockopt.tproxy 为空时,sockopt.tproxy 的值会被设为 "redirect"。
 | 
			
		||||
          "tcpKeepAliveInterval": 0,	// TCP 保持活跃的数据包的发送间隔,以秒为单位(仅适用于 Linux)。0 代表保持默认值。
 | 
			
		||||
          "bindToDevice": "eth0",	// 将连接绑定到指定的网络设备(Linux: v5.0.6+, Windows/Darwin: v5.2.0+)。
 | 
			
		||||
          "mptcp": false	// 是否启用多路径TCP(仅适用于Linux)。true 打开 MPTCP 。如果另一端的主机不支持 MPTCP,MPTCP 将回退为普通 TCP。
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
*/
 | 
			
		||||
    /*
 | 
			
		||||
    Outbounds 出站模板
 | 
			
		||||
    {
 | 
			
		||||
      "protocol": "vmess",
 | 
			
		||||
      "proxySettings": {},
 | 
			
		||||
      "sendThrough": "1.2.3.4",
 | 
			
		||||
      "settings": {},
 | 
			
		||||
      "streamSettings": {},
 | 
			
		||||
      "mux": {
 | 
			
		||||
            "concurrency": 8,
 | 
			
		||||
            "enabled": false
 | 
			
		||||
      },
 | 
			
		||||
      "tag": "demo"
 | 
			
		||||
    }
 | 
			
		||||
*/
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "proxy", // 运行在 xray 的 vmess + ws +tls ,需要通过 v2ray 固定不安全的证书。 ./v2ray tls certChainHash --cert 证书.crt
 | 
			
		||||
      "protocol": "vmess",
 | 
			
		||||
@@ -454,8 +640,29 @@
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 一个链式代理案例,注意:落地 IP 还是 proxy 的,容易造成理解错误,代理链设置后,只要能访问,就是成功了。
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "hysteria2", // h2_h2
 | 
			
		||||
      "tag": "proxy_链式代理",
 | 
			
		||||
      "protocol": "vmess",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "1.1.1.1",
 | 
			
		||||
        "port": 10000,
 | 
			
		||||
        "uuid": "adc27dd2-e7f9-41e8-a01d-2573e257564f"
 | 
			
		||||
      },
 | 
			
		||||
      "streamSettings": {
 | 
			
		||||
        "transport": "ws",
 | 
			
		||||
        "transportSettings": {
 | 
			
		||||
          "path": "/ws"
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      "proxySettings": {
 | 
			
		||||
        "tag": "UDA_hysteria2",
 | 
			
		||||
        "transportLayer": true
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    // 负载均衡配置开始,这里提供两种方案,一个本地 outbounds 中的节点通过筛选进行负载均衡,另一个为订阅管理器筛选。同时如果多个节点,类似下面的案例的话,建议把节点 tag 使用固定的开头方便筛选。
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "UDA_hysteria2", // h2_h2
 | 
			
		||||
      "protocol": "hysteria2",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "server": [
 | 
			
		||||
@@ -485,7 +692,7 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "vmess+ws",
 | 
			
		||||
      "tag": "UDA_vmess+ws",
 | 
			
		||||
      "protocol": "vmess",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "0.0.0.0",
 | 
			
		||||
@@ -500,7 +707,7 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "vmess+ws+tls",
 | 
			
		||||
      "tag": "UDA_vmess+ws+tls",
 | 
			
		||||
      "protocol": "vmess",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "0.0.0.0",
 | 
			
		||||
@@ -523,7 +730,7 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "vmess+tls+hy2",
 | 
			
		||||
      "tag": "UDA_vmess+tls+hy2",
 | 
			
		||||
      "protocol": "vmess",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "0.0.0.0",
 | 
			
		||||
@@ -550,7 +757,47 @@
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "shadowsocks",
 | 
			
		||||
      "tag": "balancer_shadowsocks",
 | 
			
		||||
      "protocol": "shadowsocks",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "0.0.0.0",
 | 
			
		||||
        "method": "aes-256-gcm",
 | 
			
		||||
        "port": "100000",
 | 
			
		||||
        "password": "000000000000000000000000000000000000000000"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "balancer_shadowsocks",
 | 
			
		||||
      "protocol": "shadowsocks",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "0.0.0.0",
 | 
			
		||||
        "method": "aes-256-gcm",
 | 
			
		||||
        "port": "100000",
 | 
			
		||||
        "password": "000000000000000000000000000000000000000000"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "balancer_shadowsocks",
 | 
			
		||||
      "protocol": "shadowsocks",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "0.0.0.0",
 | 
			
		||||
        "method": "aes-256-gcm",
 | 
			
		||||
        "port": "100000",
 | 
			
		||||
        "password": "000000000000000000000000000000000000000000"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "balancer_shadowsocks",
 | 
			
		||||
      "protocol": "shadowsocks",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "0.0.0.0",
 | 
			
		||||
        "method": "aes-256-gcm",
 | 
			
		||||
        "port": "100000",
 | 
			
		||||
        "password": "000000000000000000000000000000000000000000"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "balancer_shadowsocks",
 | 
			
		||||
      "protocol": "shadowsocks",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "address": "0.0.0.0",
 | 
			
		||||
@@ -569,9 +816,24 @@
 | 
			
		||||
        "concurrency": 8
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "dns-out",
 | 
			
		||||
      "protocol": "dns",
 | 
			
		||||
      "settings": {},
 | 
			
		||||
      "proxySettings": {
 | 
			
		||||
        "tag": "proxy"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "block",
 | 
			
		||||
      "protocol": "blackhole"
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      "tag": "loopback-out",
 | 
			
		||||
      "protocol": "loopback",
 | 
			
		||||
      "settings": {
 | 
			
		||||
        "inboundTag": "loopback-in"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  //
 | 
			
		||||
@@ -601,9 +863,55 @@
 | 
			
		||||
  //    Full:完整匹配模式,当域名完整匹配目标域名时,该规则生效。例如 v2ray.com 匹配 v2ray.com 但不匹配 www.v2ray.com。
 | 
			
		||||
  //
 | 
			
		||||
  //
 | 
			
		||||
    /*
 | 
			
		||||
    //	常规 balancer 对应的路由模块
 | 
			
		||||
      {
 | 
			
		||||
        "balancingTag": "balancer",
 | 
			
		||||
        "networks": "tcp,udp"
 | 
			
		||||
      }
 | 
			
		||||
    //  订阅管理器对应的路由模块
 | 
			
		||||
      {
 | 
			
		||||
        "balancingTag": "subscriptions",
 | 
			
		||||
        "networks": "tcp,udp"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "tag": "commander",
 | 
			
		||||
        "inboundTag": [
 | 
			
		||||
          "commander"
 | 
			
		||||
        ]
 | 
			
		||||
      }
 | 
			
		||||
      */
 | 
			
		||||
    /*
 | 
			
		||||
      {
 | 
			
		||||
        // "tag": "proxy",
 | 
			
		||||
        "balancingTag": "subscriptions",
 | 
			
		||||
        "inboundTag": [
 | 
			
		||||
          "http"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        // "tag": "proxy",
 | 
			
		||||
        "balancingTag": "balancerout",
 | 
			
		||||
        "inboundTag": [
 | 
			
		||||
          "socks"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "tag": "commander",
 | 
			
		||||
        "inboundTag": [
 | 
			
		||||
          "commander"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
       */
 | 
			
		||||
  "router": {
 | 
			
		||||
    "domainStrategy": "IpIfNonMatch", // AsIs | UseIp | IpIfNonMatch | IpOnDemand
 | 
			
		||||
    "rule": [
 | 
			
		||||
      {
 | 
			
		||||
        "tag": "dns-out", // 防火墙重定向类型透明代理时的 dns 劫持
 | 
			
		||||
        "domainMatcher": "mph",
 | 
			
		||||
        "portList": "53",
 | 
			
		||||
        "networks": "udp"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "tag": "block", // 网络流量类型 bittorrent 直连
 | 
			
		||||
        "domainMatcher": "mph", // protocol
 | 
			
		||||
@@ -688,6 +996,8 @@
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "tag": "proxy", // 根域名匹配模式代理 + 关键词匹配代理
 | 
			
		||||
        // 对应一个负载均衡器的标识。balancerTag 和 outboundTag 须二选一。当同时指定时,outboundTag 生效。
 | 
			
		||||
        "balancingTag": "balancerout",
 | 
			
		||||
        "domainMatcher": "mph", // domain
 | 
			
		||||
        "domain": [
 | 
			
		||||
          {
 | 
			
		||||
@@ -873,7 +1183,178 @@
 | 
			
		||||
      }
 | 
			
		||||
      */
 | 
			
		||||
    ],
 | 
			
		||||
    "balancingRule": []
 | 
			
		||||
    "balancingRule": [
 | 
			
		||||
      // random 不需要添加 backgroundObservatory 或者 burstObservatory 配置项。
 | 
			
		||||
      // leastPing 根据连接观测结果选择延迟最小的匹配到的出站代理,需要添加 backgroundObservatory 配置项。
 | 
			
		||||
      // leastLoad 根据连接观测结果选择最稳定的出站代理,需要添加 burstObservatory 配置项。
 | 
			
		||||
      // 订阅管理器对应的 balancingRule 模块;
 | 
			
		||||
      {
 | 
			
		||||
        "tag": "ShellPersonal",
 | 
			
		||||
        "outbound_selector": [
 | 
			
		||||
          "shellpersonal_"
 | 
			
		||||
        ],
 | 
			
		||||
        "strategy": "random", // "random" | "leastping" | "leastload",进行负载均衡的策略类型,当没有匹配到任何规则时,流量默认由第一个 outbound 发出。random 默认值。随机选择匹配到的出站代理。roundRobin 按顺序选择匹配到的出站代理(V5 不支持这个参数)。leastPing 根据连接观测结果选择延迟最小的匹配到的出站代理。需要添加 observatory 配置项。leastLoad 根据连接观测结果选择最稳定的出站代理。需要添加 burstObservatory 配置项。
 | 
			
		||||
        "fallbackTag": "proxy" // 如果负载均衡器无法选出合适的 outbound,则使用这个配置项指定的 outbound。
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "tag": "PersonalShell",
 | 
			
		||||
        "outbound_selector": [
 | 
			
		||||
          "personalshell_"
 | 
			
		||||
        ],
 | 
			
		||||
        "strategy": "random",
 | 
			
		||||
        "fallbackTag": "proxy"
 | 
			
		||||
      },
 | 
			
		||||
      // 常规 balancingRule 模块;
 | 
			
		||||
      {
 | 
			
		||||
        "tag": "UDAOUT",
 | 
			
		||||
        "outbound_selector": [
 | 
			
		||||
          "UDA_"
 | 
			
		||||
        ],
 | 
			
		||||
        "strategy": "leastload"
 | 
			
		||||
      },
 | 
			
		||||
      {
 | 
			
		||||
        "tag": "balancerout",
 | 
			
		||||
        "outbound_selector": [
 | 
			
		||||
          "balancer_"
 | 
			
		||||
        ],
 | 
			
		||||
        "strategy": "leastping"
 | 
			
		||||
      }
 | 
			
		||||
    ]
 | 
			
		||||
  },
 | 
			
		||||
  "services": {}
 | 
			
		||||
  "services": {
 | 
			
		||||
    // ✦✦✦ 连接观测组件 ✦✦✦
 | 
			
		||||
    // 连接观测组件使用 HTTPing 的方式探测出站代理的连接状态。观测结果可以被其他组件使用,如负载均衡器。目前有 backgroundObservatory (后台连接观测)和 burstObservatory (并发连接观测)两种。按需选择其中之一就行。
 | 
			
		||||
    // 连接状态观测配置,负载均衡功能需要搭配该模块才行,V4 没有类似的配置搭配,leastping 和 leastload 这两个策略是需要配置连接观测来决定路由策略的。
 | 
			
		||||
    "backgroundObservatory": { // 后台连接观测服务,通过定时指定的出站连接建立连接来确定出站代理的状态。
 | 
			
		||||
      "subject_selector": [ // 用于 leastping,一个字符串数组,其中每一个字符串将用于和出站协议标识的前缀匹配。在以下几个出站协议标识中:[ "a", "ab", "c", "ba" ],"subjectSelector": ["a"] 将匹配到 [ "a", "ab" ]。
 | 
			
		||||
        "UDA_",
 | 
			
		||||
        "balancer_"
 | 
			
		||||
      ],
 | 
			
		||||
      "probe_interval": 5000000000, // "5s",发起探测的间隔。每经过这个时间,就会对一个服务器进行服务器状态检测。时间格式为数字+单位,比如"10s", "2h45m",支持的时间单位有 ns, us, ms, s, m, h, 分别对应纳秒、微秒、毫秒、秒、分、时。
 | 
			
		||||
      // 如果默写节点设置后无法负载均衡,可能在于那些节点无法 PING 通 probeUrl 的地址,采用了最终默认的出站策略。修改下面 probeUrl 的地址,或者直接删掉采用官方默认的参数即可。
 | 
			
		||||
      "probeUrl": "http://www.qualcomm.cn/generate_204" // 用于检测连接状态的网址。默认会使用内构的连接状态检测地址。✦✦✦ 此目标地址的服务器可以推断出您使用了本程序。如果您使用了第三方提供的服务器,该服务器的运营商可能基于此信息作出不利于您的决定,如展示更多验证码,拒绝服务或封禁您的帐号。✦✦✦
 | 
			
		||||
    },
 | 
			
		||||
    "burstObservatory": { // 并发连接观测服务,用于 leastLoad 根据连接观测结果选择最稳定的出站代理。
 | 
			
		||||
      "subjectSelector": [ // 用于 leastload,一个字符串数组,其中每一个字符串将用于和出站协议标识的前缀匹配。在以下几个出站协议标识中:[ "a", "ab", "c", "ba" ],"subjectSelector": ["a"] 将匹配到 [ "a", "ab" ]。
 | 
			
		||||
        "UDA_",
 | 
			
		||||
        "balancer_"
 | 
			
		||||
      ],
 | 
			
		||||
      "pingConfig": {
 | 
			
		||||
        "timeout": 5000000000, // "5000ms"	// Ping 超时时间, 时间格式为数字+单位,比如"10s", "2h45m"。。
 | 
			
		||||
        "interval": 60000000000, // "60s"	// 在指定时间内探测全部匹配的出站代理,每个出站代理探测 sampling + 1 次。时间格式为数字 + 单位,比如 "10s", "2h45m",支持的时间单位有 ns, us, ms, s, m, h, 分别对应纳秒、微秒、毫秒、秒、分、时。
 | 
			
		||||
        "connectivity": "http://www.msftncsi.com/ncsi.txt", // 连接检查 URL,用于检测本地网络连通性的网址,空字符串表示不检测本地网络连通性。
 | 
			
		||||
        "samplingCount": 20, // 保留的最近 Ping 结果的数量。
 | 
			
		||||
        "destination": "http://www.gstatic.com/generate_204" // 用于探测出站代理连接状态的网址。这个网址应该返回 HTTP 204 成功状态码。
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "subscription": {
 | 
			
		||||
      // 订阅管理器自动刷新出站信息并将它们转换为出站实例。 (v5.13.0+)
 | 
			
		||||
      // 订阅源的地址,目前有两种收到支持的发地址。
 | 
			
		||||
      //   HTTP(S) 地址 : 通过 HTTP(S) 即 「超文本传输协议」或 「超文本传输安全协议」下载订阅文档。
 | 
			
		||||
      //   DataURL : 链接本身即为订阅文档。文档类型需为 "application/vnd.v2ray.subscription-singular" 才会被接受。
 | 
			
		||||
      /*
 | 
			
		||||
    The default time to fetch subscription document again. This time is not strictly honored.
 | 
			
		||||
    Subscription Manager will
 | 
			
		||||
      1. Check ImportSources from time to time to download subscription documents
 | 
			
		||||
      2. Parse subscription documents with Subscription Container parsing components. The subscription documents will then be converted into individual server definitions.
 | 
			
		||||
      3. Try to parse the server definitions as standardized outbound format one by one, if fails, try to convert the document into outbound format with Subscription Converter.
 | 
			
		||||
      4. Compare the successfully converted server definition set with the servers already instanced as outbounds, and apply the difference. Only the modified server will have their Outbound Handlers recreated.
 | 
			
		||||
    */
 | 
			
		||||
      "imports": [
 | 
			
		||||
        {
 | 
			
		||||
          "name": "ShellPersonal", // 机场提供的订阅
 | 
			
		||||
          "url": "",
 | 
			
		||||
          "tag_prefix": "shellpersonal_subscription", // 创建的订阅的出站实例前缀。
 | 
			
		||||
          "importUsingTag": "proxy", // 指定下载订阅文档的出站代理标志。
 | 
			
		||||
          "default_expire_seconds": 3600 // 默认的订阅过期时间。
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          "name": "PersonalShell", // 自建的订阅
 | 
			
		||||
          "url": "",
 | 
			
		||||
          "tag_prefix": "personalshell_subscription",
 | 
			
		||||
          "importUsingTag": "proxy",
 | 
			
		||||
          "default_expire_seconds": 3600
 | 
			
		||||
        }
 | 
			
		||||
      ]
 | 
			
		||||
    },
 | 
			
		||||
    "stats": {},
 | 
			
		||||
    "policy": {
 | 
			
		||||
      "system": {
 | 
			
		||||
        "stats": {
 | 
			
		||||
          "inboundUplink": false,
 | 
			
		||||
          "inboundDownlink": false,
 | 
			
		||||
          "outboundUplink": false,
 | 
			
		||||
          "outboundDownlink": false
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      "level": {
 | 
			
		||||
        "0": {
 | 
			
		||||
          "timeout": {
 | 
			
		||||
            /*
 | 
			
		||||
            "handshake": 4,
 | 
			
		||||
            "connectionIdle": 300,
 | 
			
		||||
            "uplinkOnly": 2,
 | 
			
		||||
            "downlinkOnly": 5
 | 
			
		||||
          */
 | 
			
		||||
          },
 | 
			
		||||
          "stats": {
 | 
			
		||||
            "userUplink": false,
 | 
			
		||||
            "userDownlink": false
 | 
			
		||||
          },
 | 
			
		||||
          "buffer": {
 | 
			
		||||
            "connection": -1
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    // 浏览器转发模块
 | 
			
		||||
    // 对此 浏览器转发(browser dialer)应运而生。用户在自己的浏览器中打开一个页面至 localhost:8080,这个页面利用原生 JS 充当 Xray 的网络栈,与代理服务端建立 TLS,HTTP 连接。
 | 
			
		||||
    // https://xtls.github.io/config/features/browser_dialer.html
 | 
			
		||||
    "browser": {
 | 
			
		||||
      "listenAddr": "127.0.0.1",
 | 
			
		||||
      "listenPort": 4837
 | 
			
		||||
    },
 | 
			
		||||
    "commander": {
 | 
			
		||||
      "tag": "commander",
 | 
			
		||||
      "name": [
 | 
			
		||||
        "observatory"
 | 
			
		||||
      ]
 | 
			
		||||
    }
 | 
			
		||||
    /*
 | 
			
		||||
    // 虚拟网卡模式,仅 Linux amd64 and arm64 支持。
 | 
			
		||||
    // 目前仅支持 amd64 以及 arm64 架构下的 Linux 操作系统,Tun 是一个接受网络层数据包的服务,输入进入操作系统 tun 接口的数据包会被转换为一般数据流被传出代理处理。 (v5.9.0+)
 | 
			
		||||
    // 该功能已经实际测试运行成功。
 | 
			
		||||
    "tun": {
 | 
			
		||||
      "name": "tun0",
 | 
			
		||||
      "mtu": 1500,	// tun 网络适配器的最大传输单元。建议设置为 1500。
 | 
			
		||||
      "tag": "tun",	// 生成的流量的入站流量标签。
 | 
			
		||||
      "ips": [
 | 
			
		||||
        {
 | 
			
		||||
          "ip": [192, 18, 0, 1],
 | 
			
		||||
          "prefix": 24
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      "routes": [
 | 
			
		||||
        {
 | 
			
		||||
          "ip": [0, 0, 0, 0],
 | 
			
		||||
          "prefix": 0
 | 
			
		||||
        }
 | 
			
		||||
      ],
 | 
			
		||||
      "enablePromiscuousMode": true,	// 是否开启混杂模式。建议设置为 true。
 | 
			
		||||
      "enableSpoofing": true,	// 是否开启 IP 欺骗。建议设置为 true。
 | 
			
		||||
      "packetEncoding": "None",	// ["None" | "Packet"],UDP 包的编码方式,默认为 None。当此值为 None 时,UDP 连接将根据其目标地址(地址和端口映射)被分成流。当此值为 Packet 时,来自单个源连接的 UDP 连接将被编码为 UDP 数据包地址连接,并通过受支持的出站作为端点独立映射 UDP 连接恢复到其原始形式。这种 UDP 行为也被称为 FullCone 或 NAT1。
 | 
			
		||||
      "sniffingSettings": {	// tun 入站连接的流量探测设置。流量探测允许路由根据连接的内容和元数据转发连接。(v5.11.0+)
 | 
			
		||||
        "enabled": true,
 | 
			
		||||
        "destinationOverride": [
 | 
			
		||||
          "http",
 | 
			
		||||
          "tls",
 | 
			
		||||
          "quic",
 | 
			
		||||
          "fakedns",
 | 
			
		||||
          "fakedns+others"
 | 
			
		||||
        ],
 | 
			
		||||
        "metadataOnly": true
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
    */
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user