10 KiB
V2RayA
V2RayA 是一个支持全局透明代理的 V2Ray Linux 客户端,同时兼容SS、SSR协议。
V2RayA 致力于提供最简单的操作,满足绝大部分需求。
同时兼容V2Ray、SS、SSR意味着用户不再需要在不同工具之间切换,你甚至可以使用一个混合协议的订阅。
虽然 V2RayA 是一个 Web 客户端,它也支持以 PWA(Progressive Web App)的方式享受桌面端应用的体验。食用方法
得益于Web客户端的优势,你不仅可以将其用于本地计算机,还可以轻松地将它部署在路由器或NAS上。
目前V2RayA仅在部分Linux发行版进行过充分测试,在使用过程中如果遇到问题,欢迎提出issue。
项目地址:https://github.com/mzz2017/V2RayA
前端 demo: https://v2raya.mzz.pub
Build Status
name | docker image | travis-ci | netlify |
---|---|---|---|
V2RayA |
功能清单
已支持:
- 全局透明代理
- V2Ray 服务控制
- 导入 vmess、ss、ssr、订阅地址
- 手动添加/修改节点
- websocket、kcp、tcp、http、tls、shadowsocks、shadowsocksR 全支持 [SS/SSR支持清单]
- 测试节点 Ping、HTTP 时延
- 二维码、地址分享
- 支持PAC
- 服务端启动自动检查 PAC、订阅更新
- 多路复用、TCPFastOpen 支持
- 自动检查版本更新
- 自定义端口
待开发:
- 自定义 PAC 路由规则
- QUIC、auth_chain*支持
- 透明代理重定向备选方案
界面截图
节点
订阅源
设置
点击展开更多截图
使用自定义PAC时可以配置路由规则(待实现)
使用
从软件源安装
如下使用方法:
-
使用apt-get安装(debian、ubuntu)
请确保已正确安装 v2ray-core
我们提供了 Linux 下的一键安装脚本(在官方脚本基础上增加了ustc镜像源):
运行下面的指令下载并安装 V2Ray。当 yum 或 apt-get 可用的情况下,此脚本会自动安装 unzip 和 daemon。这两个组件是安装 V2Ray 的必要组件。如果你使用的系统不支持 yum 或 apt-get,请自行安装 unzip 和 daemon
curl -L -s https://github.com/mzz2017/V2RayA/raw/master/install/go.sh | sudo -E bash -s - --source ustc
准备完毕后:
# add public key wget -qO - https://apt.v2raya.mzz.pub/key/public-key.asc | sudo apt-key add - # add V2RayA's repository sudo add-apt-repository 'deb https://apt.v2raya.mzz.pub/ v2raya main' sudo apt-get update # install V2RayA sudo apt-get install v2raya
V2RayA服务端正常运行后,就可在Web-GUI使用了(或手动部署 Web-GUI)。
-
使用yay/yaourt安装(archlinux、manjaro)
由于v2raya发布在AUR中,而pacman不支持AUR,因此建议使用主流的yay或yaourt作为替代方案
# install yay sudo pacman -Sy yay
当yay或yaourt可用时,可通过yay或yaourt安装v2raya
# assume command yay is available yay v2raya
V2RayA服务端正常运行后,就可在Web-GUI使用了(或手动部署 Web-GUI)。
Docker方式
-
拉取源码,使用 docker-compose 部署。
git clone --depth=1 https://github.com/mzz2017/V2RayA.git cd V2RayA docker-compose up -d --build
-
使用 docker 命令部署。
# pull latest or stable version of v2raya docker pull mzz2017/v2raya:stable # pull latest version of v2ray docker pull v2ray/official # create volume to share data docker volume create v2raya_shared-data # run v2raya docker run -d \ --restart=always \ --privileged \ --network=host \ -v v2raya_shared-data:/etc/v2ray \ -v /etc/localtime:/etc/localtime:ro \ -v /etc/timezone:/etc/timezone:ro \ --name v2raya_backend \ mzz2017/v2raya:stable # run v2ray docker run -d \ --restart=always \ --privileged \ --network=host \ --pid=container:v2raya_backend \ -v v2raya_shared-data:/etc/v2ray \ --env V2RAY_LOCATION_ASSET=/etc/v2ray \ --name v2raya_v2ray \ v2ray/official \ sh -c "cp -rfu /usr/bin/v2ray/* /etc/v2ray/ && v2ray -config=/etc/v2ray/config.json"
如果你使用MacOS,docker命令会略有不同,参见#10
二进制文件、安装包
请确保已正确安装 v2ray-core
我们提供了 Linux 下的一键安装脚本(在官方脚本基础上增加了ustc镜像源):
运行下面的指令下载并安装 V2Ray。当 yum 或 apt-get 可用的情况下,此脚本会自动安装 unzip 和 daemon。这两个组件是安装 V2Ray 的必要组件。如果你使用的系统不支持 yum 或 apt-get,请自行安装 unzip 和 daemon
curl -L -s https://github.com/mzz2017/V2RayA/raw/master/install/go.sh | sudo -E bash -s - --source ustc
准备完毕后,可下载Releases中的二进制文件启动V2RayA服务端,或下载安装包进行安装。
V2RayA服务端正常运行后,就可在Web-GUI使用了(或手动部署 Web-GUI)。
自行编译运行
当然,你也可以选择拉取源码,通过 golang 启动:
该方法同样需要正确安装v2ray-core,详情见上
git clone https://github.com/mzz2017/V2RayA.git
cd V2RayA/service
export GOPROXY=https://goproxy.io # set goproxy.io as the proxy of go modules
sudo go run main.go
注意,尽管 golang 具有交叉编译的特性,但由于项目使用了大量 linux commands,导致该方法仍然不支持 windows。若想在 windows 体验,可尝试借助 Docker 或 WSL。
在路由器使用
分为以下几种情况:
若v2ray能够以daemon存在
能够以daemon存在即在正确安装v2ray后,使用下述命令之一能够得到正确的反馈:
# if systemctl is available
systemctl status v2ray
# else if service is available
service v2ray status
那么可从软件源安装,或下载releases中的对应安装包进行安装。
若v2ray能够运行于docker
可参照Docker方式使用
通用方法
-
请自行安装v2ray,并确保v2ray、v2ctl均被包含在PATH中,否则请将上述文件放于
echo $PATH
中的任一目录下。 -
下载releases中最新版本的对应CPU架构的二进制文件,或自行使用golang交叉编译。
-
使用参数
--config=V2RAYA_CONFIG_PATH --mode=common
启动V2RayA服务端,参数含义可执行--help
查看。请将上述V2RAYA_CONFIG_PATH替换为一个可读写的,并且你喜欢的路径。
开放端口
默认使用的四个端口分别为:
2017: V2RayA 后端端口
20170: SOCKS 协议
20171: HTTP 协议
20172: 带 PAC 的 HTTP 协议
其他端口:
12345: tproxy(全局透明代理所需)
12346: ssr server(SS、SSR所需)
在不同运行环境下程序表现将不同
由于 docker 容器对 systemd 的限制性,在 docker 中将采用 pid 共享进程命名空间,volumes 共享存储空间,更新配置后通过结束进程触发 v2ray 容器的重启来更新配置,以无 inbounds 的配置代替断开连接,这是一种折中方案,会有如下影响:
- 在更换配置时略有卡顿
开发相关
在 docker 环境中开发
docker-compose -f docker-compose.dev.yml up --build
gin 会监测文件改动并热重载,见codegangsta/gin。
已知问题
在使用 GoLand 进行开发调试时,如果开启了全局透明代理,由于进程捕获不了 GoLand 的结束 signal,在进程退出后将无法恢复正常网络,因此建议使用killall ___go_build_V2R
来结束进程。如已无法正常上网,恢复网络的一种简单可行方法是重新启动程序并关闭全局透明代理。不开启全局透明代理时,GoLand调试将不受影响。
注意
-
程序不会将任何用户数据保存在云端,所有用户数据存放在用户本地配置文件中。若服务端运行于 docker,则当 docker 容器被清除时配置也将随之消失,请做好备份。
-
不要将本项目用于不合法用途。