Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

对照 v1.8.6 版本,修订了一些内容 #442

Merged
merged 5 commits into from
Dec 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 23 additions & 12 deletions docs/config/dns.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
],
Expand Down Expand Up @@ -146,39 +146,50 @@ 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",
"domains": [
"geosite:openai"
],
"skipFallback": true,
"queryStrategy": "UseIPv6" // geosite:openai 的域名使用 "UseIPv6"
"queryStrategy": "UseIPv6" // openai 的域名查询 AAAA 记录
}
],
"queryStrategy": "UseIP" // 全局使用 "UseIP"
"queryStrategy": "UseIP" // 全局同时查询 A 和 AAAA 记录
}
```

**注意:**<br>
当子项中的 `"queryStrategy"` 值与全局 `"queryStrategy"` 值冲突时,子项的查询将空响应。
::: tip TIP 1
全局 `"queryStrategy"` 值优先,当子项中的 `"queryStrategy"` 值与全局 `"queryStrategy"` 值冲突时,子项的查询将空响应。
:::

```jsonc
::: tip TIP 2
当子项中不写 `"queryStrategy"` 参数时,使用全局 `"queryStrategy"` 参数值。与 Xray-core v1.8.6 以前版本行为相同。
:::

例如:<br>
全局 `"queryStrategy": "UseIPv6"` 与 子项 `"queryStrategy": "UseIPv4"` 冲突。<br>
全局 `"queryStrategy": "UseIPv4"` 与 子项 `"queryStrategy": "UseIPv6"` 冲突。<br>
全局 `"queryStrategy": "UseIP"` 与 子项 `"queryStrategy": "UseIPv6"` 不冲突。<br>
全局 `"queryStrategy": "UseIP"` 与 子项 `"queryStrategy": "UseIPv4"` 不冲突。

```json
"dns": {
"servers": [
"https://1.1.1.1/dns-query",
Expand All @@ -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

Expand Down
95 changes: 52 additions & 43 deletions docs/config/outbounds/freedom.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Freedom 是一个出站协议,可以用来向任意网络发送(正常的)
"fragment": {
"packets": "tlshello",
"length": "100-200",
"interval": "10-20" // ms
"interval": "10-20" // 单位ms
}
}
```
Expand All @@ -27,57 +27,24 @@ Xray-core v1.8.6 新增功能:<br>

若不写此参数,或留空,默认值 `"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 地址,随机优先<br>
**2:** IPv4 IPv6 地址,IPv6 优先<br>
**3:** IPv4 IPv6 地址,IPv4 优先<br>
Expand All @@ -88,6 +55,48 @@ Xray-core v1.8.6 新增功能:<br>
**8:** IPv4 IPv6 地址,IPv4 优先,IPv4 地址由系统 DNS 查询<br>
**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 地址,随机优先<br>
**2:** IPv4 IPv6 地址,IPv6 优先<br>
**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 地址,随机优先<br>
**2:** IPv4 IPv6 地址,IPv6 优先<br>
**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 指定的地址)。
Expand Down
23 changes: 13 additions & 10 deletions docs/config/outbounds/wireguard.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ Wireguard 服务器列表,其中每一项是一个服务器配置。

Xray-core v1.8.6 新增参数。<br>
若不写此参数,或留空,默认值 `"ForceIP"`。<br>
当目标地址为域名时,使用 Xray-core [内置 DNS 服务器](./dns.md)查询获取 IP(若没写 `"dns"` 配置,使用系统 DNS),将此 IP 通过 wireguard 发出连接。<br>
当目标地址为域名时,使用 Xray-core [内置 DNS 服务器](../dns.md)查询获取 IP(若没写 `"dns"` 配置,使用系统 DNS),将此 IP 通过 wireguard 发出连接。<br>

| domainStrategy | test-ipv6.com | bgp.he.net | chat.openai.com |
| :--- | :---: | :---: | :---: |
Expand All @@ -79,11 +79,11 @@ Xray-core v1.8.6 新增参数。<br>
**1:** 提示`你已经有 IPv6 地址了,但你的浏览器不太愿意用,这一点比较令人担心。`<br>
**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",
Expand All @@ -96,14 +96,17 @@ Xray-core v1.8.6 新增参数。<br>
"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"`。<br>
当目标地址为域名时,使用 Xray-core 内置 DNS 服务器查询获取 IP。使用 `"dns"` 配置中 `"queryStrategy"` 的值控制 IPv4 或 IPv6 优先级。<br>
若没写 `"dns"` 配置,使用系统 DNS 查询获取 IP,IPv4 或 IPv6 优先级由系统控制。
:::

### Peers

Expand Down
13 changes: 10 additions & 3 deletions docs/config/transport.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"`

Expand Down Expand Up @@ -676,4 +683,4 @@ Xray-core v1.8.6 新增参数。<br>

> `tcpNoDelay`: true | false

默认值 `false`,建议与 "tcpMptcp": true 一起启用。
默认值 `false`,建议与 `"tcpMptcp": true` 一起启用。
4 changes: 4 additions & 0 deletions docs/config/transports/h2.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ HTTP/2 内置多路复用,不建议使用 HTTP/2 时启用 mux.cool。

客户端会随机从列表中选出一个域名进行通信,服务器会验证域名是否在列表中。

::: tip
若不写 `"httpSettings"` 或 `"host": []` 值留空时,会使用默认值 `"www.example.com"`,需要两端 `"host"` 值一致才能连接成功。`"host": [""]` 不是值留空。
:::

> `path`: string

HTTP 路径,由 `/` 开头, 客户端和服务器必须一致。
Expand Down
Loading