rico93 V2Ray 后端配置

手动安装, 面板节点设置

rico93 大佬写了一个可以和 SSPanel-Uim 对接的后端. 可以在面板管理小鸡设置了, 这里介绍后端手动配置流程. 项目 wiki 上手确实有点难

项目面板优先选择 rico 维护的面板. Anankke 的面板更新会延迟一点, 发现 bug 修复了也要等 pr 才能生效, dev 的分支 bug 也多

v2Ray 付费的后端: pay-v2ray-sspanel-v3-mod_Uim-plugin
项目变成私有的了 散了散了 v2rayv3/pay-v2ray-sspanel-v3-mod_Uim-plugin
免费的在 rico 咕咕咕群里有存档. 自己找

准备工作

必需条件

适用于 nginx + rico93 V2Ray 后端 + TLS + WS (+ Cloudflare 可选) 配置。基础条件和注意事项, 本文不作讲解

  1. Cloudflare 账号一下简称 CF
  2. 域名一个, Nameserver 填写 CF 的
  3. 使用 acme.sh 配置 TLS 证书 (cf_dns 认证)
  4. CentOS 7.6 使用 cat /etc/redhat-release 查看
  5. 启用 BBR
  6. nginx 1.16, 且完成 WS 配置
  7. 建议开启 SELinux 和防火墙 (可选)

rico93 后端配置

  1. rico 的免费或者付费后端 (建议付费给 rico 丢面包)
  2. rico 后端配置
  3. rico 面板节点设置

简单介绍

如果需要 Caddy 或者 Nginx 来反向代理, 请将第一个端口设定为 0, 让程序切成本地监听。V2Ray 的 grpc API 接口默认是 2333 (这 2333 不是连接端口)。这里不要修改

后端支持两种连接方式

  1. 数据库连接 ss-panel-v3-mod_UimSSRPanel
  2. webAPI ss-panel-v3-mod_Uim

rico93 后端安装

虽然支持使用脚本安装, 但是本文不用脚本安装

安装脚本

这里可以对应配置文件里面的参数

--panelurl https://google.com   # 表示 WEBAPI URL
--panelkey 55fUxDGFzH3n         # 表示 MU KEY
--nodeid 123456                 # 节点 ID, 可以为 0
--downwithpanel 1               # 前端面板异常下线时, 0 为节点端不下线、1 为节点跟着下线
--mysqlhost https://bing.com    # 数据库访问域名
--mysqldbname demo_dbname       # 数据库名
--mysqluser demo_user           # 数据库用户名
--mysqlpasswd demo_dbpassword   # 数据库密码
--mysqlport 3306                # 数据库连接端口
--speedtestrate 6               # 测速周期
--paneltype 0                   # 面板类型, 0 为 ss-panel-v3-mod、1 为 SSRPANEL
--usemysql 0                    # 连接方式, 0 为 webapi, 1 为 MySQL 数据库连接, 请注意 SSRPANEL 必须使用数据库连接
--lsdn xx.xx.xx.xx              # xx.xx.xx.xx 是你要设定的 dns 地址
--cfkey xxxx                    # cloudflare key
--cfemail xxxx                  # cloudflare email
--local xxx.zip                 # rico93 记忆中, 免费版的安装脚本用这个参数可以安装本地压缩包

手动安装

简单来讲就是把原有的 v2ray 可执行程序替换成 rico93 的后端程序

首先下载 rico93 的后端程序, 把原有的 v2ray 可执行程序替换成刚下载的后端. 注意关闭程序操作

  1. 使用官方的脚本安装 V2Ray 官方程序, 这样能省去很多设置步骤

    bash <(curl -L -s https://install.direct/go.sh)
    
  2. 下载 rico93 的后端文件 v2ray-linux-64.zip

  3. 解压后把 v2ray 替换到 /usr/bin/v2ray/v2ray

  4. 修改 /etc/v2ray/config.json 文件, 复制这个模板, 并配置结尾的 sspanel:{}

    {
      "api": {
        "services": [
          "HandlerService",
          "LoggerService",
          "StatsService",
          "RuleService"
        ],
        "tag": "api"
      },
      "inbounds": [
        {
          "listen": "127.0.0.1",
          "port": 2333,
          "protocol": "dokodemo-door",
          "settings": {
            "address": "127.0.0.1"
          },
          "tag": "api"
        }
      ],
      "log": {
        "access": "/var/log/v2ray/access.log",
        "error": "/var/log/v2ray/error.log",
        "loglevel": "info"
      },
      "outbounds": [
        {
          "protocol": "freedom",
          "settings": {}
        },
        {
          "protocol": "blackhole",
          "settings": {},
          "tag": "blocked"
        }
      ],
      "policy": {
        "levels": {
          "0": {
            "connIdle": 300,
            "downlinkOnly": 5,
            "handshake": 4,
            "statsUserDownlink": true,
            "statsUserUplink": true,
            "uplinkOnly": 2
          }
        },
        "system": {
          "statsInboundDownlink": false,
          "statsInboundUplink": false
        }
      },
      "reverse": {},
      "routing": {
        "settings": {
          "rules": [
            {
              "ip": [
                "0.0.0.0/8",
                "10.0.0.0/8",
                "100.64.0.0/10",
                "127.0.0.0/8",
                "169.254.0.0/16",
                "172.16.0.0/12",
                "192.0.0.0/24",
                "192.0.2.0/24",
                "192.168.0.0/16",
                "198.18.0.0/15",
                "198.51.100.0/24",
                "203.0.113.0/24",
                "::1/128",
                "fc00::/7",
                "fe80::/10"
              ],
              "outboundTag": "blocked",
              "protocol": [
                "bittorrent"
              ],
              "type": "field"
            },
            {
              "inboundTag": [
                "api"
              ],
              "outboundTag": "api",
              "type": "field"
            },
            {
              "domain": [
                "regexp:(api|ps|sv|offnavi|newvector|ulog\\.imap|newloc)(\\.map|)\\.(baidu|n\\.shifen)\\.com",
                "regexp:(.+\\.|^)(360|so)\\.(cn|com)",
                "regexp:(.?)(xunlei|sandai|Thunder|XLLiveUD)(.)"
              ],
              "outboundTag": "blocked",
              "type": "field"
            }
          ]
        },
        "strategy": "rules"
      },
      "stats": {},
      "sspanel": {
        "nodeid": 123456,
        "checkRate": 60,
        "SpeedTestCheckRate": 6,
        "panelUrl": "https://google.com",
        "panelKey": "55fUxDGFzH3n",
        "downWithPanel": 1,
        "mysql": {
          "host": "https://bing.com",
          "port": 3306,
          "user": "demo_user",
          "password": "demo_dbpassword",
          "dbname": "demo_dbname"
        },
        "paneltype": 0,
        "usemysql": 0
      }
    }
    

webAPI

  1. 修改面板 .config.php 文件 $System_Config['muKey']='55fUxDGFzH3n'; 设置一个复杂的密码
  2. 把面板地址填在 panelUrl
  3. 面板设置的 muKey 填写在 panelKey
  4. usemysql 这个后面要填 0
  5. 修改面板对应的 nodeid
  6. 配置结束w

数据库连接 (mysql)

  1. 修改 mysql 节点, 把 数据库地址, 数据库端口, 数据库用户名, 数据库密码, 数据库表名 依次填入
  2. usemysql 这个后面要填 1
  3. 修改面板对应的 nodeid
  4. 配置结束w

rico93 面板节点设置

  1. 添加/修改 一个节点
  2. 节点类型选择 V2RayV2Ray 中转
  3. 单端口多用户启用 -> 修改为 -> 只启用普通端口
  4. 填写节点地址, 按照下面格式

例子:

          1.1.1.1;   443;      4;  tls;     ws;   path=/v2ray|host=tls的域名|inside_port=10550|outside_port=443
没有CDN的域名或者IP;外部端口;AlterId;协议层;附加协议;额外参数

判断逻辑:

  • 如果 外部端口0 或者为 , 则默认监听本地 [127.0.0.1:inside_port] (inside_port 下方有解释)
  • 如果 外部端口 不是 0, 则监听 [0.0.0.0:外部端口], 此时无需设置 inside_port
  • 默认使用 Caddy 来提供 TLS, 控制代码不会生成 TLS 相关的配置。Caddyfile 可以在本项目的 /Docker/Caddy_V2ray/Caddyfile 文件中看到
  • outside_port 存在, 则 PHP 端会在生成订阅时候使用 outside_port 覆盖 port

额外参数: 额外参数使用 | 来分隔

inside_port    # 为内部监听端口, 当宿主机安装多个后端时, 请确保每个不一样
outside_port   # 用于重写外部端口, 当使用 WS + TLS 协议或 NAT 类型节点试使用
path           # 为访问路径, 当协议为 WS 时使用。
host           # 用于定义 headers, 当协议为 WS 时使用。
server         # 用于当节点藏在 CDN 后时覆盖第一个地址

配置示例

// TCP 示例, 请注意后面有两个分号
非CDN域名或者ip;非0;2;tcp;;

// WS
非CDN域名或者ip;8080;2;ws;;path=/v2ray|host=这里可以用加了CDN的域名

// WS + TLS (自动配置)
非CDN域名或者ip;非0;2;tls;ws;path=/v2ray|host=tls的域名|inside_port=10550

// WS + TLS (Caddy / nginx 提供)
非CDN域名或者ip;0;2;tls;ws;path=/v2ray|host=tls的域名|inside_port=10550|outside_port=443

// nat 鸡 ws
非CDN域名或者ip;非0;2;ws;;path=/v2ray|host=这里可以用加了CDN的域名

// nat 鸡 ws + tls (自动配置), 因为部分商家并不提供 80 & 443 访问, 所以请考虑手动申请 SSL 证书
非CDN域名或者ip;非0;2;tls;ws;path=/v2ray|host=tls的域名

// nat 鸡 ws + tls (Caddy 提供), 因为部分商家并不提供 80 & 443 访问, 所以请考虑手动申请 SSL 证书
非CDN域名或者ip;0;2;tls;ws;path=/v2ray|host=tls的域名|inside_port=10550|outside_port=11120

以下为 KCP 示例部分, 支持所有 V2Ray 的 type

// none: 默认值, 不进行伪装, 发送的数据是没有特征的数据包。
非CDN域名或者ip;非0;2;kcp;noop;

// srtp: 伪装成 SRTP 数据包, 会被识别为视频通话数据 (如 FaceTime)
非CDN域名或者ip;非0;2;kcp;srtp;

// utp: 伪装成 uTP 数据包, 会被识别为 BT 下载数据。
非CDN域名或者ip;非0;2;kcp;utp;

// wechat-video: 伪装成微信视频通话的数据包
非CDN域名或者ip;非0;2;kcp;wechat-video;

// dtls: 伪装成 DTLS 1.2 数据包
非CDN域名或者ip;非0;2;kcp;dtls;

// wireguard: 伪装成 WireGuard 数据包 (并不是真正的 WireGuard 协议)
非CDN域名或者ip;非0;2;kcp;wireguard;

实例:
(订阅) 有这个的是订阅时获取到的值. (后端) 后端用的值

服务器IP: 111.222.333.444
服务器域名: us.exp.com
v2ray(后端): 监听内网 127.0.0.1
v2ray(后端): 监听端口 9999
AlterId(订阅)(后端): 4
协议层(订阅)(后端): tls
附加协议(订阅)(后端): ws

额外参数: path=/v2ray|host=us.exp.com|inside_port=9999|server=us.exp.com|outside_port=443
ws路径(订阅)(后端): path=/v2ray
Host地址(订阅)(后端): host=us.exp.com
监听端口(后端): inside_port=9999
如果套了cf这里写套了cf的域名(订阅): server=us.exp.com
外网访问的端口(订阅): outside_port=443

完整地址:
111.222.333.444;0;4;tls;ws;path=/v2ray|host=us.exp.com|inside_port=9999|server=us.exp.com|outside_port=443

原文 - rico93 的 wiki

普通安装后端-安装 V2Ray, 仅适用于付费版
[配置] 作为 V2Ray 后端
仓库备份 v2ray-sspanel-v3-mod_Uim-plugin

最后更新于 2020-03-10
使用 Hugo 构建
主题 StackJimmy 设计