2024-10-01 19:44:32 +01:00
/ *
I ' m a D u n e f a n , s o l e t m e b e y o u r M a u d D i b a n d g u i d e y o u t h r o u g h t h e v 2 r a y c o n f i g f o r V 5 .
✦ ✦ ✦ U p d a t e d s L o g s ✦ ✦ ✦
所 有 的 配 置 基 于 v 2 f l y / v 2 r a y - c o r e v 5.19 . 0 , 且 给 出 的 配 置 与 案 例 经 过 实 操 验 证 可 行 , 除 了 s e r v i c e s 下 的 一 些 流 量 统 计 的 服 务 没 有 测 试 是 否 可 以 。
2024.9 . * *
d n s . s t a t i c H o s t s 配 置 写 法 案 例 ;
注 释 的 完 善 , D N S 写 法 的 完 善 ;
D N S e x p e c t I P s 确 实 已 经 不 支 持 ;
D N S 全 局 配 置 注 释 完 善 。
添 加 I n b o u n d s 和 O u t b o u n d s 的 模 板 , 被 注 释 状 态 ;
添 加 d o k o d e m o 相 关 入 站 配 置 , 可 用 性 尚 不 可 知 , 有 待 验 证 ;
添 加 一 个 出 站 配 置 案 例 , 完 善 一 个 出 站 的 所 有 配 置 参 数 和 注 释 ;
节 点 添 加 链 式 代 理 和 多 路 复 用 ;
节 点 添 加 更 多 的 参 数 , s t r e a m S e t t i n g s . s e c u r i t y S e t t i n g s { n e x t P r o t o c o l , d i s a b l e S y s t e m R o o t } ;
节 点 添 加 更 多 的 参 数 , M u x , M u x 功 能 是 在 一 条 T C P 连 接 上 分 发 多 个 T C P 连 接 的 数 据 。 实 现 细 节 详 见 M u x . C o o l 。 M u x 是 为 了 减 少 T C P 的 握 手 延 迟 而 设 计 , 而 非 提 高 连 接 的 吞 吐 量 。 使 用 M u x 看 视 频 、 下 载 或 者 测 速 通 常 都 有 反 效 果 。 M u x 只 需 要 在 客 户 端 启 用 , 服 务 器 端 自 动 适 配 ;
添 加 d n s - o u t 出 站 ;
添 加 l o o p b a c k 出 站 配 置 , 不 知 干 嘛 的 ;
添 加 被 注 释 的 常 规 b a l a n c e r 对 应 的 路 由 模 块 ;
添 加 被 注 释 的 订 阅 管 理 器 对 应 的 路 由 模 块 ;
添 加 透 明 代 理 时 D N S 路 由 和 出 站 的 相 关 配 置 ;
出 站 配 置 中 p r o x y S e t t i n g s 测 试 无 效 , 再 找 找 案 例 试 试 ;
b a l a n c i n g R u l e 测 试 成 功 。
添 加 常 规 的 b a l a n c i n g R u l e 配 置 , 以 及 订 阅 管 理 器 对 应 的 b a l a n c i n g R u l e 模 块 , 目 前 只 剩 订 阅 管 理 器 测 试 没 成 功 ;
添 加 订 阅 管 理 , 配 置 了 对 应 的 路 由 等 等 ;
V 2 R a y 内 置 了 一 些 服 务 来 补 充 V 2 R a y 的 主 要 功 能 , 添 加 了 对 应 的 服 务 配 置 。
d n s - o u t 配 置 的 完 善 ;
d o k o d e m o - d o o r 配 置 的 完 善 ;
b a l a n c e r 功 能 在 x r a y 和 v 2 r a y V 4 版 本 中 正 常 , 但 是 v 2 r a y V 5 版 本 中 会 奔 溃 ;
b a l a n c i n g R u l e 功 能 如 果 没 有 生 效 的 话 , 至 少 会 选 择 默 认 的 出 站 方 式 ;
完 善 v 2 r a y W e b S o c k e t m a x E a r l y D a t a 的 配 置 , 用 于 减 少 连 接 建 立 的 时 间 ;
添 加 c o m m a n d e r 入 站 , 对 应 的 路 由 , 以 及 s e r v i c e s . c o m m a n d e r 模 块 , 功 能 暂 且 不 明 ;
完 善 s e r v i c e s 中 的 服 务 配 置 , 目 前 还 有 s e r v i c e s . p o l i c y . l e v e l . t i m e o u t 语 法 有 问 题 ;
T u n 模 式 配 置 的 修 复 以 及 测 试 运 行 成 功 , s n i f f i n g S e t t i n g s 一 个 常 规 错 误 , d e s t i n a t i o n O v e r r i d e 一 个 语 法 错 误 。 无 法 正 确 解 析 T u n s n i f f i n g c o n f i g 中 的 d e s t O v e r r i d e 。 根 本 原 因 是 s e r v i c e s 部 分 的 配 置 使 用 了 r a w j s o n , 没 有 经 过 类 似 I n b o u n d C o n f i g 中 的 检 查 和 转 换 , 因 此 d e s t O v e r r i d e 字 段 实 际 应 为 d e s t i n a t i o n O v e r r i d e , 这 与 文 档 记 载 不 符 ;
对 应 一 个 负 载 均 衡 器 的 标 识 。 b a l a n c e r T a g 和 t a g 须 二 选 一 。 当 同 时 指 定 时 , b a l a n c e r T a g 生 效 ;
完 善 s e r v i c e s 里 各 个 项 目 的 注 释 。
对 于 每 一 个 连 接 , 路 由 将 根 据 这 些 规 则 从 上 到 下 依 次 进 行 判 断 , 当 遇 到 第 一 个 生 效 规 则 时 , 即 将 这 个 连 接 转 发 至 它 所 指 定 的 o u t b o u n d T a g 或 b a l a n c e r T a g 。 当 没 有 匹 配 到 任 何 规 则 时 , 流 量 默 认 由 第 一 个 o u t b o u n d 发 出 ;
完 成 所 有 配 置 的 搭 配 和 组 合 ;
拼 图 的 最 后 一 块 , 代 理 链 的 设 置 。 代 理 链 设 置 后 , 只 有 能 访 问 , 就 是 成 功 了 ;
V 2 R a y 提 供 了 代 理 转 发 功 能 , 利 用 它 可 以 实 现 中 转 ( 在 没 有 中 转 服 务 器 操 作 权 限 的 情 况 下 ) ;
使 用 代 理 转 发 可 以 实 现 由 一 个 S h a d o w s o c k s 服 务 器 或 者 V 2 R a y ( V M e s s ) 服 务 器 来 中 转 你 的 网 络 流 量 , 并 且 中 转 服 务 器 只 能 看 到 你 加 密 的 数 据 而 不 知 道 原 始 的 数 据 是 什 么 ;
性 能 : 链 式 代 理 使 用 了 多 个 节 点 , 可 能 会 造 成 延 时 、 带 宽 等 网 络 性 能 问 题 , 并 且 客 户 端 对 每 一 个 加 解 密 的 次 数 取 决 于 代 理 链 的 长 度 , 理 论 上 也 会 有 一 定 的 影 响 ;
安 全 : 代 理 转 发 会 一 定 程 度 上 提 高 安 全 性 , 但 安 全 取 决 于 最 弱 一 环 , 并 不 意 味 着 代 理 链 越 长 就 会 越 安 全 。 如 果 你 需 要 匿 名 , 请 考 虑 成 熟 的 匿 名 方 案 。 另 外 , 使 用 了 代 理 转 发 s t r e a m S e t t i n g s 会 失 效 , 即 只 能 是 非 T L S 、 无 H T T P 伪 装 的 T C P 传 输 协 议 ;
实 测 得 到 的 数 据 为 : 开 启 前 置 代 理 后 , p r o x y 如 果 转 发 给 v m e s s + w s , v m e s s + w s 接 受 的 数 据 完 全 加 密 , 并 不 知 道 访 问 的 数 据 是 什 么 , 只 能 看 到 需 要 转 发 给 p r o x y 的 地 址 和 端 口 , 落 地 I P 还 是 p r o x y 的 地 址 ;
数 据 的 加 密 和 转 发 的 流 程 应 该 是 : 浏 览 器 - > 客 户 端 p r o x y 协 议 加 密 - > 客 户 端 v m e s s + w s 协 议 加 密 - > 服 务 端 v m e s s + w s 协 议 解 密 - > 服 务 端 p r o x y 协 议 解 密 - > 目 标 服 务 器 ;
修 复 b a c k g r o u n d O b s e r v a t o r y 和 b u r s t O b s e r v a t o r y 配 置 项 , 加 强 了 对 这 两 个 参 数 的 理 解 和 应 用 。
* /
2024-09-14 22:33:01 +01:00
// emmm~ 本配置只是作为 v2ray jsonv5 写法的参考, 尝试尽量把各个功能配置写法展现出来, 如果日常使用, 请先自行精简。( DNS 、路由)
2024-09-15 12:57:32 +01:00
// 修复了上一个版本的问题, 完善一些功能: DNS 地址、IP 语法导致匹配问题, freedom 协议的功能完善,流量嗅探等等
2024-09-14 22:33:01 +01:00
// 启动命令
// v2ray run -c configv5-example.json -format=jsonv5
2024-09-15 12:57:32 +01:00
//
//
// 官方案例中使用的自签 tls 证书方法
// openssl req -x509 -newkey ec -pkeyopt ec_paramgen_curve:secp384r1 -days 3650 -nodes -keyout doubleclick.net.key -out doubleclick.net.pem -subj "/CN=doubleclick.net" -addext "subjectAltName=DNS:doubleclick.net"
//
// "pinned_peer_certificate_chain_sha256" 参数需要生成的 certChainHash
//
// ./v2ray tls certChainHash --cert doubleclick.net.pem
// vdUnuqSt/i/fEtTlPxY8trQVsPfliIj0d/+gqOCL1Jg=
//
// openssl x509 -noout -fingerprint -sha256 -in doubleclick.net.pem
// sha256 Fingerprint=BD:D5:27:BA:A4:AD:FE:2F:DF:12:D4:E5:3F:16:3C:B6:B4:15:B0:F7:E5:88:88:F4:77:FF:A0:A8:E0:8B:D4:98
//
//
2024-09-14 22:33:01 +01:00
{
"log" : {
"access" : {
"type" : "Console" ,
"level" : "Info"
} ,
"error" : {
"type" : "Console" ,
"level" : "Info"
}
/ *
// 日常使用
"access" : {
"type" : "Console" ,
"level" : "Info"
} ,
"error" : {
"type" : "Console" ,
"level" : "Info"
}
//
//
// 测试使用
"access" : {
"type" : "File" ,
"level" : "Debug" ,
"path" : "logaccess.log"
} ,
"error" : {
"type" : "File" ,
"level" : "Debug" ,
"path" : "logerror.log"
}
//
//
// type: "None" | "Console" | "File"
// "None":日志将被丢弃。
// "Console":日志将被输出到标准输出。
// "File":日志将被输出到一个文件。
//
//
// path: string
// 日志的文件路径,其值是一个合法的文件路径, 例如 "/tmp/v2ray/_error.log" (Linux) 或 "C:\\Temp\\v2ray\\_error.log" (Windows)。
//
//
// level: "Debug" | "Info" | "Warning" | "Error" | "None"
// 日志等级,默认值为 "Warning"。
// "Debug":详细的调试性信息。同时包含所有 "Info" 内容
// "Info": V2Ray 在运行时的状态,不影响正常使用。同时包含所有 "Warning" 内容。
// "Warning": V2Ray 可能遇到了一些问题,通常是外部问题,不影响 V2Ray 的正常运行,但有可能影响用户的体验。同时包含所有 "Error" 内容。
// "Error": V2Ray 遇到了无法正常运行的问题,需要立即解决。
// "None":不记录任何内容。
"access" : {
"type" : "File" ,
"level" : "Error" ,
"path" : "/var/log/v2ray/logaccess.log"
} ,
"error" : {
"type" : "File" ,
"level" : "Info" ,
"path" : "/var/log/v2ray/logerror.log"
}
* /
} ,
"dns" : {
"staticHosts" : [
2024-10-01 19:44:32 +01:00
//
//
// 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。
//
//
2024-09-14 22:33:01 +01:00
{
"type" : "Full" ,
"domain" : "services.gfe.nvidia.com" ,
"ip" : [
"127.0.0.1"
]
} ,
{
"type" : "Full" ,
"domain" : "dns.google" ,
"ip" : [
"8.8.8.8" ,
"8.8.4.4"
]
} ,
{
"type" : "Full" ,
"domain" : "cloudflare.com" ,
"ip" : [
"1.1.1.1" ,
"1.0.0.1"
]
} ,
{
"type" : "Full" ,
"domain" : "cloudflare.com" ,
"proxiedDomain" : "api.v2fly.org"
}
] ,
2024-09-15 12:57:32 +01:00
//
//
// V5 的 DNS 请求逻辑和 V4 的匹配完全类似。先按照命中 prioritizedDomain 依次请求,如果请求失败,则根据命中 prioritizedDomain 的顺序下一个继续请求,直到成功。如果都返回为空,则进入 fallback 请求。
// DNS 地址的写法,写错会导致程序使用到时奔溃。
// "223.5.5.5"
// "tcp://223.5.5.5:53"
// "tcp+local://223.5.5.5:53"
// "https://1.1.1.1/dns-query"
// "https+local://223.5.5.5/dns-query"
// "https+local://a.b.c.d:8443/my-dns-query"
// "quic+local://dns.adguard.com"
2024-10-01 19:44:32 +01:00
// localhost: 使用本机预设的 DNS 配置
// FakeDNS: 使用 V2Ray 内建的 FakeDNS 服务器。
2024-09-15 12:57:32 +01:00
//
//
2024-09-14 22:33:01 +01:00
"nameServer" : [
{
"address" : {
"address" : "8.8.8.8"
}
} ,
{
"address" : {
"address" : "1.1.1.1"
}
} ,
{
"address" : {
"address" : "tcp+local://8.8.8.8:53"
}
} ,
{
"address" : {
"address" : "https://dns.google/dns-query"
}
} ,
{
"address" : {
"address" : "localhost"
} ,
"prioritizedDomain" : [
{
"type" : "Subdomain" ,
"domain" : ".cn"
} ,
{
"type" : "Subdomain" ,
"domain" : "weibo.cn"
} ,
{
"type" : "Keyword" ,
"domain" : "baidu"
} ,
{
"type" : "Keyword" ,
"domain" : "sohu"
} ,
{
"type" : "Keyword" ,
"domain" : "citic"
} ,
{
"type" : "Keyword" ,
"domain" : "xn--"
} ,
{
"type" : "Keyword" ,
"domain" : "unicom"
} ,
{
"type" : "Regex" ,
"domain" : "^[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.(com\\.cn|net\\.cn|org\\.cn|edu\\.cn|gov\\.cn|cn)$"
}
]
} ,
{
"address" : {
2024-09-15 12:57:32 +01:00
"address" : "tcp+local://223.5.5.5:53"
2024-09-14 22:33:01 +01:00
} ,
"prioritizedDomain" : [
{
"type" : "Subdomain" ,
"domain" : ".cn"
} ,
{
"type" : "Subdomain" ,
"domain" : "weibo.cn"
} ,
{
"type" : "Keyword" ,
"domain" : "baidu"
} ,
{
"type" : "Keyword" ,
"domain" : "sohu"
} ,
{
"type" : "Keyword" ,
"domain" : "citic"
} ,
{
"type" : "Keyword" ,
"domain" : "xn--"
} ,
{
"type" : "Keyword" ,
"domain" : "unicom"
} ,
{
"type" : "Regex" ,
"domain" : "^[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.(com\\.cn|net\\.cn|org\\.cn|edu\\.cn|gov\\.cn|cn)$"
}
]
} ,
{
"address" : {
2024-09-15 12:57:32 +01:00
"address" : "119.29.29.29" ,
2024-09-14 22:33:01 +01:00
"port" : 53
} ,
"skipFallback" : false ,
"prioritizedDomain" : [
{
"type" : "Subdomain" ,
"domain" : ".cn"
} ,
{
"type" : "Subdomain" ,
"domain" : "weibo.cn"
} ,
{
"type" : "Keyword" ,
"domain" : "baidu"
} ,
{
"type" : "Keyword" ,
"domain" : "sohu"
} ,
{
"type" : "Keyword" ,
"domain" : "citic"
} ,
{
"type" : "Keyword" ,
"domain" : "xn--"
} ,
{
"type" : "Keyword" ,
"domain" : "unicom"
} ,
{
"type" : "Regex" ,
"domain" : "^[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.(com\\.cn|net\\.cn|org\\.cn|edu\\.cn|gov\\.cn|cn)$"
}
]
/ *
"expectIPs" : [ { "code" : "cn" } ]
* /
} ,
{
"address" : {
// "network": "udp",
"address" : "1.1.1.1" ,
"port" : 53
} ,
"clientIp" : "1.1.1.1" ,
"skipFallback" : false ,
"prioritizedDomain" : [
{
"type" : "Subdomain" ,
"domain" : "youtube.com"
} ,
{
"type" : "Keyword" ,
"domain" : "google"
}
]
/ *
"expectIPs" : [
{
"countryCode" : "cn" ,
"cidr" : [
{
"ipAddr" : "119.29.0.0" ,
"prefix" : 16
}
] ,
"inverseMatch" : true
} ,
{
"filePath" : "geoip.dat" ,
"code" : "private"
}
]
* /
} ,
{
"address" : {
"address" : "119.29.29.29"
}
} ,
{
"address" : {
"address" : "https://1.1.1.1/dns-query"
// "port": 53
} ,
"clientIp" : "1.1.1.1" ,
"skipFallback" : true ,
// prioritizedDomain
// type: "Full" | "Subdomain" | "Keyword" | "Regex"
//
//
// domain: string
// 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。
//
//
"prioritizedDomain" : [
{
"type" : "Subdomain" ,
"domain" : "youotube.com"
} ,
{
"type" : "Keyword" ,
"domain" : "gooogle"
}
] ,
/ *
"ExpectIPs" : [
{
"cidr" : [
{
"ipAddr" : "119.29.0.0" ,
"prefix" : 16
}
] ,
"inverseMatch" : true
} ,
{
"filePath" : "geoip.dat" ,
"code" : "private"
}
] ,
* /
"fakeDns" : {
"pools" : [
{
"ipPool" : "198.18.0.0/15" ,
"lruSize" : 65535
} ,
{
"ipPool" : "fc00::/18" ,
"lruSize" : 65535
}
]
} ,
"tag" : "CloudFlareDNS" ,
"queryStrategy" : "USE_IP4" ,
"cacheStrategy" : "CacheEnabled" ,
"fallbackStrategy" : "Enabled"
}
] ,
"fakeDns" : {
"pools" : [
{
"ipPool" : "198.18.0.0/15" ,
"lruSize" : 65535
} ,
{
"ipPool" : "fc00::/18" ,
"lruSize" : 65535
}
]
} ,
// "clientIp": "1.2.3.4", // 此功能需要 DNS 服务器支持 EDNS Client Subnet, 用于 DNS 查询时通知 DNS 服务器,客户端所在的地理位置(不能是私有 IP 地址)。不建议全局通知 "1.2.3.4",会导致返回为空。
"domainMatcher" : "mph" ,
2024-10-01 19:44:32 +01:00
"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+ 弃用)
2024-09-14 22:33:01 +01:00
"tag" : "dns"
} ,
"inbounds" : [
2024-10-01 19:44:32 +01:00
/ *
I n b o u n d s 入 站 模 板
{
"listen" : "" ,
"port" : "" ,
"protocol" : "vmess" ,
"settings" : { } ,
"sniffing" : { } ,
"streamSettings" : { } ,
"tag" : ""
}
* /
2024-09-14 22:33:01 +01:00
{
"tag" : "socks" ,
"protocol" : "socks" ,
"settings" : {
"udpEnabled" : true ,
"address" : "127.0.0.1" ,
2024-10-01 19:44:32 +01:00
"packetEncoding" : "Packet" // Packet 模式适合于实时性要求高的应用:如 VoIP、在线游戏等。需要保证连接稳定的应用: 如远程桌面、文件传输等。需要穿透 NAT 的应用:如 P2P 应用。None 模式适合于:对连接稳定性要求不高的应用。需要灵活配置路由路径的应用。
2024-09-14 22:33:01 +01:00
} ,
"port" : 7830 ,
2024-09-15 12:57:32 +01:00
"listen" : "127.0.0.1" ,
"sniffing" : {
"enabled" : true ,
"destOverride" : [
"http" ,
"tls"
] ,
"metadataOnly" : true
}
2024-09-14 22:33:01 +01:00
} ,
{
"tag" : "http" ,
"protocol" : "http" ,
"settings" : { } ,
"port" : 7831 ,
2024-09-15 12:57:32 +01:00
"listen" : "127.0.0.1" ,
"sniffing" : {
"enabled" : true ,
"destOverride" : [
"http" ,
"tls"
] ,
"metadataOnly" : true
}
2024-10-01 19:44:32 +01:00
} ,
{
"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"
2024-09-14 22:33:01 +01:00
}
] ,
"outbounds" : [
2024-10-01 19:44:32 +01:00
/ *
{
"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。
}
}
* /
/ *
O u t b o u n d s 出 站 模 板
{
"protocol" : "vmess" ,
"proxySettings" : { } ,
"sendThrough" : "1.2.3.4" ,
"settings" : { } ,
"streamSettings" : { } ,
"mux" : {
"concurrency" : 8 ,
"enabled" : false
} ,
"tag" : "demo"
}
* /
2024-09-14 22:33:01 +01:00
{
"tag" : "proxy" , // 运行在 xray 的 vmess + ws +tls ,需要通过 v2ray 固定不安全的证书。 ./v2ray tls certChainHash --cert 证书.crt
"protocol" : "vmess" ,
"settings" : {
"address" : "0.0.0.0" ,
"port" : 100000 ,
"uuid" : "0000000-0000000-0000000-0000000-0000000"
} ,
"streamSettings" : {
"transport" : "ws" ,
"transportSettings" : {
"path" : "/0000000000000000000000000000"
} ,
"security" : "tls" ,
"securitySettings" : {
"serverName" : "0000000.com" ,
"allow_insecure_if_pinned_peer_certificate" : true ,
"pinned_peer_certificate_chain_sha256" : [
"00000000000000"
]
}
}
} ,
2024-10-01 19:44:32 +01:00
// 一个链式代理案例,注意:落地 IP 还是 proxy 的,容易造成理解错误,代理链设置后,只要能访问,就是成功了。
{
"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 使用固定的开头方便筛选。
2024-09-14 22:33:01 +01:00
{
2024-10-01 19:44:32 +01:00
"tag" : "UDA_hysteria2" , // h2_h2
2024-09-14 22:33:01 +01:00
"protocol" : "hysteria2" ,
"settings" : {
"server" : [
{
"address" : "0.0.0.0" ,
"port" : 100000
}
]
} ,
"streamSettings" : {
"security" : "tls" ,
"securitySettings" : {
"allow_insecure_if_pinned_peer_certificate" : true ,
"pinned_peer_certificate_chain_sha256" : [
"000000000000000000000"
] ,
"server_name" : "00000000000000.com"
} ,
"transport" : "hysteria2" ,
"transportSettings" : {
"congestion" : {
"type" : "bbr"
} ,
"password" : "000000000000000000000" ,
"use_udp_extension" : true
}
}
} ,
{
2024-10-01 19:44:32 +01:00
"tag" : "UDA_vmess+ws" ,
2024-09-14 22:33:01 +01:00
"protocol" : "vmess" ,
"settings" : {
"address" : "0.0.0.0" ,
"port" : 100000 ,
"uuid" : "0000000-0000000-0000000-0000000-0000000"
} ,
"streamSettings" : {
"transport" : "ws" ,
"transportSettings" : {
"path" : "/000000000000000000000"
}
}
} ,
{
2024-10-01 19:44:32 +01:00
"tag" : "UDA_vmess+ws+tls" ,
2024-09-14 22:33:01 +01:00
"protocol" : "vmess" ,
"settings" : {
"address" : "0.0.0.0" ,
"port" : 100000 ,
"uuid" : "0000000-0000000-0000000-0000000-0000000"
} ,
"streamSettings" : {
"security" : "tls" ,
"securitySettings" : {
"allow_insecure_if_pinned_peer_certificate" : true ,
"pinned_peer_certificate_chain_sha256" : [
"000000000000000000000000000000000000000000"
] ,
"server_name" : "000000000000000000000.com"
} ,
"transport" : "ws" ,
"transportSettings" : {
"path" : "/000000000000000000000000000000000000000000"
}
}
} ,
{
2024-10-01 19:44:32 +01:00
"tag" : "UDA_vmess+tls+hy2" ,
2024-09-14 22:33:01 +01:00
"protocol" : "vmess" ,
"settings" : {
"address" : "0.0.0.0" ,
"port" : 100000 ,
"uuid" : "0000000-0000000-0000000-0000000-0000000"
} ,
"streamSettings" : {
"security" : "tls" ,
"securitySettings" : {
"server_name" : "0000000000000.com" ,
"allow_insecure_if_pinned_peer_certificate" : true ,
"pinned_peer_certificate_chain_sha256" : [
"000000000000000000000000000000000000000000"
]
} ,
"transport" : "hysteria2" ,
"transportSettings" : {
"congestion" : {
"type" : "bbr"
} ,
"password" : "000000000000000000000000000000000000000000" ,
"use_udp_extension" : true
}
}
} ,
{
2024-10-01 19:44:32 +01:00
"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" ,
2024-09-14 22:33:01 +01:00
"protocol" : "shadowsocks" ,
"settings" : {
"address" : "0.0.0.0" ,
"method" : "aes-256-gcm" ,
"port" : "100000" ,
"password" : "000000000000000000000000000000000000000000"
}
} ,
{
"tag" : "direct" ,
"protocol" : "freedom" ,
2024-09-15 12:57:32 +01:00
"settings" : { } ,
"mux" : {
"domainStrategy" : "UseIp" , // [ "AsIs" | "UseIP" | "UseIP4" | "UseIP6" ]
"enabled" : false ,
"concurrency" : 8
}
2024-09-14 22:33:01 +01:00
} ,
2024-10-01 19:44:32 +01:00
{
"tag" : "dns-out" ,
"protocol" : "dns" ,
"settings" : { } ,
"proxySettings" : {
"tag" : "proxy"
}
} ,
2024-09-14 22:33:01 +01:00
{
"tag" : "block" ,
"protocol" : "blackhole"
2024-10-01 19:44:32 +01:00
} ,
{
"tag" : "loopback-out" ,
"protocol" : "loopback" ,
"settings" : {
"inboundTag" : "loopback-in"
}
2024-09-14 22:33:01 +01:00
}
] ,
//
//
// GeoIP
// cidr
//
// code: string
// filePath: string
//
// inverseMatch : true | false (上面两个的通用参数)
//
// CIDRObject
// ipAddr: string
// prefix: number
//
// GeoDomain
// domain : DomainObject
// code: string
// filePath: string
//
// DomainObject
// type : "Plain" | "Regex" | "RootDomain" | "Full"
// Plain: 纯字符串匹配模式, 当匹配目标域名中任意部分时, 该规则生效。比如 sina.com 可以匹配 sina.com、sina.com.cn、sina.company 和 www.sina.com, 但不匹配 sina.cn。
// Regex: 正则表达式匹配模式, 当正则表达式匹配目标域名时, 该规则生效。例如 \.goo.*\.com$ 匹配 www.google.com、fonts.googleapis.com, 但不匹配 google.com。
// RootDomain: 根域名匹配模式, 当域名是目标域名或其子域名时, 该规则生效。例如 v2ray.com 匹配 www.v2ray.com、v2ray.com, 但不匹配 xv2ray.com。
// Full: 完整匹配模式, 当域名完整匹配目标域名时, 该规则生效。例如 v2ray.com 匹配 v2ray.com 但不匹配 www.v2ray.com。
//
//
2024-10-01 19:44:32 +01:00
/ *
// 常规 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"
]
} ,
* /
2024-09-14 22:33:01 +01:00
"router" : {
"domainStrategy" : "IpIfNonMatch" , // AsIs | UseIp | IpIfNonMatch | IpOnDemand
"rule" : [
2024-10-01 19:44:32 +01:00
{
"tag" : "dns-out" , // 防火墙重定向类型透明代理时的 dns 劫持
"domainMatcher" : "mph" ,
"portList" : "53" ,
"networks" : "udp"
} ,
2024-09-14 22:33:01 +01:00
{
"tag" : "block" , // 网络流量类型 bittorrent 直连
"domainMatcher" : "mph" , // protocol
"protocol" : [
"bittorrent"
]
} ,
{
"tag" : "block" , // 全匹配去广告 + 关键词匹配去广告
"domainMatcher" : "mph" , // domain
"domain" : [
{
"type" : "Full" ,
"value" : "discovery.razerapi.com"
} ,
{
"type" : "Full" ,
"value" : "services.gfe.nvidia.com"
} ,
{
"type" : "Plain" ,
"value" : "googleads"
} ,
{
"type" : "Plain" ,
"value" : "wlmonitor"
}
]
} ,
{
"tag" : "block" , // geosite数据库匹配去广告
"domainMatcher" : "mph" , // domain
"geoDomain" : [
{
"code" : "category-httpdns" ,
"filePath" : "geosite.dat"
} ,
{
"code" : "category-ads-all" ,
"filePath" : "geosite.dat"
}
]
} ,
// 下面这个为融合写法,日常可以选择上面分开的,或者下面这个融合的。贴一下仓库佬友 shanoaice 去年的总结, 不知道是否还准确, 自行判断。https://github.com/v2fly/v2ray-core/issues/2518
// domain 与 geoDomain 有分开的配置项,而 ip-cidr 和 geoip 没有分开来的配置项
// domain 尽管可以单独写,但 geoDomain 的 GeoDomain 配置中也可以写 Domain 匹配
// geoip 有 inverseMatch 选项,但 geoDomain 没有
// domainMatcher 选项被放在了每一条规则单独的 RuleObject 里,而不是放在顶层的 service.router 中(像 v4 配置文件一样),单独对每一条规则配置 domainMatcher 意义不大,至少需要提供一个在顶层中提供默认值的方法,可以允许在每条 RuleObject 里单独 override
{
"tag" : "block" , // geosite数据库匹配 + domain 类型的全匹配和关键词匹配混合写法去广告
"domainMatcher" : "mph" , // domain
"geoDomain" : [
{
"code" : "category-httpdns" ,
"filePath" : "geosite.dat"
} ,
{
"code" : "category-ads-all" ,
"filePath" : "geosite.dat"
} ,
{
"domain" : [
{
"type" : "Full" ,
"value" : "discovery.razerapi.com"
} ,
{
"type" : "Full" ,
"value" : "services.gfe.nvidia.com"
} ,
{
"type" : "Plain" ,
"value" : "googleads"
} ,
{
"type" : "Plain" ,
"value" : "wlmonitor"
}
]
}
]
} ,
{
"tag" : "proxy" , // 根域名匹配模式代理 + 关键词匹配代理
2024-10-01 19:44:32 +01:00
// 对应一个负载均衡器的标识。balancerTag 和 outboundTag 须二选一。当同时指定时, outboundTag 生效。
"balancingTag" : "balancerout" ,
2024-09-14 22:33:01 +01:00
"domainMatcher" : "mph" , // domain
"domain" : [
{
"type" : "RootDomain" ,
"value" : "linux.do"
} ,
{
"type" : "RootDomain" ,
"value" : "v2ex.com"
} ,
{
"type" : "Plain" ,
"value" : "youtube"
} ,
{
"type" : "Plain" ,
"value" : "google"
}
]
} ,
{
"tag" : "proxy" , // geosite数据库匹配代理
"domainMatcher" : "mph" , // domain
"geoDomain" : [
{
"code" : "google" ,
"filePath" : "geosite.dat"
} ,
{
"code" : "tld-!cn" ,
"filePath" : "geosite.dat"
}
]
} ,
{
"tag" : "proxy" , // cidr 匹配, cidr 需要在 geoip 下面才行。prefix 为 CIDR 地址计算IP地址范围, 一般指定某个 IP, 32即可。
"domainMatcher" : "mph" , // geoip
"geoip" : [
{
"code" : "google"
} ,
{
"cidr" : [
{
2024-09-15 12:57:32 +01:00
"ipAddr" : "8.8.4.4" , // "prefix" 需要填写,否则导致 IP 匹配出问题。
2024-09-14 22:33:01 +01:00
"prefix" : 32
} ,
{
"ipAddr" : "8.8.8.8" ,
"prefix" : 32
} ,
{
2024-09-15 12:57:32 +01:00
"ipAddr" : "1.1.1.1" ,
"prefix" : 32
2024-09-14 22:33:01 +01:00
}
]
}
]
} ,
{
"tag" : "proxy" , // geoip数据库匹配代理 + geoip数据库匹配反转代理
"domainMatcher" : "mph" , // geoip
"geoip" : [
{
"code" : "google" ,
"filePath" : "geoip.dat"
} ,
{
"code" : "telegram" ,
"filePath" : "geoip.dat"
} ,
{
"inverseMatch" : true ,
"code" : "cn" ,
"filePath" : "geoip.dat"
}
]
} ,
{
"tag" : "direct" , // 根域名匹配模式直连 + 关键词匹配直连
"domainMatcher" : "mph" , // domain
"domain" : [
{
"type" : "RootDomain" ,
"value" : "bilibili.com"
} ,
{
"type" : "RootDomain" ,
"value" : "ixigua.com"
} ,
{
"type" : "Plain" ,
"value" : "moutai"
} ,
{
"type" : "Plain" ,
"value" : "tracker"
}
]
} ,
{
"tag" : "direct" , // geosite数据库匹配直连
"domainMatcher" : "mph" , // geoDomain
"geoDomain" : [
{
"code" : "cn" ,
"filePath" : "geosite.dat"
} ,
{
"code" : "tld-cn" ,
"filePath" : "geosite.dat"
}
]
} ,
{
"tag" : "direct" , // cidr 匹配, cidr 需要在 geoip 下面才行。prefix 为 CIDR 地址计算IP地址范围, 一般指定某个 IP, 32即可。
"domainMatcher" : "mph" , // geoip
"geoip" : [
{
"code" : "private"
} ,
{
"cidr" : [
{
2024-09-15 12:57:32 +01:00
"ipAddr" : "223.5.5.5" ,
2024-09-14 22:33:01 +01:00
"prefix" : 32
} ,
{
"ipAddr" : "119.29.29.29" ,
"prefix" : 32
} ,
{
2024-09-15 12:57:32 +01:00
"ipAddr" : "114.114.114.114" ,
"prefix" : 32
2024-09-14 22:33:01 +01:00
}
]
}
]
} ,
{
"tag" : "direct" , // geoip数据库匹配直连
"domainMatcher" : "mph" , // geoip
"geoip" : [
{
"code" : "private" ,
"filePath" : "geoip.dat"
} ,
{
"code" : "cn" ,
"filePath" : "geoip.dat"
}
]
}
/ *
{
"tag" : "proxy" ,
"portList" : "53,443,1000-2000" // portList
} ,
{
"tag" : "proxy" ,
"networks" : "tcp,udp" // networks
} ,
{
"tag" : "direct" ,
"domainMatcher" : "mph" , // sourceGeoip
"sourceGeoip" : [
{
"code" : "cn" ,
"filePath" : "geoip.dat"
}
]
} ,
{
"tag" : "proxy" ,
"sourcePortList" : "53,443,1000-2000" // sourcePortList
} ,
{
"tag" : "direct" ,
"domainMatcher" : "mph" , // protocol
"protocol" : [
"bittorrent"
]
}
* /
] ,
2024-10-01 19:44:32 +01:00
"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"
}
]
2024-09-14 22:33:01 +01:00
} ,
2024-10-01 19:44:32 +01:00
"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" 才会被接受。
/ *
T h e d e f a u l t t i m e t o f e t c h s u b s c r i p t i o n d o c u m e n t a g a i n . T h i s t i m e i s n o t s t r i c t l y h o n o r e d .
S u b s c r i p t i o n M a n a g e r w i l l
1 . C h e c k I m p o r t S o u r c e s f r o m t i m e t o t i m e t o d o w n l o a d s u b s c r i p t i o n d o c u m e n t s
2 . P a r s e s u b s c r i p t i o n d o c u m e n t s w i t h S u b s c r i p t i o n C o n t a i n e r p a r s i n g c o m p o n e n t s . T h e s u b s c r i p t i o n d o c u m e n t s w i l l t h e n b e c o n v e r t e d i n t o i n d i v i d u a l s e r v e r d e f i n i t i o n s .
3 . T r y t o p a r s e t h e s e r v e r d e f i n i t i o n s a s s t a n d a r d i z e d o u t b o u n d f o r m a t o n e b y o n e , i f f a i l s , t r y t o c o n v e r t t h e d o c u m e n t i n t o o u t b o u n d f o r m a t w i t h S u b s c r i p t i o n C o n v e r t e r .
4 . C o m p a r e t h e s u c c e s s f u l l y c o n v e r t e d s e r v e r d e f i n i t i o n s e t w i t h t h e s e r v e r s a l r e a d y i n s t a n c e d a s o u t b o u n d s , a n d a p p l y t h e d i f f e r e n c e . O n l y t h e m o d i f i e d s e r v e r w i l l h a v e t h e i r O u t b o u n d H a n d l e r s r e c r e a t e d .
* /
"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
}
}
* /
}
2024-09-14 22:33:01 +01:00
}