Alvis 发表于 2024-8-26 16:55:09

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]
查看完整版本: Serv00 - Xray + CloudFlare 优选IP