V2rayA的安装

Author Avatar
半局局局局局
发表:2024-02-24 16:10:00
修改:2024-02-24 16:10:48

简介

一个易用而强大的,跨平台的 V2Ray 客户端。

Alpine

v2rayA 的功能依赖于 V2Ray 内核,因此需要安装内核。

安装 V2Ray 内核

如果你已经安装了内核,可以跳过此节。

方法 1:从软件包管理器安装

从 Alpine Linux 3.15 开始,V2Ray 已经进入了 Community 源。编辑 apk 的配置以启用 Community 源:

vi /etc/apk/repositories
http://dl-cdn.alpinelinux.org/alpine/v3.15/main
http://dl-cdn.alpinelinux.org/alpine/v3.15/community

然后安装 V2Ray:

apk update && apk add v2ray

方法 2:V2Ray / Xray 的官方脚本

V2Ray 安装参考:https://github.com/v2fly/alpinelinux-install-v2ray

Xray 安装参考:https://github.com/XTLS/alpinelinux-install-xray

安装 v2rayA

下载二进制可执行文件

根据你的平台,从 Release 获取具有 v2raya_linux_xxx 字样的无后缀名文件,并将其重命名为 v2raya,再把 v2raya 移动到 /usr/local/bin 并给予可执行权限。

示例:

version=$(curl -s https://apt.v2raya.org/dists/v2raya/main/binary-amd64/Packages|grep Version|cut -d' ' -f2)
curl -L https://github.com/v2rayA/v2rayA/releases/download/v$version/v2raya_linux_x64_$version --output v2raya
mv ./v2raya /usr/local/bin/ && chmod +x /usr/local/bin/v2raya

可以使用 arch 命令来查询你的平台架构,比如 x86_64 的架构就需要下载 x64 的版本。

创建服务文件

在 /etc/init.d/ 目录下面新建一个名为 v2raya 的文本文件,然后编辑,添加内容如下:

#!/sbin/openrc-run

name="v2rayA"
description="A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan, Tuic and Juicity protocols"
command="/usr/local/bin/v2raya"
error_log="/var/log/v2raya/error.log"
pidfile="/run/${RC_SVCNAME}.pid"
command_background="yes"
rc_ulimit="-n 30000"
rc_cgroup_cleanup="yes"

depend() {
    need net
    after net
}

start_pre() {
   export V2RAYA_CONFIG="/usr/local/etc/v2raya"
   export V2RAYA_LOG_FILE="/tmp/v2raya/access.log"
   if [ ! -d "/tmp/v2raya/" ]; then
     mkdir "/tmp/v2raya"
   fi
   if [ ! -d "/var/log/v2raya/" ]; then
   ln -s "/tmp/v2raya/" "/var/log/"
   fi
}

保存文件,然后给予此文件可执行权限。

安装 iptables 模块

apk add iptables ip6tables

运行 v2rayA 并开机启动(可选)

rc-service v2raya start
rc-update add v2raya

查看日志

tail -f /var/log/v2raya/access.log

其它操作

指定 WebDir

在服务文件的 command_args 中加上一个参数 --webdir,然后指定到 Web 文件所在目录即可。比如:

command_args=" --webdir=/usr/local/etc/v2raya/web"

指定内核

在服务文件的 command_args 中加上一个参数 --v2ray-bin,然后指定到内核所在目录即可。比如:

command_args=" --v2ray-bin=/usr/local/bin/xray"

Arch Linux / Manjaro

v2rayA 的功能依赖于 V2Ray 内核,因此需要安装内核。

安装 V2Ray 内核

从官方源安装 v2ray

安装 v2rayA

从 AUR 安装 v2rayav2raya-binv2raya-git 即可。

Debian / Ubuntu

v2rayA 的功能依赖于 V2Ray 内核,因此需要安装内核。

安装 v2rayA

方法一:通过软件源安装

添加公钥

wget -qO - https://apt.v2raya.org/key/public-key.asc | sudo tee /etc/apt/keyrings/v2raya.asc

添加 V2RayA 软件源

echo "deb [signed-by=/etc/apt/keyrings/v2raya.asc] https://apt.v2raya.org/ v2raya main" | sudo tee /etc/apt/sources.list.d/v2raya.list
sudo apt update

安装 V2RayA

sudo apt install v2raya v2ray ## 也可以使用 xray 包

方法二:手动安装 deb 包

Release 下载 v2rayA 的 deb 包 后可以使用 Gdebi、QApt 等图形化工具来安装,也可以使用命令行:

sudo apt install /path/download/installer_debian_xxx_vxxx.deb ### 自行替换 deb 包所在的实际路径

V2Ray / Xray 的 deb 包可以在 APT 软件源中 找到。

启动 v2rayA / 设置 v2rayA 自动启动

从 1.5 版开始将不再默认为用户启动 v2rayA 及设置开机自动。

  • 启动 v2rayA

    sudo systemctl start v2raya.service
  • 设置开机自动启动

    sudo systemctl enable v2raya.service

使用 nftables

如果你的系统上已经有了 nftables 防火墙,那么 v2rayA 将优先使用 nft 命令来创建防火墙规则。可以使用 --nftables-support 参数或者 V2RAYA_NFTABLES_SUPPORT 来进行控制是否开启 nftables 支持。

Docker

Docker 镜像内集成了 V2Ray 内核,因此内核无需额外被安装。

Docker 是一个以服务生产环境而开发的应用平台,在使用 Docker 部署之时,我们相信你已经掌握了运维一台服务器所必须的知识,同时也理解了容器化的概念与 Docker 的基础操作。如若不然,请使用其它更加简单的部署方式。

以下命令假定你在 root 用户下操作,如果你所使用的用户不是 root,那么你可能需要 sudo 或 doas 命令来进行提权操作。

方式一:始终使用最新版

获取镜像

docker pull mzz2017/v2raya

运行 v2rayA

停止正在运行的版本(如果存在):

docker container stop v2raya
docker container rm v2raya

运行 v2rayA:

  1. V2RAYA_V2RAY_BIN 的值应当是 /usr/local/bin/v2ray 或 /usr/local/bin/xray,默认的核心是 xray。

  2. 如果你的宿主系统使用原生的 nftables,那么就把 V2RAYA_NFTABLES_SUPPORT 设置为 on

  3. 如果你的宿主系统使用 iptables,那么可以通过 IPTABLES_MODE 变量来指定后端,将该变量的值设置为 nftables 将使用 nft 后端,设置为 legacy 将使用传统后端。

以下是一个使用传统后端的示例:

docker run -d \
  --restart=always \
  --privileged \
  --network=host \
  --name v2raya \
  -e V2RAYA_LOG_FILE=/tmp/v2raya.log \
  -e V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray \
  -e V2RAYA_NFTABLES_SUPPORT=off \
  -e IPTABLES_MODE=legacy \
  -v /lib/modules:/lib/modules:ro \
  -v /etc/resolv.conf:/etc/resolv.conf \
  -v /etc/v2raya:/etc/v2raya \
  mzz2017/v2raya

如果你使用 macOS 或其他不支持 host 模式的环境,在该情况下无法使用全局透明代理,或者你不希望使用全局透明代理,docker 命令会略有不同:

docker run -d \
  -p 2017:2017 \
  -p 20170-20172:20170-20172 \
  --restart=always \
  --name v2raya \
  -e V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray \
  -e V2RAYA_LOG_FILE=/tmp/v2raya.log \
  -v /etc/v2raya:/etc/v2raya \
  mzz2017/v2raya

查看状态:

docker container stats v2raya

方式二:获取指定版本

Docker 允许用户同时下载不同版本的 v2rayA。通过错开端口等操作,用户还可以运行多个不同版本的 v2rayA。

获取镜像

获取最新的版本号:

Latest_version=$(curl -L "https://api.github.com/repos/v2rayA/v2rayA/releases/latest" | grep 'tag_name' | awk -F '"' '{print $4}' | awk -F 'v' '{print $2}')
echo $Latest_version

如果你不需要最新的版本,你也可以访问 Docker 镜像仓库 查找所需的版本。比如,你需要 1.5.8 版本,那么将 $Latest_version 替换为你所需的版本即可。

获取 Docker 镜像:

docker pull mzz2017/v2raya:$Latest_version

运行 v2rayA

使用 docker 运行 v2rayA:

docker run -d \
  --restart=always \
  --privileged \
  --network=host \
  --name v2raya \
  -e V2RAYA_LOG_FILE=/tmp/v2raya.log \
  -e V2RAYA_V2RAY_BIN=/usr/local/bin/v2ray \
  -e V2RAYA_NFTABLES_SUPPORT=off \
  -e IPTABLES_MODE=legacy \
  -v /lib/modules:/lib/modules:ro \
  -v /etc/resolv.conf:/etc/resolv.conf \
  -v /etc/v2raya:/etc/v2raya \
  mzz2017/v2raya:$Latest_version

如果你使用 MacOSX 或其他不支持 host 模式的环境,在该情况下无法使用全局透明代理,或者你不希望使用全局透明代理,docker 命令会略有不同:

docker run -d \
  -p 2017:2017 \
  -p 20170-20172:20170-20172 \
  --restart=always \
  --name v2raya \
  -e V2RAYA_LOG_FILE=/tmp/v2raya.log \
  -v /etc/v2raya:/etc/v2raya \
  mzz2017/v2raya:$Latest_version

查看状态:

docker container stats v2raya

更新 v2rayA

使用 获取镜像 中所提到的命令获取最新版本的镜像,然后停止当前容器:

docker container stop v2raya
docker container rm v2raya

最后使用 运行 v2rayA 里面所提到的命令运行新版本 v2rayA。更新 v2rayA 之后,你可以考虑删除旧版本镜像。

Linux 后备安装方式

此处列举了一些后备安装方法,使用这些方法之前,请确认这些方法是否与你的操作系统兼容。

方法一:Snap 商店

Snap 是 Ubuntu 开发的通用软件包格式,可以在大多数 Linux 发行版上运行。要通过 Snap 商店安装 v2rayA,请访问:

https://snapcraft.io/v2raya

Snap 软件包内已经包含了 v2ray core,用户无需额外安装核心。

Snap 包的打包详情可以在 GitHub 上 查看。

方法二:安装脚本

脚本仓库:https://github.com/v2rayA/v2rayA-installer

与 v2ray core 一起安装:

sudo sh -c "$(wget -qO- https://hubmirror.v2raya.org/v2rayA/v2rayA-installer/raw/main/installer.sh)" @ --with-v2ray

与 xray core 一起安装:

sudo sh -c "$(wget -qO- https://hubmirror.v2raya.org/v2rayA/v2rayA-installer/raw/main/installer.sh)" @ --with-xray

如果你更倾向于使用 curl 而不是 wget,那么把 wget -qO- 换成 curl -Ls 即可。

方法三:手动安装

下载 v2ray/xray core

v2ray core: https://github.com/v2fly/v2ray-core
xray core: https://github.com/XTLS/Xray-core

下载的时候需要注意你的 CPU 架构,下载好之后解开压缩包,然后把可执行文件复制到 /usr/local/bin/ 或 /usr/bin/(推荐前者),把几个 dat 格式的文件复制到 /usr/local/share/v2ray/ 或者 /usr/share/v2ray/(推荐前者,xray 用户记得把文件放到 xray 文件夹),最后授予 v2ray/xray 可执行权限。

以下是用 bash 命令操作的示例(假设命令在 root 用户下运行):

pushd /tmp
wget https://github.com/v2fly/v2ray-core/releases/latest/download/v2ray-linux-64.zip
unzip v2ray-linux-64.zip -d ./v2ray
mkdir -p /usr/local/share/v2ray && cp ./v2ray/*dat /usr/local/share/v2ray
install -Dm755 ./v2ray/v2ray /usr/local/bin/v2ray
rm -rf ./v2ray v2ray-linux-64.zip
popd

下载 v2rayA

v2rayA 只有一个单独的二进制,下载下来放到 /usr/local/bin/ 或 /usr/bin/(推荐前者)即可。和下载 v2ray 一样,下载的时候需要注意你的 CPU 架构。

pushd /tmp
version="$(wget -qO- https://apt.v2raya.org/dists/v2raya/main/binary-amd64/Packages | grep Version cut -d' ' -f2)"
wget https://github.com/v2rayA/v2rayA/releases/download/v$version/v2raya_linux_x64_$version
install -Dm755 ./v2raya_linux_x64_$version /usr/local/bin/v2raya
popd

运行

一般情况下,在终端里面直接运行 v2raya 命令即可,配置文件夹默认会是 /etc/v2raya/。不过,为了方便,在 Linux 系统上一般采用服务的形式运行 v2rayA.

Systemd 服务

注意:

  1. 为符合 FHS 的要求,本服务示例把配置文件夹修改到了 /usr/local/etc/v2raya/

  2. 可创建 /etc/systemd/system/v2raya.service.d/ 文件夹。并在其中保留你的自定义配置。

[Unit]
Description=A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan, Tuic and Juicity protocols
Documentation=https://v2raya.org
After=network.target nss-lookup.target iptables.service ip6tables.service nftables.service
Wants=network.target

[Service]
Environment="V2RAYA_CONFIG=/usr/local/etc/v2raya"
Environment="V2RAYA_LOG_FILE=/tmp/v2raya.log"
Type=simple
User=root
LimitNPROC=500
LimitNOFILE=1000000
ExecStart=/usr/local/bin/v2raya
Restart=on-failure

[Install]
WantedBy=multi-user.target

文件需要保存到 /etc/systemd/system/v2raya.service,然后执行:

systemctl daemon-reload
systemctl enable --now v2raya

OpenRC 服务脚本

注意:

  1. 为符合 FHS 的要求,本服务示例把配置文件夹修改到了 /usr/local/etc/v2raya

  2. 复制脚本的时候必须保留第一行,否则会报错。

#!/sbin/openrc-run

name="v2rayA"
description="A web GUI client of Project V which supports VMess, VLESS, SS, SSR, Trojan, Tuic and Juicity protocols"
command="/usr/local/bin/v2raya"
error_log="/var/log/v2raya/error.log"
pidfile="/run/${RC_SVCNAME}.pid"
command_background="yes"
rc_ulimit="-n 30000"
rc_cgroup_cleanup="yes"

depend() {
    need net
    after net
}

start_pre() {
   export V2RAYA_CONFIG="/usr/local/etc/v2raya"
   export V2RAYA_LOG_FILE="/tmp/v2raya/access.log"
   if [ ! -d "/tmp/v2raya/" ]; then
     mkdir "/tmp/v2raya"
   fi
   if [ ! -d "/var/log/v2raya/" ]; then
   ln -s "/tmp/v2raya/" "/var/log/"
   fi
}

文件需要保存到 /etc/init.d/v2raya,并授予可执行权限。

其它 init 系统

  1. runit: http://smarden.org/runit/

  2. s6: https://skarnet.org/software/s6-linux-init/

  3. dinit: https://github.com/davmac314/dinit

  4. more…

这些 init 系统暂无可用的示例,建议查看官网文档自行撰写服务脚本或服务配置文件。

macOS

v2rayA 的功能依赖于 V2Ray 核心,因此需要安装内核。

v2rayA 与 v2ray 尚未支持 macOS / FreeBSD 之上的 Packet Filter 防火墙,因此透明代理无法启用。安全起见,本 wiki 将以非 root 权限来运行 v2rayA。

v2rayA 使用 networksetup 命令来设置 macOS 上的系统代理,请确保你运行 v2rayA 的账户是 admin 组的成员。关于如何管理 macOS 下的用户组,你可以参阅 Apple 的官方文档

建议从 brew 安装 v2ray 核心,如此 v2rayA 将自动使用你电脑上现有的 v2ray。如果不从 brew 安装核心,你将需要手动指定核心所在路径。

使用 Homebrew 安装

请确保安装了 Homebrew 并工作正常。

安装

添加 v2rayA 的 Tap:

brew tap v2raya/v2raya

安装 v2rayA:

brew install v2raya/v2raya/v2raya

v2ray 设置为了 v2rayA 的依赖包,如此,v2rayA 将正确运行。

运行

安装完成之后可以在终端通过 v2raya --lite 命令运行,也可以启动服务:

brew services start v2raya

手动安装

创建目录

这些目录可能已经存在,创建之前请注意检查。

二进制所在目录:

sudo mkdir /usr/local/bin/

数据文件所在目录:

sudo mkdir -p /usr/local/share/v2ray/

服务文件所在目录:

mkdir ~/Library/LaunchAgents/

下载 v2rayA

从 GitHub Releases 或 GitHub Action 下载适用于 macOS 的二进制文件,然后重命名为 v2raya,并将其保存到 /usr/local/bin/

示例:

x86_64:

sudo curl -L https://github.com/v2rayA/v2rayA/releases/download/v1.5.7/v2raya_darwin_x64_1.5.7 -o /usr/local/bin/v2raya

arm64:

sudo curl -L https://github.com/v2rayA/v2rayA/releases/download/v1.5.7/v2raya_darwin_arm64_1.5.7 -o /usr/local/bin/v2raya

下载 V2Ray 核心 / Xray 核心

安装 V2Ray:https://www.v2fly.org/guide/install.html 安装 Xray:https://xtls.github.io/document/install.html

解压压缩包后将其中的文件移动到对应目录:

sudo mv v2ray /usr/local/bin/
sudo mv *dat /usr/local/share/v2ray/

给予权限

给予 v2rayA 与 v2ray 可执行权限:

sudo chmod 755 /usr/local/bin/v2raya
sudo chmod 755 /usr/local/bin/v2ray
sudo chmod 755 /usr/local/bin/v2ctl

如果遇到 macOS 的安全限制,那么需要运行以下命令:

sudo xattr -d -r com.apple.quarantine  /usr/local/bin/*

建立服务文件

新建服务文件并保存到 ~/Library/LaunchAgents/

示例:

nano ~/Library/LaunchAgents/org.v2raya.v2raya.plist

内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
      <key>EnvironmentVariables</key>
      <dict>
            <key>V2RAYA_LOG_FILE</key>
            <string>/tmp/v2raya.log</string>
            <key>V2RAYA_V2RAY_BIN</key>
            <string>/usr/local/bin/v2ray</string>
      </dict>
      <key>KeepAlive</key>
      <true/>
      <key>Label</key>
      <string>org.v2raya.v2raya</string>
      <key>ProgramArguments</key>
      <array>
            <string>/usr/local/bin/v2raya</string>
            <string>--lite</string>
      </array>
      <key>RunAtLoad</key>
      <true/>
</dict>
</plist>

运行

launchctl load ~/Library/LaunchAgents/org.v2raya.v2raya.plist

如果要关掉 v2rayA 服务,将上述命令从 load 替换为 unload 即可。可以通过 Web 前端查看日志。

OpenWrt

v2rayA 的功能依赖于 V2Ray 核心,需要安装后才能正常使用。

通过 v2rayA 自建软件源安装

参考:

  1. v2rayA for OpenWrt 仓库主页

  2. v2rayA OSDN 主页

通过 OpenWrt 官方软件源安装

用户友好的 LuCI 应用 luci-app-v2raya 已被上游合并,使用 OpenWrt 23.05 或更高版本的用户可以直接从软件源安装。

opkg update
opkg install luci-i18n-v2raya-zh-cn v2ray-geoip v2ray-geosite

软件包 v2raya 已被上游合并,使用 OpenWrt 21.02 或更高版本的用户可以直接从软件源安装。

opkg update
opkg install v2raya

由于包管理器 opkg 对依赖的处理方式欠佳,目前 v2rayA 默认依赖于 Xray-core。

如果你打算使用 V2Ray,可以在安装时加入 --nodeps 参数,并自行安装对应的依赖。

在同时存在 V2Ray 与 Xray 的情况下,v2rayA 将优先使用后者。

手动安装

安装 V2Ray / Xray 内核

软件包 xray-core已在 OpenWrt 21.02 及之后的版本中可用。

软件包 v2ray-core 已在 OpenWrt 22.03 及之后的版本中可用。

首先安装软件包 unzip 与 wget,然后从 Github Releases 下载 V2Ray 核心并将其保存到 /usr/bin/,最后赋予二进制文件可执行权限。

例如:

opkg update; opkg install unzip wget-ssl
wget https://github.com/v2fly/v2ray-core/releases/download/v4.40.1/v2ray-linux-64.zip
unzip -d v2ray-core v2ray-linux-64.zip
cp v2ray-core/v2ray v2ray-core/v2ctl /usr/bin
chmod +x /usr/bin/v2ray; chmod +x /usr/bin/v2ctl

Xray 核心可以用类似的方法安装。

擦亮眼睛

格外注意你的 OpenWrt 设备的架构,不要下载到不适用于你设备的版本,否则核心将无法运行。

安装 v2rayA

安装依赖包与内核模块

OpenWrt 22.03 或更新版本:

opkg update
opkg install \
    ca-bundle \
    ip-full \
    kmod-nft-tproxy

OpenWrt 21.02 或更早版本:

opkg update
opkg install \
    ca-bundle \
    ip-full \
    iptables-mod-conntrack-extra \
    iptables-mod-extra \
    iptables-mod-filter \
    iptables-mod-tproxy \
    kmod-ipt-nat6

下载 v2rayA 二进制文件

从 Github Releases 下载最新版本对应处理器架构的二进制文件,然后移动到 /usr/bin/ 并赋予可执行权限:

wget https://github.com/v2rayA/v2rayA/releases/download/v2.0.5/v2raya_linux_x64_2.0.5 -O v2raya
mv v2raya /usr/bin/v2raya && chmod +x /usr/bin/v2raya

下载配置文件和服务文件

wget https://raw.githubusercontent.com/openwrt/packages/master/net/v2raya/files/v2raya.config -O /etc/config/v2raya
wget https://raw.githubusercontent.com/openwrt/packages/master/net/v2raya/files/v2raya.init -O /etc/init.d/v2raya
chmod +x /etc/init.d/v2raya

启用并运行 v2rayA

uci set v2raya.config.enabled='1'
uci commit v2raya
/etc/init.d/v2raya enable
/etc/init.d/v2raya start

常见故障

PPPoE 拨号问题

如果你通过 PPPoE 拨号上网,那么你可能会遇到 v2rayA 的透明代理开启一段时间后没有网络连接的故障。解决方法是,使用 v2rayA 的时候不要删除或替换“网络 > 接口”默认的 WAN 连接(该连接使用 DHCP 协议),而应该新建一个接口来进行拨号。新建的 PPPoE 拨号接口需要添加到名为 wan 的防火墙区域。

该问题已经于 v2.0.2 及之后的版本中修复。

防止DNS污染对局域网设备不生效

编辑 “接口 -> LAN -> 使用自定义的 DNS 服务器” 为 “127.2.0.17” 即可让局域网内的其他设备也享受到 “防止DNS污染” 的效果

部分设备无法运行

v2rayA 所用的数据库模块 目前不支持基于 MIPS 的芯片,这部分设备(比如一些便宜的 Wi-Fi 路由器、国产龙芯电脑等)可能无法正确初始化数据库,从而导致无法使用。

该问题已经于 v1.5.9.1698.1 及之后的版本中修复。

内核模块不全的操作系统将无法按预期工作,建议使用官方 OpenWrt 或者第三方发行分支 ImmortalWrt。

Podman

确认你的发行版使用 systemd,如果使用其它 init 系统则需要你手动配置开机自动启动。

此页面的内容适用于:

  • Fedora Silverblue / Kinoite

  • SLE Micro / openSUSE Leap Micro

  • openSUSE MicroOS

但同时也适用于普通发行版,如:

  • Fedora Workstation

  • openSUSE Leap / Tumbleweed

  • CentOS Stream

安装 Podman

Podman 已经在一部分发行版中预装了。若你的发行版没有预装Podman,请参考具体安装步骤:

https://podman.io/getting-started/installation.html#installing-on-linux

配置

你可以使用rootful模式 或者rootless模式 。

Rootful 模式

如果你想使用透明代理、路由转发等功能,则需要使用 rootful 模式。

下载容器镜像

直接下载镜像:

sudo podman pull \
    docker.io/mzz2017/v2raya

如果你的设备无法直接访问到 Docker Hub,可以使用现有的 HTTP 代理下载镜像:

sudo env \
HTTP_PROXY=http://<Address>:<Port> \
HTTPS_PROXY=http://<Address>:<Port> \
  podman pull \
    docker.io/mzz2017/v2raya

你也可以使用 sudo podman image import 导入其它来源提供的v2rayA容器镜像。

配置 iptables 自动加载

sudo mkdir /etc/modules-load.d
cat << 'EOF' | sudo tee /etc/modules-load.d/ip_tables.conf >> /dev/null 2>&1
ip_tables
ip6_tables
iptable_mangle
ip6table_mangle
EOF
sudo modprobe ip_tables ip6_tables iptable_mangle ip6table_mangle

创建 SELinux 规则

如果你的发行版不使用 SELinux,可以跳过这一节。
跳转:创建容器

SELinux 会拦截一部分 v2rayA 的行为,导致透明代理不能正常使用。

安全警告:请确保当前工作目录不会被任何其它低权限用户程序写入。

创建规则:

cat << 'EOF' | tee my_v2raya_container.cil >> /dev/null 2>&1
(block v2raya_container
  (type process)
  (type socket)
  (roletype system_r process)
  (typeattributeset domain ( process ))
  (typeattributeset container_domain ( process ))
  (typeattributeset svirt_sandbox_domain ( process ))
  (typeattributeset mcs_constrained_type ( process ))
  (typeattributeset file_type ( socket ))
  (allow process socket ( sock_file ( create open getattr setattr read write rename link unlink ioctl lock append )))
  (allow process proc_type ( file ( getattr open read )))
  (allow process cpu_online_t ( file ( getattr open read )))
  (allow container_runtime_t process ( key ( create link read search setattr view write )))
  (allow process kernel_t ( system ( module_request )))
  (allow process dns_port_t ( udp_socket ( name_bind )))
  (allow process ephemeral_port_t ( tcp_socket ( name_connect )))
  (allow process http_port_t ( tcp_socket ( name_connect )))
  (allow process node_t ( tcp_socket ( node_bind )))
  (allow process node_t ( udp_socket ( node_bind )))
  (allow process ntp_port_t ( udp_socket ( name_bind )))
  (allow process reserved_port_t ( udp_socket (name_bind )))
  (allow process self ( netlink_route_socket ( nlmsg_write )))
  (allow process self ( tcp_socket ( listen )))
  (allow process unreserved_port_t ( tcp_socket ( name_bind name_connect )))
  (allow process unreserved_port_t ( udp_socket ( name_bind )))
)
EOF

加载这个规则:

sudo semodule -i my_v2raya_container.cil

创建容器

sudo mkdir -p /etc/v2raya
sudo podman create -it \
  --name v2raya \
  --restart=always \
  --label io.containers.autoupdate=registry \
  --cgroup-parent=machine-v2raya.slice \
  --security-opt no-new-privileges \
  --security-opt label=type:v2raya_container.process \
  --cap-drop all --cap-add cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw \
  --network=host \
  --memory=500M \
  --volume /etc/v2raya:/etc/v2raya:z \
  docker.io/mzz2017/v2raya

配置文件保存在 /etc/v2raya 中。

创建服务

bash -c \
  "sudo mkdir -p /etc/systemd/system \
  && cd /etc/systemd/system \
  && sudo podman generate systemd --new --files --name v2raya \
  && sudo systemctl daemon-reload"

开启容器自动更新

sudo systemctl enable --now podman-auto-update.timer

开启 v2rayA 服务

现在你可以用systemd控制v2rayA服务了。

查看服务状态:

systemctl status container-v2raya.service

设置开机自启动,并且现在开始运行:

sudo systemctl enable --now container-v2raya.service

打开浏览器,访问http://localhost:2017 。

移除容器

sudo systemctl disable --now container-v2raya.service
sudo rm /etc/systemd/system/container-v2raya.service
sudo systemctl daemon-reload

你也可以选择删除v2rayA的配置文件:

sudo rm -r /etc/v2raya

如果您不再想使用v2rayA,移除v2rayA镜像:

sudo podman image rm docker.io/mzz2017/v2raya

以及移除SELinux规则 / iptables自动加载:

sudo semodule -r my_v2raya_container
sudo rm /etc/modules-load.d/ip_tables.conf

Rootless 模式

如果你只需要一个 SOCKS5/HTTP 代理端口,则可以让容器运行于普通用户权限,进一步降低风险。

下载容器镜像

直接下载镜像:

podman pull \
    docker.io/mzz2017/v2raya

如果你的设备无法直接访问到 Docker Hub,可以使用现有的HTTP代理下载镜像:

env \
HTTP_PROXY=http://<Address>:<Port> \
HTTPS_PROXY=http://<Address>:<Port> \
  podman pull \
    docker.io/mzz2017/v2raya

你也可以使用 podman image import 导入其它来源提供的v2rayA容器镜像。

创建容器

mkdir -p ~/.config/v2raya
podman create -it \
  --name v2raya \
  --restart=always \
  --label io.containers.autoupdate=registry \
  --cgroup-parent=v2raya.slice \
  --security-opt no-new-privileges \
  --cap-drop all \
  --network host \
  --memory=500M \
  --volume ~/.config/v2raya:/etc/v2raya:z \
  docker.io/mzz2017/v2raya

--cgroup-parent 使用 systemd slice 依赖内核启动参数 systemd.unified_cgroup_hierarchy=1。 若出现 systemd slice received as cgroup parent when using cgroupfs 错误,请手动添加对应的启动参数。

配置文件保存在 ~/.config/v2raya 中。

创建服务

bash -c \
  "mkdir -p ~/.config/systemd/user \
  && cd ~/.config/systemd/user \
  && podman generate systemd --new --files --name v2raya \
  && systemctl --user daemon-reload"

开启容器自动更新

systemctl --user enable --now podman-auto-update.timer

开启 v2rayA 服务

现在你可以用systemd控制v2rayA服务了。

查看服务状态:

systemctl --user status container-v2raya.service

设置开机自启动,并且现在开始运行:

systemctl --user enable --now container-v2raya.service

打开浏览器,访问http://localhost:2017 。

然后你可以在系统设置中使用代理: http://localhost:20171 。

v2rayA服务会跟随用户会话一起启动/停止。如果你想让v2rayA随系统启动,并且在用户会话结束后保持运行,使用以下命令:

loginctl enable-linger

移除容器

systemctl --user disable --now container-v2raya.service
rm ~/.config/systemd/user/container-v2raya.service
systemctl --user daemon-reload

你也可以选择删除v2rayA的配置文件:

rm -r ~/.config/v2raya

如果您不再想使用v2rayA,移除v2rayA镜像:

podman image rm docker.io/mzz2017/v2raya

关闭linger:

loginctl disable-linger

RedHat / openSUSE

v2rayA 的功能依赖于 V2Ray 内核,因此需要安装内核。

openSUSE MicroOS, SLE Micro, Fedora Silverblue / Kinoite

如果你的发行版拥有不可写的运行时文件系统结构,请不要使用RPM安装v2rayA。

跳转:Podman教程 。

Fedora 及 CentOS Stream

添加 copr 源

sudo dnf copr enable zhullyb/v2rayA

安装 V2Ray 内核

sudo dnf install v2ray

安装 v2rayA

sudo dnf install v2raya

Fedora Silverblue / Kinoite

你应该参照Podman教程。请避免在Silverblue / Kinoite的宿主机中直接安装软件。

如果你依然要直接安装,以下是在宿主机中安装v2rayA的方法。

添加COPR软件仓库到系统

sudo curl -Lo /etc/yum.repos.d/_copr:copr.fedorainfracloud.org:zhullyb:v2rayA.repo \
  https://copr.fedorainfracloud.org/coprs/zhullyb/v2rayA/repo/fedora-$(rpm -E %fedora)/zhullyb-v2rayA-fedora-$(rpm -E %fedora).repo

安装v2rayA

sudo rpm-ostree install v2ray-core v2raya

然后,重启系统;或者使用以下命令将修改应用到当前系统中:

sudo rpm-ostree ex apply-live --allow-replacement

设置开机自启动,并且现在开始运行

sudo systemctl enable --now v2raya.service

其他基于 rpm 的操作系统

此方法可以为 Alma Linux、Rocky Linux、openSUSE、CentOS 7 或其它基于 rpm 软件包管理器的 Linux 发行版安装 v2rayA,前提是你所用的发行版使用了 systemd 作为系统管理工具

安装 V2Ray 内核 / Xray 内核

V2Ray 的官方脚本

V2Ray 安装参考:https://github.com/v2fly/fhs-install-v2ray

v2rayA 提供的镜像脚本(推荐)

curl -Ls https://mirrors.v2raya.org/go.sh | sudo bash

安装后可以关掉服务,因为v2rayA不依赖于该systemd服务。

sudo systemctl disable v2ray --now ### Xray 需要替换服务为 xray

安装 v2rayA

下载 rpm 包 后运行:

sudo rpm -i /path/download/installer_redhat_xxx_vxxx.rpm ### 自行替换 rpm 包所在的实际路径

注意事项

启动 v2rayA / 设置 v2rayA 自动启动

从 1.5 版开始将不再默认为用户启动 v2rayA,也不会默认设置开机自动。

  • 启动 v2rayA

    sudo systemctl start v2raya.service
  • 设置开机自动启动

    sudo systemctl enable v2raya.service

Windows

本节介绍如何在 Windows 上安装 v2rayA。需要注意的是,目前在 Windows 上仅支持一键配置系统代理而非透明代理。

使用安装包

安装包将内置 v2ray-core,如需更换 Xray-core,可在安装完毕后于安装目录手动进行替换。

方法一:通过 WinGet 自动安装

WinGet 是微软推出的软件包管理器,适用于 Windows 10 以及更新版本的操作系统。

winget install --id v2rayA.v2rayA

方法二:手动运行安装包

从 GitHub Releases 下载适用于 Windows 的安装包,例如 installer_windows_inno_x64_2.0.1.exe,按照指示安装完毕即可。

使用方法

通过安装包安装 v2rayA 后,v2rayA 将以服务的形式运行,默认情况下将开机自启,你也可以在任务管理器中的“服务”选项卡管理 v2rayA 的启动与停止。你可以通过运行桌面快捷方式或直接访问 http://127.0.0.1:2017 打开管理页面。

使用 Scoop 安装二进制

安装 v2rayA

所有的命令都在 PowerShell 中运行,CMD 用户请注意命令格式。

你首先需要安装 Scoop ,然后才能从 scoop 安装 v2rayA。

添加 Scoop 源:

scoop bucket add v2raya https://github.com/v2rayA/v2raya-scoop

更新 Scoop 信息:

scoop update

安装:

scoop install v2raya

V2Ray 核心将作为依赖包而被安装。

运行 v2rayA

前台运行

打开一个 CMD 或者 PowerShell 窗口,然后运行:

v2rayaWin --lite

后台运行

使用 start-v2raya 命令运行 v2rayA,使用 stop-v2raya 命令关掉 v2rayA。

开机自启

将你 scoop\shims 目录下的 start-v2raya.cmd 复制到“启动”文件夹(一般位于 C:\Users\YourUserName\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)即可。示例命令如下:

Copy-Item -Path '~\scoop\shims\start-v2raya.cmd' -Destination '~\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup'

手动安装

下载 v2rayA

从 GitHub Releases 或 GitHub Action 下载适用于 Windows 的二进制文件(名称一般类似于 v2raya_windows_arm64_1.5.6.2.exe),然后重命名为 v2raya.exe(格外注意 Windows 系统下不能丢失扩展名)。

下载 V2Ray 核心

安装 V2Ray:https://www.v2fly.org/guide/install.html

下载压缩包之后解压即可。

运行 v2rayA

假设 v2rayA 与 v2ray 都放在了 D:\v2rayA:

D:\v2rayA\v2raya.exe --lite --v2ray-bin D:\v2rayA\v2ray.exe

其它信息

以下假设 v2rayA 是通过 scoop 安装的,如果是手动安装的请注意修改路径。

作为服务运行(使用 WinSW)

使用 WinSW 可以将 v2rayA 作为服务运行并自动开机启动,下载 WinSW 并将其重命名为 winsw.exe,再将其放到一个你认为合适的目录,然后同样的目录下新建 v2raya-service.xml :

<service>
  <id>org.v2raya.v2raya</id>
  <name>v2rayA</name>
  <description>This service runs v2rayA.</description>
  <executable>C:\Users\YourHomeDir\scoop\apps\v2raya\current\v2rayaWin.exe</executable>
  <arguments>--lite</arguments>
  <log mode="roll"></log>
  <env name="V2RAYA_LOG_FILE" value="%v2raya.log%"/>
  <delayedAutoStart>true</delayedAutoStart>
  <onfailure action="restart" delay="10 sec"/>
  <onfailure action="restart" delay="20 sec"/>
  <serviceaccount>
    <username>.\YourUserName</username>
    <password>YourPassword</password>
    <allowservicelogon>true</allowservicelogon>
  </serviceaccount>
</service>

此处的用户名是你显示在“计算机管理”中的用户名,而非在控制面板或系统设置里面看到的完整用户名。密码是你的本地账户密码或者微软账户密码。

如果是手动安装的 v2rayA,那么你需要指定 --v2ray-bin 参数,或者将 v2ray 添加到 path。

保存文件,然后运行(需要管理员权限):

.\winsw.exe install .\v2raya-service.xml

作为服务运行(使用 NSSM)

使用 NSSM - the Non-Sucking Service Manager 可以将 v2rayA 作为服务运行并自动开机启动。 下载 NSSM 并放在一个合适的目录或者使用 scoop 安装 NSSM。

scoop install nssm

然后以管理员身份安装一个名为 v2raya 的 service:

nssm install v2raya

此时会弹出一个 NSSM 窗口: Path 为 v2rayA 路径 C:\Users\YourHomeDir\scoop\apps\v2raya\current\v2rayaWin.exe; Srartup directory 可留空,默认为 v2rayA 所在目录; Arguments 填写 --lite --v2ray-bin C:\Users\YourHomeDir\scoop\apps\v2ray\current\v2ray.exe

可能用得到的其他参数:--log-file v2raya.log 会在 Srartup directory 生成 log 文件并在前端显示。

最后以管理员身份运行:

nssm start v2raya
nssm remove v2raya # 删除服务
nssm edit v2raya # 编辑服务
nssm start/stop/restart v2raya # 启动、停止、重启服务

后台运行(通过 PowerShell 隐藏窗口):

Start-Process "v2rayaWin.exe" -Arg "--lite" -WindowStyle Hidden

如果想在后台运行时也在前端输出日志,需要在参数里指定日志的输出文件(这里指定工作目录为当前用户的%temp%目录),可以使用如下的powershell命令:

Start-Process "v2raya.exe" -WorkingDirectory "~\AppData\Local\Temp" -Arg "--log-file v2raya.log" -WindowStyle Hidden

后台运行(使用 ConEmu)

ConEmu 是一个 Windows 下的终端程序,右击它窗口上的最小化按钮可以让它把窗口最小化到托盘区。在 ConEmu 中的 PowerShell 会话中使用 直接运行 项里面提到的命令运行 v2rayA 即可。

系统代理

开启系统代理

v2rayA 目前在 Windows 上仅支持系统代理,可以在 Web 界面开启 System Proxy 以启用它。

部分应用(比如命令行程序)可能不读取或者不使用系统代理,你可能需要 proxychains 来强行让它们走代理,或者使用程序自身的代理配置。

如果 v2rayA 意外退出,那么 v2rayA 无法在退出的时候帮你取消系统代理,这种情况下你需要自行去 Internet 选项或者系统设置里面关掉代理。

让 UWP 应用走代理

参考内容:https://github.com/Qv2ray/Qv2ray/issues/562

Windows 存在着开启系统代理后 UWP 应用无法联网的问题,这是因为出于安全问题,UWP 应用在默认情况下不允许访问本地回环地址,而大部分代理都会监听回环地址,以便提供 socks 与 http 代理入口。为了规避这个问题,我们需要借助一些工具,例如 Fiddler 的 Enable Loopback Utility 或开源项目 Loopback Exemption Manager 。或者,你可以通过以下 PowerShell 命令来批量完成这个操作,打开一个具有管理员权限的 PowerShell 窗口,然后运行:

Get-ChildItem -Path Registry::"HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\AppContainer\Mappings\" -name | ForEach-Object {CheckNetIsolation.exe LoopbackExempt -a -p="$_"}

Windows 下重置密码

Scoop 安装的 v2rayA

v2raya --reset-password

根据你安装的包将命令替换为 v2raya-unstable 或 v2raya-git,密码重置后需要重启 v2rayA。

安装包安装的 v2rayA

打开一个具有管理员权限的 PowerShell 窗口,然后运行:

sc.exe stop v2rayA
${env:V2RAYA_CONFIG} = 'C:\Program Files\v2rayA'
&'C:\Program Files\v2rayA\bin\v2raya.exe' --lite --reset-password
sc.exe start v2rayA

评论