From e6df59f62af1ddead20fc0afa668b3a9810c64da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=A1=E3=81=8B?= <88967758+chika0801@users.noreply.github.com> Date: Fri, 29 Dec 2023 23:54:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E7=85=A7=20v1.8.6=20=E7=89=88?= =?UTF-8?q?=E6=9C=AC=EF=BC=8C=E4=BF=AE=E8=AE=A2=E4=BA=86=E4=B8=80=E4=BA=9B?= =?UTF-8?q?=E5=86=85=E5=AE=B9=20(#442)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 修订 wireguard.md * 修订 freedom.md * 修订 transport.md * 修订 dns.md * 修订 h2.md --- docs/config/dns.md | 35 +++++++---- docs/config/outbounds/freedom.md | 95 ++++++++++++++++-------------- docs/config/outbounds/wireguard.md | 23 ++++---- docs/config/transport.md | 13 +++- docs/config/transports/h2.md | 4 ++ 5 files changed, 102 insertions(+), 68 deletions(-) diff --git a/docs/config/dns.md b/docs/config/dns.md index 7a3ccde57..cee6a087a 100644 --- a/docs/config/dns.md +++ b/docs/config/dns.md @@ -57,7 +57,7 @@ Xray 内置的 DNS 模块,主要有两大用途: "clientIP": "1.2.3.4" }, { - "address": "https://1.1.1.1/dns-query", + "address": "https://8.8.8.8/dns-query", "domains": [ "geosite:netflix" ], @@ -146,21 +146,21 @@ Xray 内置的 DNS 模块,主要有两大用途: > `queryStrategy`: "UseIP" | "UseIPv4" | "UseIPv6" -`UseIPv4` 只查询 A 记录;`UseIPv6` 只查询 AAAA 记录。默认值为 `UseIP`,即查询 A 和 AAAA 记录。 +默认值 `UseIP` 同时查询 A 和 AAAA 记录。`UseIPv4` 只查询 A 记录;`UseIPv6` 只查询 AAAA 记录。 Xray-core v1.8.6 新增功能:`queryStrategy` 可以在每一项 `DNS` 服务器中分别设置。 -```jsonc +```json "dns": { "servers": [ "https://1.1.1.1/dns-query", { - "address": "https://1.1.1.1/dns-query", + "address": "https://8.8.8.8/dns-query", "domains": [ "geosite:netflix" ], "skipFallback": true, - "queryStrategy": "UseIPv4" // geosite:netflix 的域名使用 "UseIPv4" + "queryStrategy": "UseIPv4" // netflix 的域名查询 A 记录 }, { "address": "https://1.1.1.1/dns-query", @@ -168,17 +168,28 @@ Xray-core v1.8.6 新增功能:`queryStrategy` 可以在每一项 `DNS` 服务 "geosite:openai" ], "skipFallback": true, - "queryStrategy": "UseIPv6" // geosite:openai 的域名使用 "UseIPv6" + "queryStrategy": "UseIPv6" // openai 的域名查询 AAAA 记录 } ], - "queryStrategy": "UseIP" // 全局使用 "UseIP" + "queryStrategy": "UseIP" // 全局同时查询 A 和 AAAA 记录 } ``` -**注意:**
-当子项中的 `"queryStrategy"` 值与全局 `"queryStrategy"` 值冲突时,子项的查询将空响应。 +::: tip TIP 1 +全局 `"queryStrategy"` 值优先,当子项中的 `"queryStrategy"` 值与全局 `"queryStrategy"` 值冲突时,子项的查询将空响应。 +::: -```jsonc +::: tip TIP 2 +当子项中不写 `"queryStrategy"` 参数时,使用全局 `"queryStrategy"` 参数值。与 Xray-core v1.8.6 以前版本行为相同。 +::: + +例如:
+全局 `"queryStrategy": "UseIPv6"` 与 子项 `"queryStrategy": "UseIPv4"` 冲突。
+全局 `"queryStrategy": "UseIPv4"` 与 子项 `"queryStrategy": "UseIPv6"` 冲突。
+全局 `"queryStrategy": "UseIP"` 与 子项 `"queryStrategy": "UseIPv6"` 不冲突。
+全局 `"queryStrategy": "UseIP"` 与 子项 `"queryStrategy": "UseIPv4"` 不冲突。 + +```json "dns": { "servers": [ "https://1.1.1.1/dns-query", @@ -188,14 +199,14 @@ Xray-core v1.8.6 新增功能:`queryStrategy` 可以在每一项 `DNS` 服务 "geosite:netflix" ], "skipFallback": true, - "queryStrategy": "UseIPv6" // "UseIPv6" 与 "UseIPv4" 冲突 + "queryStrategy": "UseIPv6" // 全局 "UseIPv4" 与 子项 "UseIPv6" 冲突 } ], "queryStrategy": "UseIPv4" } ``` -子项 geosite:netflix 的查询由于 `"queryStrategy"` 值冲突,得到空响应。geosite:netflix 的域名由全局 DNS `https://1.1.1.1/dns-query` 查询,得到 A 记录。 +子项 netflix 的域名查询由于 `"queryStrategy"` 值冲突,得到空响应。netflix 的域名由 `https://1.1.1.1/dns-query` 查询,得到 A 记录。 > `disableCache`: true | false diff --git a/docs/config/outbounds/freedom.md b/docs/config/outbounds/freedom.md index 543b9e541..d773c3f35 100644 --- a/docs/config/outbounds/freedom.md +++ b/docs/config/outbounds/freedom.md @@ -12,7 +12,7 @@ Freedom 是一个出站协议,可以用来向任意网络发送(正常的) "fragment": { "packets": "tlshello", "length": "100-200", - "interval": "10-20" // ms + "interval": "10-20" // 单位ms } } ``` @@ -27,57 +27,24 @@ Xray-core v1.8.6 新增功能:
若不写此参数,或留空,默认值 `"AsIs"`。 -在目标地址为域名时, 配置相应的值, Freedom 的行为模式如下: +当目标地址为域名时,配置相应的值,Freedom 的行为模式如下: -- `"AsIs"`: Freedom 通过系统 DNS 服务器解析获取 IP, 向此域名发出连接。 -- `"UseIP"`、`"UseIPv4"` 和 `"UseIPv6"`: Xray 使用 [内置 DNS 服务器](../dns.md) 解析获取 IP, 向此域名发出连接。 +- `"AsIs"`:Freedom 使用系统 DNS 同时查询 A 和 AAAA 记录获取 IP,向此域名发出连接。IPv4 或 IPv6 优先级由系统控制。 -::: tip TIP 1 -当使用 `"UseIP"` 模式,并且 [出站连接配置](../outbound.md#outboundobject) 中指定了 `sendThrough` 时,Freedom 会根据 `sendThrough` 的值自动判断所需的 IP 类型,IPv4 或 IPv6。 -::: - -::: tip TIP 2 -当使用 `"UseIPv4"` 或 `"UseIPv6"` 模式时,Freedom 会只使用对应的 IPv4 或 IPv6 地址。当 `sendThrough` 指定了不匹配的本地地址时,将导致连接失败。 -::: - -::: tip TIP 3 -`UseIP` 和 `ForceIP` 的区别是,前者解析失败了会走 AsIs,后者解析失败了会被 block。这样整个 `domainStrategy` 都更加灵活了。 -::: - -```jsonc - "dns": { - "servers": [ - "https://1.1.1.1/dns-query" - ], - "queryStrategy": "UseIP" // 默认值 UseIP - } -``` +| | AsIs | +| :--- | :---: | +| 系统有 IPv4 IPv6 | 通常 IPv6 优先 | +| 系统只有 IPv4 | IPv4 | +| 系统只有 IPv6 | IPv6 | -- UseIP 同时查询 A 和 AAAA 记录 -- UseIPv4 只查询 A 记录 -- UseIPv6 只查询 AAAA 记录 - -```jsonc - { - "protocol": "freedom", - "settings": { - "domainStrategy": "AsIs" // 默认值 AsIs - } - } -``` +- `"UseIP"`、`"UseIPv6v4"`、`"UseIPv6"`、`"UseIPv4v6"`、`"UseIPv4"`:使用 Xray-core [内置 DNS 服务器](../dns.md) 查询获取 IP,向此域名发出连接。IPv4 或 IPv6 优先级详见下方表格。 -| | UseIP | UseIPv6v4 | UseIPv6 | UseIPv4v6 | UseIPv4 | +| 系统有 IPv4 IPv6 | UseIP | UseIPv6v4 | UseIPv6 | UseIPv4v6 | UseIPv4 | | :--- | :---: | :---: | :---: | :---: | :---: | | `"queryStrategy": "UseIP"` | **1** | **2** | IPv6 | **3** | IPv4 | | `"queryStrategy": "UseIPv4"` | IPv4 | **4** | **5** | **6** | IPv4 | | `"queryStrategy": "UseIPv6"` | IPv6 | **7** | IPv6 | **8** | **9** | -| | ForceIP | ForceIPv6v4 | ForceIPv6 | ForceIPv4v6 | ForceIPv4 | -| :--- | :---: | :---: | :---: | :---: | :---: | -| `"queryStrategy": "UseIP"` | **1** | **2** | IPv6 | **3** | IPv4 | -| `"queryStrategy": "UseIPv4"` | IPv4 | IPv4 | 冲突 | IPv4 | IPv4 | -| `"queryStrategy": "UseIPv6"` | IPv6 | IPv6 | IPv6 | IPv6 | 冲突 | - **1:** IPv4 IPv6 地址,随机优先
**2:** IPv4 IPv6 地址,IPv6 优先
**3:** IPv4 IPv6 地址,IPv4 优先
@@ -88,6 +55,48 @@ Xray-core v1.8.6 新增功能:
**8:** IPv4 IPv6 地址,IPv4 优先,IPv4 地址由系统 DNS 查询
**9:** IPv4 地址,IPv4 地址由系统 DNS 查询 +- `"ForceIP"`、`"ForceIPv6v4"`、`"ForceIPv6"`、`"ForceIPv4v6"`、`"ForceIPv4"`:使用 Xray-core [内置 DNS 服务器](../dns.md) 查询获取 IP,向此域名发出连接。IPv4 或 IPv6 优先级详见下方表格。 + +| 系统有 IPv4 IPv6 | ForceIP | ForceIPv6v4 | ForceIPv6 | ForceIPv4v6 | ForceIPv4 | +| :--- | :---: | :---: | :---: | :---: | :---: | +| `"queryStrategy": "UseIP"` | **1** | **2** | IPv6 | **3** | IPv4 | +| `"queryStrategy": "UseIPv4"` | IPv4 | IPv4 | 冲突 | IPv4 | IPv4 | +| `"queryStrategy": "UseIPv6"` | IPv6 | IPv6 | IPv6 | IPv6 | 冲突 | + +**1:** IPv4 IPv6 地址,随机优先
+**2:** IPv4 IPv6 地址,IPv6 优先
+**3:** IPv4 IPv6 地址,IPv4 优先 + +- 当使用 `"UseIP"` 系列值 或 `"ForceIP"` 系列值时,若没写 `"dns"` 配置,使用系统 DNS 同时查询 A 和 AAAA 记录获取 IP,向此域名发出连接。IPv4 或 IPv6 优先级详见下方表格。 + +| | UseIP | UseIPv6v4 | UseIPv6 | UseIPv4v6 | UseIPv4 | +| :--- | :---: | :---: | :---: | :---: | :---: | +| 系统有 IPv4 IPv6 | **1** | **2** | IPv6 | **3** | IPv4 | +| 系统只有 IPv4 | IPv4 | 冲突 | 冲突 | IPv4 | IPv4 | +| 系统只有 IPv6 | IPv6 | IPv6 | IPv6 | 冲突 | 冲突 | + +| | ForceIP | ForceIPv6v4 | ForceIPv6 | ForceIPv4v6 | ForceIPv4 | +| :--- | :---: | :---: | :---: | :---: | :---: | +| 系统有 IPv4 IPv6 | **1** | **2** | IPv6 | **3** | IPv4 | +| 系统只有 IPv4 | IPv4 | 冲突 | 冲突 | IPv4 | IPv4 | +| 系统只有 IPv6 | IPv6 | IPv6 | IPv6 | 冲突 | 冲突 | + +**1:** IPv4 IPv6 地址,随机优先
+**2:** IPv4 IPv6 地址,IPv6 优先
+**3:** IPv4 IPv6 地址,IPv4 优先 + +::: tip TIP 1 +当使用 `"UseIP"`、`"ForceIP"` 模式时,并且 [出站连接配置](../outbound.md#outboundobject) 中指定了 `sendThrough` 时,Freedom 会根据 `sendThrough` 的值自动判断所需的 IP 类型,IPv4 或 IPv6。 +::: + +::: tip TIP 2 +当使用 `"UseIPv4"`、`"UseIPv6"` 或 `"ForceIPv4"`、`"ForceIPv6"` 模式时,Freedom 会只使用对应的 IPv4 或 IPv6 地址。当 `sendThrough` 指定了不匹配的本地地址时,将导致连接失败。 +::: + +::: tip TIP 3 +`"UseIPv4"`、`"UseIPv6"` 和 `"ForceIPv4"`、`"ForceIPv6"` 的区别是,前者解析失败了会走 AsIs,后者解析失败了会被 block。这样整个 `domainStrategy` 都更加灵活了。 +::: + > `redirect`: address_port Freedom 会强制将所有数据发送到指定地址(而不是 inbound 指定的地址)。 diff --git a/docs/config/outbounds/wireguard.md b/docs/config/outbounds/wireguard.md index f096e2f87..9b1b03fbc 100644 --- a/docs/config/outbounds/wireguard.md +++ b/docs/config/outbounds/wireguard.md @@ -66,7 +66,7 @@ Wireguard 服务器列表,其中每一项是一个服务器配置。 Xray-core v1.8.6 新增参数。
若不写此参数,或留空,默认值 `"ForceIP"`。
-当目标地址为域名时,使用 Xray-core [内置 DNS 服务器](./dns.md)查询获取 IP(若没写 `"dns"` 配置,使用系统 DNS),将此 IP 通过 wireguard 发出连接。
+当目标地址为域名时,使用 Xray-core [内置 DNS 服务器](../dns.md)查询获取 IP(若没写 `"dns"` 配置,使用系统 DNS),将此 IP 通过 wireguard 发出连接。
| domainStrategy | test-ipv6.com | bgp.he.net | chat.openai.com | | :--- | :---: | :---: | :---: | @@ -79,11 +79,11 @@ Xray-core v1.8.6 新增参数。
**1:** 提示`你已经有 IPv6 地址了,但你的浏览器不太愿意用,这一点比较令人担心。`
**2:** 有机率提示`你已经有 IPv6 地址了,但你的浏览器不太愿意用,这一点比较令人担心。` -**注意1**: -- 若与 `"queryStrategy"` 产生冲突,会造成网站不能打开。 -- 例如当 `domainStrategy: "ForceIPv4"` 时,geosite:openai 的网站使用了 `"queryStrategy": "UseIPv6"`,将打开失败。 +::: tip +若 `domainStrategy` 的值与 `"dns"` 配置中 `"queryStrategy"` 的值产生冲突,会造成网站打开失败。 +::: -```jsonc +```json "dns": { "servers": [ "https://1.1.1.1/dns-query", @@ -96,14 +96,17 @@ Xray-core v1.8.6 新增参数。
"queryStrategy": "UseIPv6" // 只查询 AAAA 记录 } ], - "queryStrategy": "UseIP" // 若不写此参数,默认值 UseIP,即同时查询 A 和 AAAA 记录,可选值 UseIPv4 和 UseIPv6,其它记录类型由系统 DNS 查询 + "queryStrategy": "UseIP" // 同时查询 A 和 AAAA 记录,若不写此参数,默认值 UseIP, }, ``` -**注意2**: -- Xray-core v1.8.0 - v1.8.4 没有 `"domainStrategy"`。 -- 当目标地址为域名时,使用 Xray-core 内置 DNS 服务器查询获取 IP,使用 `"dns"` 配置中的 `"queryStrategy"` 的值来控制 IPv4 或 IPv6 优先级。 -- 若没写 `"dns"` 配置,使用系统 DNS 查询获取 IP,IPv4 或 IPv6 优先级由系统控制。 +当 `domainStrategy: "ForceIPv4"` 时,控制 geosite:openai 域名查询的 DNS 字段使用了 `"queryStrategy": "UseIPv6"`,将会导致 geosite:openai 的网站打开失败。 + +::: tip +Xray-core v1.8.0 - v1.8.4 没有 `"domainStrategy"`。
+当目标地址为域名时,使用 Xray-core 内置 DNS 服务器查询获取 IP。使用 `"dns"` 配置中 `"queryStrategy"` 的值控制 IPv4 或 IPv6 优先级。
+若没写 `"dns"` 配置,使用系统 DNS 查询获取 IP,IPv4 或 IPv6 优先级由系统控制。 +::: ### Peers diff --git a/docs/config/transport.md b/docs/config/transport.md index 342993e47..40e31d84f 100644 --- a/docs/config/transport.md +++ b/docs/config/transport.md @@ -76,18 +76,25 @@ "grpcSettings": {}, "sockopt": { "mark": 0, + "tcpMaxSeg": 1440, "tcpFastOpen": false, "tproxy": "off", "domainStrategy": "AsIs", "dialerProxy": "", "acceptProxyProtocol": false, "tcpKeepAliveInterval": 0, - "V6Only": false + "tcpKeepAliveIdle": 300, + "tcpUserTimeout": 10000, + "tcpcongestion": "bbr", + "interface": "wg0", + "V6Only": false, + "tcpMptcp": false, + "tcpNoDelay": false } } ``` -> `network`: "tcp" | "kcp" | "ws" | "http" | "domainsocket" | "quic" | "grpc" +> `network`: "tcp" | "kcp" | "ws" | "http" | "h2" | "quic" | "grpc" | "domainsocket" 连接的数据流所使用的传输方式类型,默认值为 `"tcp"` @@ -676,4 +683,4 @@ Xray-core v1.8.6 新增参数。
> `tcpNoDelay`: true | false -默认值 `false`,建议与 "tcpMptcp": true 一起启用。 +默认值 `false`,建议与 `"tcpMptcp": true` 一起启用。 diff --git a/docs/config/transports/h2.md b/docs/config/transports/h2.md index 34e548f9f..fbccda602 100644 --- a/docs/config/transports/h2.md +++ b/docs/config/transports/h2.md @@ -43,6 +43,10 @@ HTTP/2 内置多路复用,不建议使用 HTTP/2 时启用 mux.cool。 客户端会随机从列表中选出一个域名进行通信,服务器会验证域名是否在列表中。 +::: tip +若不写 `"httpSettings"` 或 `"host": []` 值留空时,会使用默认值 `"www.example.com"`,需要两端 `"host"` 值一致才能连接成功。`"host": [""]` 不是值留空。 +::: + > `path`: string HTTP 路径,由 `/` 开头, 客户端和服务器必须一致。