Serv00 - Xray + CloudFlare 优选IP
## 准备1. 优选 IP 需要两个域名,其中一个主域名给用户直接访问,一个用于回源。
回源的域名需要托管到 CF,主域名有人在DNSPod解析分国内外,不过我也是统一放在了 CF 托管。
> 一般免费的域名商不能免费解析 TXT(CF 做回源的主机名验证需要),可以买个付费域名,例如 12345678.xyz 之类的数字域名就很便宜,我是在 `spaceship` 上一年几块钱。
>
> serv00 分配的域名不能托管到 CF(截至 2024-8-25)。
2. 申请一个 Serv00 服务器,可以见我上一篇文章。
(https://bbs.naixi.net/thread-388-1-1.html)
3. 项目地址:
- Xray-core:(https://github.com/XTLS/Xray-core)
doc:[【第 6 章】证书管理篇 | Project X (xtls.github.io)](https://xtls.github.io/document/level-0/ch06-certificates.html)
- CLOUDFLARE(CF):(https://dash.cloudflare.com/)
- v2rayN:(https://github.com/2dust/v2rayN)
## 假设已准备
1. 域名
- 域名A:86123456.xyz
– 作为主域名
- 域名B:86123456.buzz
– 作为回源域名
2. 将两个域名托管到 CF,自行搜索教程。
3. 在 Serv00 启用服务、开启端口和记录下自己服务器 IP。例如端口:6663
## 开始
### 一、 回源域名设置
1. 进入 CF 面板,切换到用于回源的域名。
2. 设置 SSL 为完全
添加回源域名
添加主机名
记下 TXT 的名称和值,待会去主域名里面添加记录。
3. 设置规则,将流量转到服务器的指定端口。
### 二、主域名设置
1. 添加 DNS,第二条记录对应上面验证主机名。
2. SSL 设置
### 三、检查回源状态
1. 进入回源域名查看主机名验证状态
2. 检查优选是否成功
输入主域名,**需要加上 https:// 协议**。
网站:https://www.itdog.cn/http/
### 四、Serv00 安装 Xray 和 生成 SSL 证书
1. 新增一个和主域名同名的网站,方便待会生成 ssl 证书验证。
2. 回到回源域名暂时关闭端口转发规则,否则 ssl 证书验证时候会失败。
3. 生成 SSL 证书
参考[【第 6 章】证书管理篇 | Project X (xtls.github.io)](https://xtls.github.io/document/level-0/ch06-certificates.html)
email 可以填自己真实的,乱填邮箱地址可能会导致后续报错,反面教材:`[email protected]`。
```sh
下载
curl https://get.acme.sh | sh -s [email protected]
设置命令别名,方便使用(注意自己实际路径)
alias acme.sh=~/.acme.sh/acme.sh
设置自动升级
acme.sh --upgrade --auto-upgrade
测试(自己替换)
acme.sh --issue --server letsencrypt --test -d cdn.主域名.xyz -w /home/用户名/domains/cdn.主域名.xyz/public_html --keylength ec-256
设置正式环境
acme.sh --set-default-ca --server letsencrypt
生成 SSL(自己替换)
acme.sh --issue -d cdn.主域名.xyz -w /home/用户名/domains/cdn.主域名.xyz/public_html --keylength ec-256 --force
安装 SSL,例如在 /home/用户名/domains/xray/ssl 建好文件夹
acme.sh --installcert -dcdn.主域名.xyz --cert-file /home/用户名/domains/xray/ssl/cert-cdn42.crt --key-file /home/用户名/domains/xray/ssl/cert-cdn42.key --fullchain-file /home/用户名/domains/xray/ssl/fullchain-cdn42.crt --ecc
至此,SSL 生成完毕,记录 `.crt` 和 `.key` 文件路径,待会在 Xray 里面配置。
```
4. 至此 SSL 证书生成了,进入CF面板**把回源域名端口转发规则开启**。否则会导致客户端无法连接上服务器的指定端口。
5. 安装 Xray
下载最新版,https://github.com/XTLS/Xray-core/releases ,
我这里用的是 `1.8.23`,下载后拉到服务器右键解压。路径随你。
6. Xray服务器配置
这里用的是 `VMess-Websocket-TLS` 方案。参考:(https://github.com/XTLS/Xray-examples/blob/main/VMess-Websocket-TLS/config_server.json)
其他方案自己研究(被折磨了几天决定放弃)
在 xray 目录下新建 `config.json` ,修改 inbounds 里面标注的4个地方。
> 启动 xray 时候有错误或者客户端连接不上?可以设置 “loglevel”: “debug” 去排查。
```json
// REFERENCE:
// https://github.com/XTLS/Xray-examples
// https://xtls.github.io/config/
// 常用的 config 文件,不论服务器端还是客户端,都有 5 个部分。外加小小白解读:
// ┌─ 1*log 日志设置 - 日志写什么,写哪里(出错时有据可查)
// ├─ 2_dns DNS-设置 - DNS 怎么查(防 DNS 污染、防偷窥、避免国内外站匹配到国外服务器等)
// ├─ 3_routing 分流设置 - 流量怎么分类处理(是否过滤广告、是否国内外分流)
// ├─ 4_inbounds 入站设置 - 什么流量可以流入 Xray
// └─ 5_outbounds 出站设置 - 流出 Xray 的流量往哪里去
{
// 1_日志设置
"log": {
"loglevel": "warning" // 内容从少到多: "none", "error", "warning", "info", "debug"
},
// 2_DNS 设置
"dns": {
"servers": [
"https+local://1.1.1.1/dns-query", // 首选 1.1.1.1 的 DoH 查询,牺牲速度但可防止 ISP 偷窥
"localhost"
]
},
// 3*分流设置
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
// 3.1 防止服务器本地流转问题:如内网被攻击或滥用、错误的本地回环等
{
"type": "field",
"ip": [
"geoip:private" // 分流条件:geoip 文件内,名为"private"的规则(本地)
],
"outboundTag": "block" // 分流策略:交给出站"block"处理(黑洞屏蔽)
},
{
// 3.2 防止服务器直连国内
"type": "field",
"ip": [
"geoip:cn"
],
"outboundTag": "block"
},
// 3.3 屏蔽广告
{
"type": "field",
"domain": [
"geosite:category-ads-all" // 分流条件:geosite 文件内,名为"category-ads-all"的规则(各种广告域名)
],
"outboundTag": "block" // 分流策略:交给出站"block"处理(黑洞屏蔽)
}
]
},
// 4*入站设置
// 4.1 这里只写了一个最简单的 vless+xtls 的入站,因为这是 Xray 最强大的模式。如有其他需要,请根据模版自行添加。
"inbounds": [
{
"listen": "0.0.0.0",
// 修改1:填自己端口
"port": 6663,
"protocol": "vmess",
"settings": {
"clients": [
{
// 修改2:生成 uuid,自己找工具
"id": "44bf3f93-e593-4dfb-935c-dbcc2be8d4b6"
}
]
},
"streamSettings": {
"network": "ws",
"security": "tls",
// 修改3:写自己生成 SSL 证书填的域名
"serverName": "cdn.主域名.xyz",
"tlsSettings": {
"alpn": "http/1.1",
"certificates": [
{
// 修改4:修改 SSL 的 crt 和 key 地址
"certificateFile": "/home/用户名/domains/xray/ssl/cert-cdn42.crt",
"keyFile": "/home/用户名/domains/xray/ssl/cert-cdn42.key"
}
]
}
}
}
],
// 5*出站设置
"outbounds": [
// 5.1 第一个出站是默认规则,freedom 就是对外直连(vps 已经是外网,所以直连)
{
"tag": "direct",
"protocol": "freedom"
},
// 5.2 屏蔽规则,blackhole 协议就是把流量导入到黑洞里(屏蔽)
{
"tag": "block",
"protocol": "blackhole"
}
]
}
```
7. 启动 xray
```bash
进入 xray 目录 运行
./xray -c config.json &
```
日志级别设置了 `debug`
### 五、客户端设置
使用的是 v2rayN,可自行选择:(https://github.com/2dust/v2rayN)
### 六、拓展
优选 IP 还慢些?可能还需要测试多些。
不过可以看出套了CF(无论是否优选)都比 IP 直连会**提高巨大下载速度**。
附两个客户端配置(服务器的json配置不用改):
1. 直连服务器
2. 不做回源和优选,只添加记录和开了代理。
结合之前文章添加保活:(https://bbs.naixi.net/thread-387-1-1.html)
添加启动脚本
```bash
#!/bin/bash
# 设置脚本路径和工作目录
SCRIPT_PATH="/home/用户名/domains/xray"
WORK_DIR="/home/用户名/domains/xray"
LOG_FILE="$WORK_DIR/restart_log.txt"
# 检查并创建工作目录和日志文件
mkdir -p "$WORK_DIR"
touch "$LOG_FILE"
# 函数用于记录日志到文件和控制台
log() {
echo "$1" | tee -a "$LOG_FILE"
}
# 检查参数
case "$1" in
stop)
# 停止 xray 服务
if pgrep -f './xray -c config.json' > /dev/null; then
cd "$WORK_DIR" || exit
pkill -f './xray -c config.json'
log "Stopped xray server at $(date)"
else
log "xray server is not running at $(date)"
fi
;;
start)
# 启动 xray 服务
if ! pgrep -f './xray -c config.json' > /dev/null; then
cd "$WORK_DIR" || exit
nohup ./xray -c config.json > /dev/null 2>&1 &
log "Started xray server at $(date)"
else
log "xray server is already running at $(date)"
fi
;;
restart)
# 重启 xray 服务
if pgrep -f './xray -c config.json' > /dev/null; then
cd "$WORK_DIR" || exit
pkill -f './xray -c config.json'
log "Stopped xray server at $(date)"
sleep 2 # 等待服务完全停止
fi
cd "$WORK_DIR" || exit
nohup ./xray -c config.json > /dev/null 2>&1 &
log "Started xray server at $(date)"
;;
*)
log "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
# 添加空行以提高日志可读性
echo "" >> "$LOG_FILE"
```
`check_crontab.sh` 添加 tasks
```perl
"30 1 * * * /usr/bin/env TZ=Asia/Shanghai ~/domains/xray/xray-auto.sh restart >/dev/null 2>&1"
"0 */3 * * * /usr/bin/env TZ=Asia/Shanghai ~/domains/xray/xray-auto.sh start >/dev/null 2>&1"
"@reboot /usr/bin/env TZ=Asia/Shanghai ~/domains/xray/xray-auto.sh start >/dev/null 2>&1"
```
### 七、后记
1. 用 Serv00 做 xray,如果是直接IP非常慢。
如果有两个域名,可以做回源;如果只有一个,建议也套个 CF,参考 `拓展` 部分,下载速度能大幅提升。
2. 回源可能更多是给自己网站加速,可以自己拓展用途。
3. Xray 其他模式我也尝试过,由于自己对 CF 和端口转发那些都不熟悉,踩了很多坑,最后才选了上述方式。不是最佳,但是自用应该也够了。
4. 上述步骤可能有遗漏,自己变通和搜索资料解决。
5. 祝大家顺利搭建成功。
页:
[1]