解决 V2RayN/Xray 链式代理在安卓/PC端失效问题 (通过二级代理实现Google Voice/Talkatone保号)

本教程将详细介绍如何通过在VPS上配置一个二级代理,来解决V2RayN或Xray在安卓和PC端使用链式代理时可能出现的问题,尤其适用于需要特定IP地址(如美国IP)来保号Google Voice或Talkatone的用户。

目录

  1. 问题背景
  2. 解决方案概览
  3. 前提条件
  4. 步骤一:在X-UI面板上创建Shadowsocks入站(二级代理)
  5. 步骤二:在V2RayN客户端测试Shadowsocks直连节点
  6. 步骤三:修改Xray核心配置文件(配置链式代理逻辑)
  7. 步骤四:验证链式代理是否成功
  8. 重要提示与注意事项

1. 问题背景

部分用户在使用V2RayN或Xray的链式代理功能时,发现其在Windows PC和安卓手机上表现不稳定,甚至出现连接失败或延时很高的情况。同样的链式代理配置在iOS平台的“小火箭”等客户端上却能正常工作。这主要是由于不同客户端底层实现原理的差异。对于需要固定美国IP来保号Google Voice或Talkatone的用户来说,这种不稳定性会造成很大困扰。

2. 解决方案概览

  1. 在VPS上,创建一个Shadowsocks协议的入站节点,作为二级代理
  2. 通过修改Xray/V2Ray核心配置文件,将Xray/V2Ray服务器本身配置成一个链式代理的跳板。它将接收来自客户端(PC/安卓)的连接,然后通过先前配置的链式代理的落地IP(例如美国的IP)进行转发。

简而言之,PC/安卓客户端不再直接尝试建立复杂的链式代理连接,而是先通过一个简单的Shadowsocks直连到VPS,然后由VPS内部的Xray/V2Ray服务负责完成链式代理的第二跳,从而绕过客户端对链式代理兼容性的限制。

3. 前提条件

  • 已有一个VPS,并已安装好X-UI(或V2Ray/Xray)。
  • 已有一个可用的链式代理节点信息(前置代理+落地IP信息),且**落地IP(如美国的IP)**是关键。
  • 电脑上安装V2RayN客户端(或安卓上的V2RayNG等客户端)。

4. 步骤一:在X-UI面板上创建Shadowsocks入站(二级代理)

  1. 登录X-UI面板。
  2. 点击左侧导航栏的“入站列表”(Inbound List)。
  3. 点击页面上的“+添加入站”(Add Inbound)按钮。
  4. 在弹出的窗口中填写以下信息:
    • 备注(Alias): 填写名称。
    • 协议(Protocol): 选择 shadowsocks
    • 端口(Port): 填写一个未被占用的端口号,例如 48766(确保该端口在VPS防火墙已开放)。
    • 客户端(Client):
      • 加密(Encryption): 选择 AES-128-GCM(或 AES-256-GCM推荐这两种)。
      • 密码(Password): 点击右侧的刷新按钮生成一个强密码,并复制保存下来,后续配置会用到。
      • 网络(Network): 选择 tcp,udp
    • 其他设置保持默认即可。
  5. 点击“创建”按钮保存。
  6. 创建成功后,复制新创建的Shadowsocks节点的链接。

5. 步骤二:在V2RayN客户端测试Shadowsocks直连节点

  1. 打开V2RayN客户端。
  2. 点击左上角菜单栏的从剪贴板导入批量URL
  3. 测试服务器真连接延迟。
  4. 将该Shadowsocks节点设为活动服务器。
  5. 打开浏览器访问 https://ip.sb ,验证当前的IP地址是否是VPS的真实IP地址。

6. 步骤三:修改Xray核心配置文件(配置链式代理逻辑)

这一步是核心,需要修改Xray服务在VPS上的配置文件,让它接收来自XrayN的Shadowsocks直连,然后通过Google Voice/Talkatone保号所需的特定落地IP进行转发。

  1. 在X-UI面板,点击左侧导航栏的“Xray设置”(Xray Settings)。

  2. 点击顶部的“高级配置”(Advanced Configuration)选项卡。

  3. 根据以下提供的JSON片段,修改复制的Xray核心配置文件:

    • 添加Shadowsocks入站(接收来自V2RayN的流量)
      将以下内容粘贴到配置文件中 inbounds: [ 数组的最前面,紧接在 [ 后面。注意,如果 inbounds 数组中有其他节点,新粘贴的块后面需要加一个逗号 ,

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      {
      "tag": "proxy", // 标识符,后续路由规则会用到
      "port": 48766, // 与步骤一Shadowsocks入站的端口号保持一致
      "listen": "0.0.0.0",
      "protocol": "shadowsocks",
      "settings": {
      "method": "aes-128-gcm", // 与步骤一Shadowsocks入站的加密方式保持一致
      "password": "你之前复制的Shadowsocks密码" // 与步骤一Shadowsocks入站的密码保持一致
      },
      "network": "tcp,udp",
      "sniffing": {
      "enabled": true,
      "destOverride": [
      "http",
      "tls"
      ]
      }
      },
    • 添加 Socks 出站(指向Google Voice/Talkatone保号所需的落地IP)
      将以下内容粘贴到配置文件中 outbounds: [ 数组的最前面,紧接在 [ 后面。注意,如果 outbounds 数组中有其他出站,新粘贴的块后面需要加一个逗号 ,

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      {
      "tag": "zhuzai_proxy_1", // 标识符,后续路由规则会用到
      "protocol": "socks",
      "settings": {
      "servers": [
      {
      "address": "gate-hk.kookeey.info", // 落地IP地址(如美国IP),这里用作示例
      "port": 1000, // 落地IP的端口
      "users": [
      {
      "user": "8A957B2-0F69c10f", // 落地IP的用户名
      "pass": "251a9afe-US_California-21521435" // 落地IP的密码
      }
      ]
      }
      ]
      },
      "healthCheck": { // 健康检查(可选,但推荐)
      "enable": true,
      "interval": "10s",
      "timeout": "5s",
      "url": "https://www.google.com/generate_204"
      }
      },

      重要提示: 请确保该块与下一个出站配置之间有逗号分隔。

    • 添加路由规则(将Shadowsocks入站流量转发到Socks出站)
      将以下内容粘贴到配置文件中 routing: { "rules": [ 数组的最前面,紧接在 [ 后面。注意,如果 rules 数组中有其他规则,新粘贴的块后面需要加一个逗号 ,

      1
      2
      3
      4
      5
      6
      7
      8
      {
      "type": "field",
      "inboundTag": [
      "proxy" // 匹配前面Shadowsocks入站的tag
      ],
      "outboundTag": "zhuzai_proxy_1", // 转发到前面Socks出站的tag
      "type": "field"
      },

      重要提示: inboundTag 必须与Shadowsocks入站中设置的tag ("proxy") 一致。outboundTag 必须与Socks出站中设置的tag ("zhuzai_proxy_1") 一致。粘贴后,请确保该块与下一个路由规则之间有逗号分隔。

  4. 保存并重启Xray服务:

7. 步骤四:验证链式代理是否成功

  1. 在V2RayN客户端中,将活动服务器切换回最初使用的那个链式代理节点。
  2. 右键点击该链式代理节点,选择“测试服务器真连接延迟”。如果现在显示一个正常的延迟,而不是-1,说明链式代理已生效。
  3. 打开浏览器访问 https://ip.sb
  4. 验证当前显示的IP地址是否是Xray核心配置中指定的Google Voice/Talkatone保号所需的落地IP地址

如果IP地址和延迟都符合预期,链式代理问题已成功解决!现在可以使用这个链式代理来保号Google Voice或Talkatone了。

8. 重要提示与注意事项

  • JSON格式严格: JSON配置对格式(特别是逗号、引号和花括号)非常敏感。任何小的错误都可能导致Xray启动失败。请仔细检查每个逗号的位置,确保它们位于数组元素之间,而不是最后一个元素之后。
  • 端口开放: 确保VPS的防火墙中开放了Shadowsocks入站端口(例如 48766)。
  • Tag名称一致性: 在配置过程中,tag(标识符)的名称非常重要,需要确保在入站、出站和路由规则中引用时保持一致。
  • 客户端差异: 这种二级代理的配置方法,是专门为解决V2RayN/Xray在Windows/安卓客户端上链式代理不兼容问题而设计的。