Fix prettier format with version 3.6.2
parent
cd703958ae
commit
1c1cea5ae5
|
@ -67,18 +67,15 @@ footer: Licensed under CC-BY-SA 4.0 | Copyright 2020-Present Project X Community
|
|||
### Telegram
|
||||
|
||||
- [Project X 交流群](https://t.me/projectXray)
|
||||
|
||||
- 交流群可在底线之上随便水,不要撕逼,没有滥权。
|
||||
- 有问题尽管随便问,知道的尽量回答。
|
||||
- 禁政治,禁 NSFW
|
||||
|
||||
- [Project VLESS Group](https://t.me/projectVless)
|
||||
|
||||
- 对非中文参与的官方用户群。 [Project X](https://t.me/projectXray) 的姊妹群。
|
||||
- 禁广告,禁人身攻击,禁政治。
|
||||
|
||||
- [Project X 频道](https://t.me/projectXtls)
|
||||
|
||||
- 发布 Project X 的最新资讯
|
||||
|
||||
### 致谢
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
Xray 内置的 DNS 模块,主要有两大用途:
|
||||
|
||||
- 在路由阶段, 解析域名为 IP, 并且根据域名解析得到的 IP 进行规则匹配以分流. 是否解析域名及分流和路由配置模块中 `domainStrategy` 的值有关, 只有在设置以下两种值时,才会使用内置 DNS 服务器进行 DNS 查询:
|
||||
|
||||
- "IPIfNonMatch", 请求一个域名时,进行路由里面的 domain 进行匹配,若无法匹配到结果,则对这个域名使用内置 DNS 服务器进行 DNS 查询,并且使用查询返回的 IP 地址再重新进行 IP 路由匹配。
|
||||
- "IPOnDemand", 当匹配时碰到任何基于 IP 的规则,将域名立即解析为 IP 进行匹配。
|
||||
|
||||
|
|
|
@ -7,18 +7,15 @@
|
|||
反向代理的大致工作原理如下:
|
||||
|
||||
- 假设在主机 A 中有一个网页服务器,这台主机没有公网 IP,无法在公网上直接访问。另有一台主机 B,它可以由公网访问。现在我们需要把 B 作为入口,把流量从 B 转发到 A。
|
||||
|
||||
- 在主机 B 中配置 Xray,接收外部请求,所以称为 `portal` (门户)。
|
||||
- 在主机 A 中配置 Xray,负责将B的转发和网页服务器桥接起来,称为`bridge`。
|
||||
|
||||
- `bridge`
|
||||
|
||||
- `bridge` 会向 `portal` 主动建立连接以注册反向通道,此连接的目标地址(domain)可以自行设定。
|
||||
- `bridge` 在收到`portal`转发过来的公网流量之后,会将其原封不动地发给主机 A 中的网页服务器。当然,这一步需要路由模块的配置。
|
||||
- `bridge` 收到响应后,也会将响应原封不动地返回给`portal`。
|
||||
|
||||
- `portal`
|
||||
|
||||
- `portal` 收到请求且domain匹配,则说明是由 `bridge` 发来的响应数据,这条连接会用于建立反向通道。
|
||||
- `portal` 收到请求,domain不匹配,则说明是公网用户发来的连接,这种连接数据会转发给bridge.
|
||||
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
目前已有的统计信息如下:
|
||||
|
||||
- 用户数据
|
||||
|
||||
- `user>>>[email]>>>traffic>>>uplink`
|
||||
|
||||
特定用户的上行流量,单位字节。
|
||||
|
@ -37,7 +36,6 @@
|
|||
:::
|
||||
|
||||
- 全局数据
|
||||
|
||||
- `inbound>>>[tag]>>>traffic>>>uplink`
|
||||
|
||||
特定 inbound 的上行流量,单位字节。
|
||||
|
|
|
@ -601,7 +601,6 @@ OCSP 装订更新,与证书热重载的时间间隔。 单位:秒。默认
|
|||
当其值为 `true` 或`正整数`时,启用 TFO;当其值为 `false` 或`负数`时,强制关闭 TFO;当此项不存在或为 `0` 时,使用系统默认设置。 可用于 inbound/outbound。
|
||||
|
||||
- 仅在以下版本(或更新版本)的操作系统中可用:
|
||||
|
||||
- Linux 3.16:需要通过内核参数 `net.ipv4.tcp_fastopen` 进行设定,此参数是一个 bitmap,`0x1` 代表客户端允许启用,`0x2` 代表服务器允许启用;默认值为 `0x1`,如果服务器要启用
|
||||
TFO,请把此内核参数值设为 `0x3`。
|
||||
- ~~Windows 10 (1607)~~(实现不正确)
|
||||
|
@ -610,7 +609,6 @@ OCSP 装订更新,与证书热重载的时间间隔。 单位:秒。默认
|
|||
以及 `net.inet.tcp.fastopen.client_enabled` 设为 `1`。(需要测试)
|
||||
|
||||
- 对于 Inbound,此处所设定的`正整数`代表 [待处理的 TFO 连接请求数上限](https://tools.ietf.org/html/rfc7413#section-5.1) ,**注意并非所有操作系统都支持在此设定**:
|
||||
|
||||
- Linux / FreeBSD:此处的设定的`正整数`值代表上限,可接受的最大值为 2147483647,为 `true` 时将取 `256`;注意在 Linux,`net.core.somaxconn`
|
||||
会限制此值的上限,如果超过了 `somaxconn`,请同时提高 `somaxconn`。
|
||||
- Mac OS:此处为 `true` 或`正整数`时,仅代表启用 TFO,上限需要通过内核参数 `net.inet.tcp.fastopen_backlog` 单独设定。
|
||||
|
|
|
@ -43,12 +43,10 @@ Xray 提供两种验证方式:
|
|||
### 安装脚本
|
||||
|
||||
- Linux Script
|
||||
|
||||
- [XTLS/Xray-install](https://github.com/XTLS/Xray-install) (**官方脚本**)
|
||||
- [tempest](https://github.com/team-cloudchaser/tempest) (支持 [`systemd`](https://systemd.io) 以及 [OpenRC](https://github.com/OpenRC/openrc); 仅限 Linux 下使用)
|
||||
|
||||
* One Click
|
||||
|
||||
- [Xray-REALITY](https://github.com/zxcvos/Xray-script), [xray-reality](https://github.com/sajjaddg/xray-reality), [reality-ezpz](https://github.com/aleskxyz/reality-ezpz)
|
||||
- [Xray_bash_onekey](https://github.com/hello-yunshu/Xray_bash_onekey), [XTool](https://github.com/LordPenguin666/XTool)
|
||||
- [v2ray-agent](https://github.com/mack-a/v2ray-agent), [Xray_onekey](https://github.com/wulabing/Xray_onekey), [ProxySU](https://github.com/proxysu/ProxySU)
|
||||
|
|
|
@ -36,12 +36,10 @@
|
|||
## 2.3 你本地电脑上需要安装的软件
|
||||
|
||||
1. SSH 远程登录工具
|
||||
|
||||
- Windows: [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)
|
||||
- macOS/Linux: Terminal
|
||||
|
||||
2. 远程文件拷贝工具
|
||||
|
||||
- Windows: [WinSCP](https://winscp.net/eng/index.php)
|
||||
- macOS/Linux: Terminal
|
||||
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
2. 现在,你可以稍微观察并熟悉一下命令行环境,这个界面其实已经告诉了你一些有用的信息了,比如系统内核版本(比如图内是 `4.19.37-5`)、上次登录时间及 IP 等。当然根据 VPS 的不同,你看到的界面可能会略有不同。
|
||||
|
||||
3. 请注意命令行最下面一行,闪动的光标左边,有一串字符。图中显示的是`root@vps-server:~#`,这一串要怎么理解呢?很简单:
|
||||
|
||||
- 现在的用户是 `root`
|
||||
- `root` 所在的服务器是 `vps-server`
|
||||
- `root` 现在所在的文件夹是 `~`
|
||||
|
|
|
@ -21,7 +21,6 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
|
|||
3. 【用户名】:如果使用默认用户,那么【用户名 = `root`】
|
||||
|
||||
4. 【密码】:密码不存在默认值,一定是由 VPS 后台随机生成或由你自行设置的。也就是说,如果你的服务器都是默认设置,则四要素中的三个已经是已知的,那么你整个服务器的安全,就全部寄托在一串小小的密码上了。这时有几种情况:
|
||||
|
||||
- 如果你用了 VPS 管理后台随机生成密码,它一般包含随机的十几个大小写混杂的字母和符号,相对比较安全
|
||||
|
||||
- 如果你为了好记、把密码改成了类似`123456`这种超弱的密码,破解你的 VPS 服务器可谓不费吹灰之力
|
||||
|
@ -72,7 +71,6 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
|
|||

|
||||
|
||||
5) 我们要做的第二件事,是【在打开的文件中找到`Port`这一项,并修改它的端口】。Port 后面的数字就是 SSH 的端口,一般建议把它改成一个大于`1024`小于`65535`的整数(本文以`9753`为例)。请结合`nano`的快捷键,想一下该怎么操作呢?果然,你又说对了!就是:
|
||||
|
||||
- 使用 `ctrl+w` 进入搜索模式,然后输入 `Port 22` 并回车
|
||||
- 删除 `22` 并改成 `9753`
|
||||
- 说明:如果这一行开头有个`#`,证明这一行【不生效】(被注释掉了),你可像我一样在文件最后写一个不带`#`的,或者把`#`删掉就好。
|
||||
|
@ -82,7 +80,6 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
|
|||
:::
|
||||
|
||||
6. 我们要做的第三件事,是【保存文件并退出】
|
||||
|
||||
- 如果第 3 步你有仔细观察,就会发现保存并不是常见的 `ctrl+s`。
|
||||
- 正确的快捷键:保存是 `ctrl+o` + `回车`,退出是 `ctrl+x`
|
||||
- (部分操作系统) 新增一个防火墙规则,设置为新增的SSH端口, 否则实例重启后无法SSH登陆。
|
||||
|
@ -177,12 +174,10 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
|
|||
```
|
||||
|
||||
2. 找到`PermitRootLogin Yes`这一项,然后把它后面的设定值改为`no`即可。还记得怎么操作吗?............ 正确答案:
|
||||
|
||||
- 使用 `ctrl+w` 进入搜索模式,然后输入 `PermitRootLogin` 并回车
|
||||
- 删除 `yes` 并改成 `no`
|
||||
|
||||
3. 保存文件并退出。还记得怎么操作吗?............ 正确答案:
|
||||
|
||||
- 保存是 `ctrl+o`,然后 `回车` 确认
|
||||
- 退出是 `ctrl+x`
|
||||
|
||||
|
@ -225,7 +220,6 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
|
|||
那我们现在就来配置【密钥验证】吧!
|
||||
|
||||
1. 运行`PuTTYgen` (PuTTY 密钥生成器)。位置是 `开始菜单` --> `所有程序` --> `PuTTY (64-bit)` --> `PuTTYgen`
|
||||
|
||||
1. 点击`Generate`开始生成(在界面空白处乱晃鼠标增加随机数)
|
||||
|
||||

|
||||
|
@ -233,7 +227,6 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
|
|||
::: warning
|
||||
本图中是以 `2048` 位的 `RSA` 密钥为例的。但实际上,如果要获得与 `EDCSA/Ed25519` 的 `256` 位密钥相同的安全性,你需要使用 `3072` 位的 `RSA` 密钥。(即右下角的数字改成 `3072`)
|
||||
:::
|
||||
|
||||
2. 你可以给私钥设置密码,增加一层安全性
|
||||
3. 点击 `Save public key` 保存公钥,文件名为 `id_rsa.pub`
|
||||
4. 点击 `Save private key` 保存私钥,文件名为 `id_rsa` (PuTTY 私钥自带`.ppk`后缀)
|
||||
|
@ -242,7 +235,6 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
|
|||

|
||||
|
||||
2. 将公钥上传至 VPS 的`vpsadmin`用户下
|
||||
|
||||
1. 这一步就需要用到之前准备的`WinSCP`了。
|
||||
2. 去[官网](https://winscp.net/eng/index.php)下载并安装,会提示你导入 PuTTY 的设置,当然一键导入啦!
|
||||
|
||||
|
@ -275,7 +267,6 @@ Linux 服务器的安全防护是一个纷繁复杂的巨大课题。无数的
|
|||

|
||||
|
||||
3. 在 VPS 端设置 SSH 启用 RSA 密钥验证登录、同时禁用密码验证登录
|
||||
|
||||
1. 小小白白 Linux 基础命令:
|
||||
| 编号 | 命令名称 | 命令说明 |
|
||||
|:--:|:--:|:--:|
|
||||
|
|
|
@ -137,7 +137,6 @@
|
|||
```
|
||||
|
||||
5. 修改 `nginx.conf` 并重启 `Nginx` 服务,将`80`端口的 http 访问定位到刚才建立的 `html` 页面上
|
||||
|
||||
1. 修改 `nginx.conf` 。
|
||||
|
||||
```shell
|
||||
|
|
|
@ -91,13 +91,11 @@
|
|||

|
||||
|
||||
5. `acme.sh` 会每 60 天检查一次证书并自动更新临期证书。但据我所知是它并不会自动将新证书安装给 `xray-core`,所以我们需要新增一个系统的自动周期任务来完成这一步。
|
||||
|
||||
1. 小小白白 Linux 基础命令:
|
||||
|
||||
| 编号 | 命令名称 | 命令说明 |
|
||||
| :------: | :----------: | :--------------------: |
|
||||
| `cmd-15` | `crontab -e` | 编辑当前用户的定时任务 |
|
||||
|
||||
2. 建立一个脚本文件(`xray-cert-renew.sh`)
|
||||
|
||||
```shell
|
||||
|
@ -164,7 +162,6 @@
|
|||
```
|
||||
|
||||
2. 建立日志文件及文件夹备用
|
||||
|
||||
1. 小小白白 Linux 基础命令:
|
||||
| 编号 | 命令名称 | 命令说明 |
|
||||
|:--:|:--:|:--:|
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
1. APP 要主动或借助转发工具,将数据【流入(`inbounds`)】`Xray` 客户端
|
||||
|
||||
2. 流量进入客户端后,会被【客户端路由(`routing`)】按规则处理后,向不同方向【流出`(outbounds)`】`Xray` 客户端。比如:
|
||||
|
||||
1. 国内流量直连(`direct`)
|
||||
2. 国外流量转发 VPS(`proxy`)
|
||||
3. 广告流量屏蔽(`block`)
|
||||
|
@ -52,23 +51,19 @@
|
|||
:::
|
||||
|
||||
- **v2rayN - 适用于 Windows 平台**
|
||||
|
||||
- 请从它的[GitHub 仓库 Release 页面](https://github.com/2dust/v2rayN/releases)获取最新版
|
||||
- 请根据该客户端的说明进行设置
|
||||
|
||||
- **v2rayNG - 适用于 Android 平台**
|
||||
|
||||
- 请从它的[GitHub 仓库 Release 页面](https://github.com/2dust/v2rayNG/releases)获取最新版
|
||||
- 请根据该客户端的说明进行设置
|
||||
|
||||
- **Shadowrocket - 适用于 iOS, 基于苹果 M 芯片的 macOS**
|
||||
|
||||
- 你需要注册一个【非中国区】的 iCloud 账户
|
||||
- 你需要通过 App Store 搜索并购买
|
||||
- 请根据该客户端的说明进行设置
|
||||
|
||||
- **Qv2ray - 跨平台图形界面,适用于 Linux, Windows, macOS**
|
||||
|
||||
- 请从它的[GitHub 仓库 Release 页面](https://github.com/Qv2ray/Qv2ray/releases)获取最新版(还可以从它的[GitHub 自动构建仓库](https://github.com/Qv2ray/Qv2ray/actions)寻找更新的版本)
|
||||
- 请从它的[项目主页](https://qv2ray.net/)学习文档
|
||||
- 请根据该客户端的说明进行设置
|
||||
|
@ -98,7 +93,6 @@
|
|||
2. 在合适的文件夹建立空白配置文件:`config.json` (自己常用平台下新建文件大家肯定都会,这就真不用啰嗦了)
|
||||
3. 至于什么是“合适的文件夹”?这就取决于具体的平台了~
|
||||
4. 填写客户端配置
|
||||
|
||||
- 我就以 `8.1` 原理说明里展示的基本三类分流(国内流量直连、国际流量转发 VPS、广告流量屏蔽),结合 `8.2` 的连接要素,写成一个配置文件
|
||||
- 请将 `uuid` 替换成与你服务器一致的 `uuid`
|
||||
- 请将 `address` 替换成你的真实域名
|
||||
|
|
|
@ -198,7 +198,6 @@
|
|||
`vless` 协议流量直接流入 `Xray` 中做后续处理
|
||||
|
||||
3. **非 `VLESS` 协议流量有 4 个不同的回落目标:**
|
||||
|
||||
1. `path` 为 `websocket` 的流量,回落给端口 `1234` 后续处理
|
||||
2. `path` 为 `vmesstcp` 的流量,回落给端口 `2345` 后续处理
|
||||
3. `path` 为 `vmessws` 的流量,回落给端口 `3456` 后续处理
|
||||
|
@ -260,7 +259,6 @@
|
|||
```
|
||||
|
||||
看,神奇的事情发生了, `trojan` 协议这里又出现了一个新的 `fallbacks`。前面已经说过,`xray` 中的 `trojan` 协议也具有完整的回落能力,所以,此时 `trojan` 协议可以再次做判断和回落(这也就是传说中的套娃回落了):
|
||||
|
||||
- 所有 `trojan` 协议的流量,流入 `Xray` 中做后续处理
|
||||
- 所有非 `trojan` 协议的流量,转发至 `80` 端口,【主动探测】的防御,完成!
|
||||
|
||||
|
|
|
@ -169,7 +169,6 @@ acme.sh --install-cert -d example.com --fullchain-file /etc/ssl/xray/cert.pem --
|
|||
Proxy Protocol 是 HaProxy 开发的一种旨在解决代理时容易丢失客户端信息问题的协议,常用于链式代理和反向代理。传统的处理方法往往较为复杂且有诸多限制,而 Proxy Protocol 非常简单地在传输数据时附带上原始连接四元组信息的数据包,解决了这个问题。
|
||||
|
||||
凡事皆有利弊,Proxy Protocol 也是如此。
|
||||
|
||||
- 有发送必须有接收,反之亦然
|
||||
- 同一端口不能既兼容带 Proxy Protocol 数据的连接又兼容不带数据的连接(如:Nginx 同端口的不同虚拟主机(server),本质是上一条)[^2][^3]
|
||||
|
||||
|
@ -186,7 +185,6 @@ acme.sh --install-cert -d example.com --fullchain-file /etc/ssl/xray/cert.pem --
|
|||
在上述配置中,每条回落到 Nginx 的配置都要分成两个。这是因为 h2 是强制 TLS 加密的 HTTP/2 连接,这有益于数据在互联网中传输的安全,但在服务器内部没有必要;而 h2c 是非加密的 HTTP/2 连接,适合该环境。然而,Nginx 不能在同一端口上同时监听 HTTP/1.1 和 h2c,为了解决这个问题,需要在回落中指定 `alpn` 项(是 `fallbacks` 而不是 `tlsSettings` 里面的),以尝试匹配 TLS ALPN 协商结果。
|
||||
|
||||
建议 `alpn` 项只按需用两种填法:[^4]
|
||||
|
||||
- 省略
|
||||
- `"h2"`
|
||||
|
||||
|
|
|
@ -67,18 +67,15 @@ Welcome to help Xray become stronger!
|
|||
### Telegram
|
||||
|
||||
- [Project X Discussion Group](https://t.me/projectXray)
|
||||
|
||||
- You can chat freely above the bottom line in the discussion group, don't fight, no abuse of power.
|
||||
- Feel free to ask questions, and try to answer those you know.
|
||||
- No politics, No NSFW
|
||||
|
||||
- [Project VLESS Group](https://t.me/projectVless)
|
||||
|
||||
- The official Xray-core group for non-Chinese participants. Sister group of [Project X](https://t.me/projectXray)
|
||||
- No advertising, No insults, No politics.
|
||||
|
||||
- [Project X Channel](https://t.me/projectXtls)
|
||||
|
||||
- Publish the latest news of Project X
|
||||
|
||||
### Thanks
|
||||
|
|
|
@ -28,12 +28,10 @@ If the domain name to be queried:
|
|||
- Matches the mapping of "domain name - domain name" in the `hosts`, then the value of this mapping (another domain name) will be used as the domain name to be queried, and enter the DNS processing flow until an IP is resolved and returned, or an empty resolution is returned.
|
||||
|
||||
- Does not match `hosts`, but matches the `domains` list in one or more DNS servers, then according to the priority of the matching rule, use the DNS server corresponding to the rule to perform the query in sequence. If the DNS server that is hit fails to query or `expectedIPs` does not match, then use the next hit DNS server to perform the query. Otherwise, return the resolved IP. If all hit DNS servers fail to query or `expectedIPs` does not match, then the DNS component:
|
||||
|
||||
- By default, it will perform "DNS fallback query": use the "DNS server that has not been used in the last failed query and has a default value of `false` for `skipFallback`" to perform the query in sequence. If the query fails or `expectedIPs` does not match, return an empty resolution; otherwise, return the resolved IP.
|
||||
- If `disableFallback` is set to `true`, "DNS fallback query" will not be performed.
|
||||
|
||||
- If neither `hosts` nor the `domains` list in DNS servers matches, then:
|
||||
|
||||
- By default, use the "DNS server that has a default value of `false` for `skipFallback`" to perform the query in sequence. If the first selected DNS server fails to query or `expectedIPs` does not match, then use the next selected DNS server to perform the query. Otherwise, return the resolved IP. If all selected DNS servers fail to query or `expectedIPs` does not match, return an empty resolution.
|
||||
- If the number of "DNS servers that have a default value of `false` for `skipFallback`" is 0 or `disableFallback` is set to `true`, use the first DNS server in the DNS configuration to perform the query. If the query fails or `expectedIPs` does not match, return an empty resolution; otherwise, return the resolved IP.
|
||||
|
||||
|
@ -236,8 +234,7 @@ Traffic generated by built-in DNS, except for `localhost`, `fakedns`, `TCPL`, `D
|
|||
"tag": "server-1",
|
||||
"timeoutMs": 4000,
|
||||
"disableCache": false,
|
||||
"finalQuery": false,
|
||||
|
||||
"finalQuery": false
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -277,14 +274,14 @@ When this item is configured, Xray DNS will verify the returned IP addresses and
|
|||
|
||||
If this item is not configured, the IP address will be returned as is.
|
||||
|
||||
if you add "*" in this list, the original-IPs still returned if no IP matched.
|
||||
if you add "\*" in this list, the original-IPs still returned if no IP matched.
|
||||
|
||||
> `unexpectedIPs`: [string]
|
||||
|
||||
reverse of `expectedIPs`, an IP is matched if and only if does not match any of the IP-ranges in the list, in other words:
|
||||
`expectedIPs = [0.0.0.0/0, ::/0] - unexpectedIPs.`
|
||||
|
||||
if you add "*" in this list, the original-IPs still returned if no IP matched.
|
||||
if you add "\*" in this list, the original-IPs still returned if no IP matched.
|
||||
|
||||
> `skipFallback`: true | false
|
||||
|
||||
|
@ -315,4 +312,3 @@ The tag of this DNS server. If set, it will use this tag as the inbound tag to i
|
|||
`UseIPv4` only queries A records; `UseIPv6` only queries AAAA records. The default value is `UseIP`, which queries both A and AAAA records.
|
||||
|
||||
`UseSystem`, every time dns-Query call, it check the system-network to see if it supports IPv6(and IPv4) or not, if it support IPv6(or IPv4), the IPv6(or IPv4) is also returned, otherwise not returned.
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@ The domain name resolution strategy, which uses different strategies based on di
|
|||
- `"AsIs"`: Use only the domain name for routing selection. Default value.
|
||||
|
||||
- `"IPIfNonMatch"`: If the domain name does not match any rule, resolve the domain name into an IP address (A record or AAAA record) and match it again;
|
||||
|
||||
- When a domain name has multiple A records, it will try to match all A records until one of them matches a rule;
|
||||
- The resolved IP only works for routing selection, and the original domain name is still used in the forwarded packets;
|
||||
|
||||
|
@ -117,7 +116,6 @@ An array where each item represents an IP range. This rule will take effect when
|
|||
- [CIDR](https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing): In the format of `"10.0.0.0/8"`.
|
||||
|
||||
- Predefined IP lists: These lists are included in every Xray installation package under the file name `geoip.dat`. They can be used in the format of `"geoip:cn"`, where `cn` is a two-letter country code. The prefix `geoip:`(all lowercase) must be used, and nearly all countries that have internet access are supported.
|
||||
|
||||
- Special value: `"geoip:private"`, which includes all private addresses, such as `127.0.0.1`.
|
||||
|
||||
- Loading IP from a file: In the format of `"ext:file:tag"`, where `file` is the file name and `tag` is a label that must exist in the file. The prefix `ext:` (all lowercase) must be used, and the file should be located in the [resource directory](./features/env.md#resource-file-path) with the same format as `geoip.dat`.
|
||||
|
|
|
@ -23,7 +23,6 @@ You can use the `xray api` command to retrieve traffic statistics.
|
|||
The current traffic statistics are as follows:
|
||||
|
||||
- User Data
|
||||
|
||||
- `user>>>[email]>>>traffic>>>uplink`
|
||||
|
||||
The uplink traffic of a specific user, in bytes.
|
||||
|
@ -37,7 +36,6 @@ If the corresponding user does not have an email specified, statistics will not
|
|||
:::
|
||||
|
||||
- Global Data
|
||||
|
||||
- `inbound>>>[tag]>>>traffic>>>uplink`
|
||||
|
||||
The uplink traffic of a specific inbound, in bytes.
|
||||
|
|
|
@ -40,12 +40,10 @@ Xray provides two verification methods:
|
|||
### Install Script
|
||||
|
||||
- Linux Script
|
||||
|
||||
- [XTLS/Xray-install](https://github.com/XTLS/Xray-install) (**Official**)
|
||||
- [tempest](https://github.com/team-cloudchaser/tempest) (supports [`systemd`](https://systemd.io) and [OpenRC](https://github.com/OpenRC/openrc); Linux-only)
|
||||
|
||||
* One Click
|
||||
|
||||
- [Xray-REALITY](https://github.com/zxcvos/Xray-script), [xray-reality](https://github.com/sajjaddg/xray-reality), [reality-ezpz](https://github.com/aleskxyz/reality-ezpz)
|
||||
- [Xray_bash_onekey](https://github.com/hello-yunshu/Xray_bash_onekey), [XTool](https://github.com/LordPenguin666/XTool)
|
||||
- [v2ray-agent](https://github.com/mack-a/v2ray-agent), [Xray_onekey](https://github.com/wulabing/Xray_onekey), [ProxySU](https://github.com/proxysu/ProxySU)
|
||||
|
|
|
@ -95,7 +95,6 @@ If you are not using the username `vpsadmin`, please be sure to understand the m
|
|||
```
|
||||
|
||||
5. Modify `nginx.conf` and restart the `Nginx` service, directing the http access on port 80 to the newly created `html` page.
|
||||
|
||||
1. Modify `nginx.conf`.
|
||||
|
||||
```shell
|
||||
|
|
|
@ -90,7 +90,6 @@ chmod +r ~/xray_cert/xray.key
|
|||

|
||||
|
||||
5. `acme.sh` will check the certificate every 60 days and automatically renew the expiring certificate. But as far as I know, it does not automatically install the new certificate to `xray-core`, so we need to add a system automatic periodic task to complete this step.
|
||||
|
||||
1. Basic Linux commands for beginners:
|
||||
|
||||
| Number | Command name | Command description |
|
||||
|
@ -124,7 +123,6 @@ chmod +r ~/xray_cert/xray.key
|
|||
In addition, when recording animated images, the script did not include a command to restart `Xray` because `Xray` plans to support the [Certificate Hot Update] function, which means that `Xray` will automatically identify certificate updates and reload certificates without manual restart. After the function is added, I will modify `config.json` appropriately
|
||||
to enable this setting and delete the restart command in the script.
|
||||
:::
|
||||
|
||||
4. Add [executable] permissions to this file
|
||||
|
||||
```
|
||||
|
@ -160,7 +158,6 @@ First, you can refer to the [official VLESS configuration example](https://githu
|
|||
```
|
||||
|
||||
2. Create log files and folders for backup
|
||||
|
||||
1. Basic Linux commands for beginners:
|
||||
| Number | Command name | Command description |
|
||||
|:--:|:--:|:--:|
|
||||
|
@ -181,7 +178,6 @@ First, you can refer to the [official VLESS configuration example](https://githu
|
|||
::: warning
|
||||
This location is not the standard log file location of `Xray`. It is placed here to avoid permission issues that cause trouble for new users. Once you are familiar with it, it is recommended to return to the default location: `/var/log/xray/access.log` and `/var/log/xray/error.log`.
|
||||
:::
|
||||
|
||||
4. Because Xray is used by the nobody user by default, we need to allow other users to have "write" permissions (`*.log` means all files with the suffix `log`, and the efficiency advantage of the `CLI` interface gradually appears at this time)
|
||||
```shell
|
||||
chmod a+w ~/xray_log/*.log
|
||||
|
@ -403,7 +399,6 @@ If your line really has a very high packet loss rate, the only reliable solution
|
|||
:::
|
||||
|
||||
6. I have said so much because there are too many misconceptions and scam scripts around `BBR` to fool novices. I hope you now have a relatively clear understanding of `BBR`. Next, let's install the latest Debian kernel and enable `BBR`! (It's really simple)
|
||||
|
||||
1. Add the official `backports` source to Debian 10 to get the updated software library
|
||||
|
||||
```shell
|
||||
|
@ -415,7 +410,6 @@ If your line really has a very high packet loss rate, the only reliable solution
|
|||
distributions, it is recommended that you create a `/etc/apt/sources.list.d/` folder and create your own configuration file in this folder, such as `/etc/apt/sources.list.d/vpsadmin.list`
|
||||
, to ensure compatibility and avoid the default file being overwritten in unforeseen circumstances and causing configuration loss.
|
||||
:::
|
||||
|
||||
2. Then add the following item at the end, save and exit.
|
||||
|
||||
```
|
||||
|
@ -433,12 +427,10 @@ If your line really has a very high packet loss rate, the only reliable solution
|
|||
If your VPS supports it, you can try the [cloud server dedicated kernel] `linux-image-cloud-amd64`. The advantages are simplicity and low resource usage. The disadvantage is that some students have reported that forced installation on an unsupported system will cause the system to fail to boot (the kernel cannot be recognized).
|
||||
|
||||
To avoid the tragedy of being unable to identify, please make sure:
|
||||
|
||||
- Take a system snapshot before trying, or
|
||||
- You have `vnc` to save the day (and you know how to use it)
|
||||
|
||||
:::
|
||||
|
||||
4. Modify the `kernel` parameter configuration file `sysctl.conf` and specify to enable `BBR`
|
||||
|
||||
```shell
|
||||
|
@ -450,7 +442,6 @@ If your line really has a very high packet loss rate, the only reliable solution
|
|||
folder and create your own configuration file in this folder, such as `/etc/sysctl.d/vpsadmin.conf`, to ensure compatibility, because some distributions no longer read parameters from `/etc/sysctl.conf` after `systemd`
|
||||
207 version. Using a custom configuration file can also prevent the default file from being overwritten in unexpected circumstances, resulting in configuration loss.
|
||||
:::
|
||||
|
||||
5. Add the following content
|
||||
|
||||
```
|
||||
|
@ -473,7 +464,6 @@ If your line really has a very high packet loss rate, the only reliable solution
|
|||
:::
|
||||
|
||||

|
||||
|
||||
8. Confirm that `BBR` is enabled
|
||||
|
||||
If you want to confirm whether `BBR` is enabled correctly, you can use the following command:
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
1. APP 要主动或借助转发工具,将数据【流入(`inbounds`)】`Xray` 客户端
|
||||
|
||||
2. 流量进入客户端后,会被【客户端路由(`routing`)】按规则处理后,向不同方向【流出`(outbounds)`】`Xray` 客户端。比如:
|
||||
|
||||
1. 国内流量直连(`direct`)
|
||||
2. 国外流量转发 VPS(`proxy`)
|
||||
3. 广告流量屏蔽(`block`)
|
||||
|
@ -52,23 +51,19 @@
|
|||
:::
|
||||
|
||||
- **v2rayN - 适用于 Windows 平台**
|
||||
|
||||
- 请从它的[GitHub 仓库 Release 页面](https://github.com/2dust/v2rayN/releases)获取最新版
|
||||
- 请根据该客户端的说明进行设置
|
||||
|
||||
- **v2rayNG - 适用于 Android 平台**
|
||||
|
||||
- 请从它的[GitHub 仓库 Release 页面](https://github.com/2dust/v2rayNG/releases)获取最新版
|
||||
- 请根据该客户端的说明进行设置
|
||||
|
||||
- **Shadowrocket - 适用于 iOS, 基于苹果 M 芯片的 macOS**
|
||||
|
||||
- 你需要注册一个【非中国区】的 iCloud 账户
|
||||
- 你需要通过 App Store 搜索并购买
|
||||
- 请根据该客户端的说明进行设置
|
||||
|
||||
- **Qv2ray - 跨平台图形界面,适用于 Linux, Windows, macOS**
|
||||
|
||||
- 请从它的[GitHub 仓库 Release 页面](https://github.com/Qv2ray/Qv2ray/releases)获取最新版(还可以从它的[GitHub 自动构建仓库](https://github.com/Qv2ray/Qv2ray/actions)寻找更新的版本)
|
||||
- 请从它的[项目主页](https://qv2ray.net/)学习文档
|
||||
- 请根据该客户端的说明进行设置
|
||||
|
@ -98,7 +93,6 @@
|
|||
2. 在合适的文件夹建立空白配置文件:`config.json` (自己常用平台下新建文件大家肯定都会,这就真不用啰嗦了)
|
||||
3. 至于什么是“合适的文件夹”?这就取决于具体的平台了~
|
||||
4. 填写客户端配置
|
||||
|
||||
- 我就以 `8.1` 原理说明里展示的基本三类分流(国内流量直连、国际流量转发 VPS、广告流量屏蔽),结合 `8.2` 的连接要素,写成一个配置文件
|
||||
- 请将 `uuid` 替换成与你服务器一致的 `uuid`
|
||||
- 请将 `address` 替换成你的真实域名
|
||||
|
|
|
@ -198,7 +198,6 @@
|
|||
`vless` 协议流量直接流入 `Xray` 中做后续处理
|
||||
|
||||
3. **非 `VLESS` 协议流量有 4 个不同的回落目标:**
|
||||
|
||||
1. `path` 为 `websocket` 的流量,回落给端口 `1234` 后续处理
|
||||
2. `path` 为 `vmesstcp` 的流量,回落给端口 `2345` 后续处理
|
||||
3. `path` 为 `vmessws` 的流量,回落给端口 `3456` 后续处理
|
||||
|
@ -260,7 +259,6 @@
|
|||
```
|
||||
|
||||
看,神奇的事情发生了, `trojan` 协议这里又出现了一个新的 `fallbacks`。前面已经说过,`xray` 中的 `trojan` 协议也具有完整的回落能力,所以,此时 `trojan` 协议可以再次做判断和回落(这也就是传说中的套娃回落了):
|
||||
|
||||
- 所有 `trojan` 协议的流量,流入 `Xray` 中做后续处理
|
||||
- 所有非 `trojan` 协议的流量,转发至 `80` 端口,【主动探测】的防御,完成!
|
||||
|
||||
|
|
|
@ -67,17 +67,14 @@ footer: Лицензия CC-BY-SA 4.0 | Авторские права 2020-на
|
|||
### Telegram
|
||||
|
||||
- [Группа обсуждения Project X](https://t.me/projectXray)
|
||||
|
||||
- В группе обсуждения можно свободно общаться, не допускаются оскорбления и злоупотребления.
|
||||
- Не стесняйтесь задавать вопросы, а если знаете ответ - помогите другим.
|
||||
- Запрещены политика и контент для взрослых (NSFW).
|
||||
|
||||
- [Project VLESS Group](https://t.me/projectVless)
|
||||
|
||||
- Официальная группа для некитайскоговорящих пользователей (в основном русскоязычных).
|
||||
|
||||
- [Канал Project X](https://t.me/projectXtls)
|
||||
|
||||
- Публикация последних новостей о Project X.
|
||||
|
||||
### Благодарности
|
||||
|
|
|
@ -5,7 +5,6 @@
|
|||
Встроенный DNS-модуль Xray имеет два основных назначения:
|
||||
|
||||
- На этапе маршрутизации: разрешает доменные имена в IP-адреса и выполняет сопоставление правил на основе полученных IP-адресов для разделения трафика. Разрешение доменных имен и разделение трафика зависят от значения `domainStrategy` в конфигурации модуля маршрутизации. Встроенный DNS-сервер будет использоваться для DNS-запросов только в том случае, если установлено одно из следующих двух значений:
|
||||
|
||||
- `"IPIfNonMatch"`: при запросе доменного имени выполняется сопоставление домена в маршрутизации, если совпадение не найдено, для этого доменного имени используется встроенный DNS-сервер для выполнения DNS-запроса, и возвращенный IP-адрес используется для повторного сопоставления IP-маршрутизации.
|
||||
- `"IPOnDemand"`: при обнаружении любого правила на основе IP-адреса доменное имя немедленно разрешается в IP-адрес для сопоставления.
|
||||
|
||||
|
|
|
@ -7,18 +7,15 @@
|
|||
Принцип работы обратного прокси примерно следующий:
|
||||
|
||||
- Предположим, на хосте A находится веб-сервер, у которого нет публичного IP-адреса и к которому нельзя получить прямой доступ из Интернета. Есть другой хост B с публичным IP-адресом. Нам нужно использовать B в качестве точки входа, перенаправляя трафик с B на A.
|
||||
|
||||
- На хосте B настраивается Xray для приема внешних запросов, поэтому он называется `portal` (портал).
|
||||
- На хосте A настраивается Xray, который отвечает за соединение переадресации от B с веб-сервером. Он называется `bridge` (мост).
|
||||
|
||||
- `bridge`
|
||||
|
||||
- `bridge` активно устанавливает соединение с `portal` для регистрации обратного канала. Целевой адрес (домен) этого соединения можно задать самостоятельно.
|
||||
- После получения трафика из Интернета, перенаправленного `portal`, `bridge` пересылает его без изменений на веб-сервер на хосте A. Конечно, для этого требуется настройка модуля маршрутизации.
|
||||
- После получения ответа `bridge` также возвращает его без изменений `portal`.
|
||||
|
||||
- `portal`
|
||||
|
||||
- Если `portal` получает запрос, и домен совпадает, это означает, что данные ответа пришли от `bridge`. Это соединение будет использовано для установления обратного канала.
|
||||
- Если `portal` получает запрос, и домен не совпадает, это означает, что соединение установлено пользователем из Интернета. Данные этого соединения будут перенаправлены на `bridge`.
|
||||
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
В настоящее время доступна следующая статистика:
|
||||
|
||||
- Данные пользователя
|
||||
|
||||
- `user>>>[email]>>>traffic>>>uplink`
|
||||
|
||||
Исходящий трафик для определенного пользователя в байтах.
|
||||
|
@ -38,7 +37,6 @@
|
|||
:::
|
||||
|
||||
- Глобальные данные
|
||||
|
||||
- `inbound>>>[tag]>>>traffic>>>uplink`
|
||||
|
||||
Исходящий трафик для определенного входящего подключения в байтах.
|
||||
|
|
|
@ -605,14 +605,12 @@ Reality лишь модифицирует TLS, и для реализации н
|
|||
Если значение равно `true` или **положительному целому числу**, то TFO включается; если значение равно `false` или **отрицательному числу**, то TFO принудительно отключается; если параметр отсутствует или равен `0`, то используются настройки системы по умолчанию. Можно использовать как для входящих, так и для исходящих подключений.
|
||||
|
||||
- Доступно только в следующих (или более новых) версиях операционных систем:
|
||||
|
||||
- Linux 3.16: требуется настройка параметра ядра `net.ipv4.tcp_fastopen`, который представляет собой битовую маску, где `0x1` означает, что клиент может включать TFO, а `0x2` означает, что сервер может включать TFO; значение по умолчанию — `0x1`, если серверу необходимо включить TFO, установите значение этого параметра ядра в `0x3`.
|
||||
- ~~Windows 10 (1607)~~ (реализовано неправильно)
|
||||
- Mac OS 10.11 / iOS 9 (требуется тестирование)
|
||||
- FreeBSD 10.3 (Server) / 12.0 (Client): необходимо установить параметры ядра `net.inet.tcp.fastopen.server_enabled` и `net.inet.tcp.fastopen.client_enabled` в значение `1`. (Требуется тестирование)
|
||||
|
||||
- Для входящих подключений установленное здесь **положительное целое число** представляет собой [максимальное количество ожидающих запросов на подключение TFO](https://tools.ietf.org/html/rfc7413#section-5.1), **обратите внимание, что не все операционные системы поддерживают эту настройку**:
|
||||
|
||||
- Linux / FreeBSD: установленное здесь **положительное целое число** представляет собой максимальное значение, максимально допустимое значение — 2147483647, если установлено значение `true`, то используется значение `256`; обратите внимание, что в Linux `net.core.somaxconn` ограничивает максимальное значение, если оно превышает `somaxconn`, то необходимо также увеличить `somaxconn`.
|
||||
- Mac OS: если здесь установлено значение `true` или **положительное целое число**, это означает только включение TFO, максимальное значение необходимо установить отдельно с помощью параметра ядра `net.inet.tcp.fastopen_backlog`.
|
||||
- Windows: если здесь установлено значение `true` или **положительное целое число**, это означает только включение TFO.
|
||||
|
|
|
@ -41,12 +41,10 @@ Xray предлагает два способа проверки:
|
|||
### Установочные скрипты
|
||||
|
||||
- Скрипты для Linux
|
||||
|
||||
- [XTLS/Xray-install](https://github.com/XTLS/Xray-install) (**официальный**)
|
||||
- [tempest](https://github.com/team-cloudchaser/tempest) (поддерживает [`systemd`](https://systemd.io) и [OpenRC](https://github.com/OpenRC/openrc); подходит только для Linux)
|
||||
|
||||
* Установка одной командой
|
||||
|
||||
- [Xray-REALITY](https://github.com/zxcvos/Xray-script), [xray-reality](https://github.com/sajjaddg/xray-reality), [reality-ezpz](https://github.com/aleskxyz/reality-ezpz)
|
||||
- [Xray_bash_onekey](https://github.com/hello-yunshu/Xray_bash_onekey), [XTool](https://github.com/LordPenguin666/XTool)
|
||||
- [v2ray-agent](https://github.com/mack-a/v2ray-agent), [Xray_onekey](https://github.com/wulabing/Xray_onekey), [ProxySU](https://github.com/proxysu/ProxySU)
|
||||
|
|
|
@ -36,12 +36,10 @@
|
|||
## 2.3 Необходимое программное обеспечение
|
||||
|
||||
1. SSH-клиент для удалённого подключения:
|
||||
|
||||
- Windows: [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)
|
||||
- macOS/Linux: Terminal
|
||||
|
||||
2. Программа для передачи файлов:
|
||||
|
||||
- Windows: [WinSCP](https://winscp.net/eng/index.php)
|
||||
- macOS/Linux: Terminal
|
||||
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
2. Теперь можете немного осмотреться и познакомиться с командной строкой. На этом экране уже есть полезная информация, например, версия ядра системы (в данном случае `4.19.37-5`), время последнего входа в систему, IP-адрес и т.д. Конечно, в зависимости от VPS, ваш экран может выглядеть немного иначе.
|
||||
|
||||
3. Обратите внимание на последнюю строку командной строки. Слева от мигающего курсора находится набор символов. В данном случае это `root@vps-server:~#`. Что это значит? Всё просто:
|
||||
|
||||
- Текущий пользователь: `root`.
|
||||
- Имя сервера, на котором работает пользователь `root`: `vps-server`.
|
||||
- Текущий каталог, в котором находится пользователь `root`: `~`.
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
3. **Имя пользователя**: если вы используете настройки по умолчанию, то имя пользователя — `root`.
|
||||
|
||||
4. **Пароль**: пароль не имеет значения по умолчанию. Он либо генерируется автоматически при создании VPS, либо задаётся вами. Таким образом, если вы не меняли настройки сервера, то три из четырёх элементов уже известны злоумышленникам, и вся безопасность вашего сервера держится на одном только пароле. Возможны следующие варианты:
|
||||
|
||||
- Вы используете автоматически сгенерированный пароль из панели управления VPS. Такие пароли обычно состоят из случайного набора символов (букв в разных регистрах, цифр и спецсимволов) и достаточно надёжны.
|
||||
|
||||
- Вы установили простой пароль, например, `123456`. Взломать такой сервер не составит труда.
|
||||
|
@ -72,7 +71,6 @@
|
|||

|
||||
|
||||
5) Второе, что нужно сделать, — это найти строку, начинающуюся с `Port`, и изменить номер порта. Число после `Port` — это номер порта SSH. Рекомендуется использовать число в диапазоне от `1024` до `65535` (в этой статье мы будем использовать порт `9753`). Как это сделать, используя горячие клавиши `nano`? Вы уже наверняка догадались!
|
||||
|
||||
- Нажмите `Ctrl+W`, чтобы открыть поиск, введите `Port 22` и нажмите Enter.
|
||||
- Замените `22` на `9753`.
|
||||
- Примечание: если в начале строки стоит символ `#`, значит, эта строка закомментирована и не будет применяться. Вы можете либо раскомментировать её (удалив `#`), либо добавить новую строку без `#` в конце файла, как показано на скриншоте.
|
||||
|
@ -82,7 +80,6 @@
|
|||
:::
|
||||
|
||||
6. Третье, что нужно сделать, — это сохранить изменения и выйти из редактора.
|
||||
|
||||
- Как вы уже могли заметить, для сохранения файла используется не `Ctrl+S`, как в большинстве программ.
|
||||
- Горячие клавиши: `Ctrl+O` — сохранить, `Ctrl+X` — выйти.
|
||||
|
||||
|
@ -177,12 +174,10 @@
|
|||
```
|
||||
|
||||
2. Найдите строку `PermitRootLogin Yes` и замените `yes` на `no`. Помните, как это сделать? ... Правильный ответ:
|
||||
|
||||
- Нажмите `Ctrl+W`, чтобы открыть поиск, введите `PermitRootLogin` и нажмите Enter.
|
||||
- Замените `yes` на `no`.
|
||||
|
||||
3. Сохраните изменения и выйдите из редактора. Помните, как это сделать? ... Правильный ответ:
|
||||
|
||||
- `Ctrl+O` — сохранить, `Enter` — подтвердить сохранение.
|
||||
- `Ctrl+X` — выйти.
|
||||
|
||||
|
@ -225,7 +220,6 @@
|
|||
Итак, давайте настроим аутентификацию по SSH-ключам.
|
||||
|
||||
1. Запустите программу **PuTTYgen** (генератор ключей PuTTY). Она находится в меню «Пуск» --> «Все программы» --> «PuTTY (64-bit)» --> «PuTTYgen».
|
||||
|
||||
1. Нажмите кнопку **Generate**, чтобы сгенерировать ключи (поводите курсором мыши по пустому пространству окна, чтобы добавить энтропии).
|
||||
|
||||

|
||||
|
@ -233,7 +227,6 @@
|
|||
::: warning
|
||||
На скриншоте показан пример генерации 2048-битного RSA-ключа. Однако для достижения уровня безопасности, со comparableного с 256-битным ключом ECDSA/Ed25519, вам нужно сгенерировать 3072-битный RSA-ключ (т.е. ввести значение `3072` в поле «Number of bits in a generated key»).
|
||||
:::
|
||||
|
||||
2. Вы можете установить пароль для защиты приватного ключа.
|
||||
3. Нажмите кнопку **Save public key**, чтобы сохранить публичный ключ в файл `id_rsa.pub`.
|
||||
4. Нажмите кнопку **Save private key**, чтобы сохранить приватный ключ в файл `id_rsa` (приватные ключи PuTTY имеют расширение `.ppk`).
|
||||
|
@ -242,7 +235,6 @@
|
|||

|
||||
|
||||
2. Скопируйте публичный ключ на VPS в домашний каталог пользователя `vpsadmin`.
|
||||
|
||||
1. Для этого используйте программу **WinSCP**, которую мы установили ранее.
|
||||
2. Скачайте и установите WinSCP с [официального сайта](https://winscp.net/eng/index.php). При первом запуске программа предложит импортировать настройки из PuTTY. Согласитесь на импорт.
|
||||
|
||||
|
@ -275,7 +267,6 @@
|
|||

|
||||
|
||||
3. Настройте SSH-сервер на использование ключей и отключите аутентификацию по паролю.
|
||||
|
||||
1. Базовые команды Linux:
|
||||
| Номер | Команда | Описание |
|
||||
| :----: | :------ | :--------------------------------------- |
|
||||
|
|
|
@ -137,7 +137,6 @@
|
|||
```
|
||||
|
||||
6. Отредактируйте файл `nginx.conf` и перезапустите Nginx, чтобы он открывал созданную нами страницу `index.html` при обращении к порту `80`.
|
||||
|
||||
1. Отредактируйте файл `nginx.conf`.
|
||||
|
||||
```shell
|
||||
|
|
|
@ -86,7 +86,6 @@ Xray основан на проекте с открытым исходным к
|
|||

|
||||
|
||||
5. `acme.sh` проверяет срок действия сертификата каждые 60 дней и автоматически обновляет его при необходимости. Однако, насколько мне известно, он не устанавливает новый сертификат для `xray-core` автоматически. Поэтому нам нужно добавить автоматическое задание cron, которое будет делать это за нас.
|
||||
|
||||
1. Базовые команды Linux:
|
||||
|
||||
| Номер | Команда | Описание |
|
||||
|
@ -154,7 +153,6 @@ Xray основан на проекте с открытым исходным к
|
|||
```
|
||||
|
||||
2. Создаём файлы и папки для логов:
|
||||
|
||||
1. Базовые команды Linux:
|
||||
|
||||
| Номер | Команда | Описание |
|
||||
|
@ -397,7 +395,6 @@ Xray основан на проекте с открытым исходным к
|
|||
:::
|
||||
|
||||
6. Я так подробно остановился на `BBR`, потому что вокруг него слишком много мифов и откровенной дезинформации, нацеленной на новичков. Надеюсь, теперь у вас есть чёткое представление о том, что такое `BBR` и как он работает. А теперь давайте установим последнюю версию ядра Debian и включим `BBR`! (Это действительно просто)
|
||||
|
||||
1. Добавляем репозиторий `backports` в Debian 10, чтобы получить доступ к более новым версиям пакетов:
|
||||
|
||||
```shell
|
||||
|
@ -424,7 +421,6 @@ Xray основан на проекте с открытым исходным к
|
|||
Если ваш VPS поддерживает это, вы можете попробовать установить **специальное ядро для облачных серверов** `linux-image-cloud-amd64`. Его преимущества — это меньший размер и меньшее потребление ресурсов. Однако некоторые пользователи сталкивались с проблемами при установке этого ядра на неподдерживаемые системы, вплоть до невозможности загрузки (ядро не определялось).
|
||||
|
||||
Чтобы не попасть в такую ситуацию, перед установкой этого ядра:
|
||||
|
||||
- создайте снапшот системы или
|
||||
- убедитесь, что у вас есть доступ к `vnc`-консоли (и вы знаете, как ей пользоваться)
|
||||
|
||||
|
@ -555,20 +551,16 @@ Xray основан на проекте с открытым исходным к
|
|||
## 7.11 Важные исправления
|
||||
|
||||
1. В первоначальной версии руководства был указан неверный путь к файлу конфигурации `Xray` (`config.json`). Если вы настроили `Xray` по старой инструкции, то он не запустится. Приносим извинения за неудобства!
|
||||
|
||||
- Верный путь: `/usr/local/etc/xray/config.json`
|
||||
- Неверный путь: `/usr/local/etc/config.json`
|
||||
|
||||
Затронутые разделы:
|
||||
|
||||
- 7.4 Настройка Xray - 3. Создание файла конфигурации `Xray` с помощью `nano`
|
||||
- 7.8 Оптимизация сервера: автоматическое перенаправление HTTP на HTTPS - 6. Изменяем настройки перенаправления в файле конфигурации Xray
|
||||
|
||||
2. В первоначальной версии руководства была ошибка в настройках Nginx (неверный путь к папке с файлами сайта). Если вы настроили Nginx по старой инструкции, то сайт не будет работать. Приносим извинения за неудобства!
|
||||
|
||||
- Верный путь: `root /home/vpsadmin/www/webpage;`
|
||||
- Неверный путь: `root /var/www/website/html`
|
||||
|
||||
Затронутые разделы:
|
||||
|
||||
- 7.8 Оптимизация сервера: автоматическое перенаправление HTTP на HTTPS - 4. Добавляем новый сервер, который будет прослушивать локальный порт и отдавать файлы сайта.
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
1. Приложение должно самостоятельно или с помощью стороннего инструмента перенаправить трафик на **входящее подключение** (`inbounds`) клиента `Xray`.
|
||||
|
||||
2. Поступивший на клиент трафик обрабатывается **модулем маршрутизации** (`routing`) в соответствии с заданными правилами и перенаправляется на разные **исходящие подключения** (`outbounds`) клиента `Xray`, например:
|
||||
|
||||
- Трафик на китайские ресурсы — напрямую (`direct`)
|
||||
- Трафик на зарубежные ресурсы — через VPS (`proxy`)
|
||||
- Рекламный трафик — блокируется (`block`)
|
||||
|
@ -19,7 +18,6 @@
|
|||
3. Трафик на зарубежные ресурсы, перенаправленный на VPS, проходит через Великий Китайский Файрвол и попадает на **входящее подключение** (`inbounds`) сервера `Xray`.
|
||||
|
||||
4. Как и на клиенте, трафик, поступивший на сервер, обрабатывается **модулем маршрутизации** (`routing`) в соответствии с заданными правилами и перенаправляется на разные **исходящие подключения** (`outbounds`):
|
||||
|
||||
- Поскольку сервер находится за пределами Китая, трафик по умолчанию идёт напрямую, что позволяет получить доступ к заблокированным ресурсам (`direct`).
|
||||
- При необходимости можно настроить перенаправление трафика на другие VPS (`proxy`).
|
||||
- На сервере также можно блокировать нежелательный трафик, например, рекламу или торренты (`block`).
|
||||
|
@ -54,29 +52,24 @@
|
|||
:::
|
||||
|
||||
- **v2rayN - для Windows**
|
||||
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/2dust/v2rayN/releases)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
|
||||
- **v2rayNG - для Android**
|
||||
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/2dust/v2rayNG/releases)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
|
||||
- **Shadowrocket - для iOS, macOS на базе Apple M1**
|
||||
|
||||
- Создайте учётную запись iCloud **не** в китайском регионе
|
||||
- Купите приложение в App Store
|
||||
- Настройте клиент в соответствии с документацией
|
||||
|
||||
- **Qv2ray - кроссплатформенный графический интерфейс для Linux, Windows, macOS**
|
||||
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/Qv2ray/Qv2ray/releases) (или более новую версию из раздела [сборок на GitHub](https://github.com/Qv2ray/Qv2ray/actions))
|
||||
- Изучите документацию на [сайте проекта](https://qv2ray.net/)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
|
||||
- **V2RayXS - клиент для macOS, основанный на V2RayX и использующий xray-core**
|
||||
|
||||
- Скачайте последнюю версию из [репозитория на GitHub](https://github.com/tzmax/v2rayXS/releases)
|
||||
- Поддерживает импорт ссылок на конфигурации VLESS / VMessAEAD по стандарту, предложенному в [этой задаче](https://github.com/XTLS/Xray-core/issues/91)
|
||||
- Настройте клиент в соответствии с документацией
|
||||
|
@ -99,7 +92,6 @@
|
|||
2. Создайте пустой файл конфигурации `config.json` в той же папке (думаю, с этим проблем не возникнет).
|
||||
3. Что значит "удобное место"? Это зависит от платформы.
|
||||
4. Заполните файл конфигурации.
|
||||
|
||||
- Я написал пример конфигурации, основанный на схеме из раздела 8.1 (прямое подключение к китайским ресурсам, проксирование трафика на зарубежные ресурсы через VPS, блокировка рекламы) и параметрах подключения из раздела 8.2.
|
||||
- Замените `uuid` на идентификатор из вашей конфигурации сервера.
|
||||
- Замените `address` на доменное имя вашего сервера.
|
||||
|
|
|
@ -198,7 +198,6 @@
|
|||
Трафик протокола `vless` напрямую передается в `Xray` для дальнейшей обработки.
|
||||
|
||||
3. **Трафик, не относящийся к протоколу `VLESS`, перенаправляется на 4 различных порта fallback:**
|
||||
|
||||
1. Трафик с `path`, равным `websocket`, перенаправляется на порт `1234` для дальнейшей обработки.
|
||||
2. Трафик с `path`, равным `vmesstcp`, перенаправляется на порт `2345` для дальнейшей обработки.
|
||||
3. Трафик с `path`, равным `vmessws`, перенаправляется на порт `3456` для дальнейшей обработки.
|
||||
|
@ -260,7 +259,6 @@
|
|||
```
|
||||
|
||||
Смотрите, произошло чудо, в протоколе `trojan` появился новый `fallbacks`. Как уже говорилось ранее, протокол `trojan` в `xray` также обладает полной функциональностью fallback, поэтому на этом этапе протокол `trojan` может снова выполнять проверку и fallback (это и есть легендарный "fallback в fallback"):
|
||||
|
||||
- Весь трафик протокола `trojan` передается в `Xray` для дальнейшей обработки.
|
||||
- Весь остальной трафик перенаправляется на порт `80`. **Защита от активного зондирования** реализована!
|
||||
|
||||
|
|
|
@ -169,7 +169,6 @@ acme.sh --install-cert -d example.com --fullchain-file /etc/ssl/xray/cert.pem --
|
|||
Proxy Protocol - это протокол, разработанный HaProxy для решения проблемы потери информации о клиенте при проксировании, часто используемый в цепочках прокси-серверов и обратных прокси. Традиционные методы решения этой проблемы, как правило, сложны и имеют много ограничений, в то время как Proxy Protocol очень прост - он просто добавляет пакет данных с информацией об исходном соединении (четверка "источник-назначение:порт") при передаче данных.
|
||||
|
||||
У всего есть свои плюсы и минусы, и Proxy Protocol не исключение.
|
||||
|
||||
- Если есть отправка, должен быть и прием, и наоборот.
|
||||
- Один и тот же порт не может одновременно поддерживать соединения с данными Proxy Protocol и без них (например, разные виртуальные хосты (server) Nginx на одном порту, что по сути является следствием предыдущего пункта)[^2][^3].
|
||||
|
||||
|
@ -186,7 +185,6 @@ acme.sh --install-cert -d example.com --fullchain-file /etc/ssl/xray/cert.pem --
|
|||
В приведенной выше конфигурации каждая запись fallback для Nginx разделена на две. Это связано с тем, что h2 - это обязательное зашифрованное соединение HTTP/2, что хорошо для безопасности передачи данных в Интернете, но не нужно внутри сервера. h2c же - это незашифрованное соединение HTTP/2, подходящее для этой среды. Однако Nginx не может одновременно прослушивать HTTP/1.1 и h2c на одном порту. Чтобы решить эту проблему, необходимо указать `alpn` (в разделе `fallbacks`, а не `tlsSettings`), чтобы сопоставить результаты согласования TLS ALPN.
|
||||
|
||||
Рекомендуется указывать `alpn` только в двух случаях[^4]:
|
||||
|
||||
- опустить
|
||||
- `"h2"`
|
||||
|
||||
|
|
|
@ -13,14 +13,14 @@
|
|||
"@vuepress/bundler-webpack": "2.0.0-rc.2",
|
||||
"@vuepress/plugin-back-to-top": "^2.0.0-rc.3",
|
||||
"@vuepress/plugin-search": "2.0.0-rc.3",
|
||||
"vuepress-plugin-i18n": "https://codeload.github.com/XTLS/vuepress-plugin-i18n/tar.gz/5ae5b2d",
|
||||
"postcss-loader": "^8.0.0",
|
||||
"prettier": "^3.6.2",
|
||||
"sass": "^1.51.0",
|
||||
"sass-loader": "^14.2.0",
|
||||
"typescript": "^5.8.2",
|
||||
"vue-property-decorator": "^9.1.2",
|
||||
"vuepress": "2.0.0-rc.2"
|
||||
"vuepress": "2.0.0-rc.2",
|
||||
"vuepress-plugin-i18n": "https://codeload.github.com/XTLS/vuepress-plugin-i18n/tar.gz/5ae5b2d"
|
||||
},
|
||||
"scripts": {
|
||||
"docs:dev": "vuepress dev docs --clean-temp --clean-cache",
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
"lib": ["DOM", "ES2022"],
|
||||
"sourceMap": false,
|
||||
"strict": true,
|
||||
"moduleResolution": "Bundler",
|
||||
"moduleResolution": "Bundler"
|
||||
},
|
||||
"include": ["./docs/.vuepress/**/*.ts", "./docs/.vuepress/**/*.vue"],
|
||||
"exclude": ["node_modules"],
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue