# Project V

要了解 V2Ray 就必须要知道 Project V,根据官方说法:Project V 是一个工具集合,它可以帮助你打造专属的基础通信网络Project V 的核心工具称为 V2Ray,其主要负责网络协议和功能的实现,与其它 Project V 通信,V2Ray 可以单独运行,也可以和其它工具配合,以提供简便的操作流程。

相对于shadowsocksr来说,它有以下几个优势:

  • 多入口多出口: 一个 V2Ray 进程可并发支持多个入站和出站协议,每个协议可独立工作
  • 可定制化路由: 入站流量可按配置由不同的出口发出。轻松实现按区域或按域名分流,以达到最优的网络性能
  • 多协议支持: V2Ray 可同时支持多个协议,包括 SocksHTTPShadowsocksVMess
  • 隐蔽性: V2Ray 的节点可以伪装成正常的网站(HTTPS),将其流量与正常的网页流量混淆,以避开第三方干扰
  • 反向代理: 通用的反向代理支持,可实现内网穿透功能
  • 多平台支持: 原生支持所有常见平台,如 Windows、Mac OS、Linux,并已有第三方支持移动平台

# 安装V2Ray客户端

客户端软件在发布页,根据你需要的系统下载匹配型号的安装包,我这里以我的系统为例子,其他系统请自行参照官方文档配置。

sudo pacman -S v2ray    #ArchLinux/Manjaro安装v2ray

配置上可以替换/etc/v2ray/config.json文件,参照以下模板自行修改参数即可,注意修改各注释处;或者可以使用配置生成器

config.json示例
{
  "inbounds": [
    {
      "port": 1080, // 监听端口
      "protocol": "socks", // 入口协议为 SOCKS 5
      "sniffing": {
        "enabled": true,
        "destOverride": ["http", "tls"]
      },
      "settings": {
        "auth": "noauth"  //socks的认证设置,noauth 代表不认证,由于 socks 通常在客户端使用,所以这里不认证
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "vmess", // 出口协议
      "settings": {
        "vnext": [
          {
            "address": "serveraddr.com", // 服务器地址,请修改为你自己的服务器 IP 或域名
            "port": 16823,  // 服务器端口
            "users": [
              {
                "id": "b831381d-6324-4d53-ad4f-8cda48b30811",  // 用户 ID,必须与服务器端配置相同
                "alterId": 64 // 此处的值也应当与服务器相同
              }
            ]
          }
        ]
      }
    }
  ]
}
    

V2Ray支持配置多个服务器,那么多个服务器配置的时候,它其实是轮询访问的,也就是说第一个数据包走第一个服务器,第二个数据包走第二个服务器,而不是我们一般认为的第一个服务器被墙了就自动切换到第二个服务器,然后继续传输。

p>路由规则参照 domain-list-community 域名列表,如果该项目中有一整套 google 顶级域名及其子域名,则用 geosite 写成 geosite:google ,如果是普通网站,则使用 domain 写成 domain:google.com

使用v2ray自带了一个检查工具v2ray -test检查json文件

v2ray -test -config /etc/v2ray/config.json  #检查json
V2Ray 4.18.0 (Po) 20190228
A unified platform for anti-censorship.
Configuration OK.

显示OK就表示没问题了,可以开启本机的开机自启服务

systemctl enable v2ray  #开机自启v2ray
systemctl start v2ray   #启动v2ray

# 配置Socks代理

打开系统设置,进入网络设置,配置如下图:

System Manual Proxy

如果仅需要浏览器代理,可以下载SwitchyOmega浏览器插件,最简配置如下:

SwitchyOmega Settings

# 配置shell代理

为了解决终端下载被墙服务器的安装包失败的问题,可以考虑代理终端。

# 临时代理

只需要http代理则输入命令export http_proxy=http://proxyAddress:port; 全部协议代理则输入命令export ALL_PROXY=http://proxyAddress:port。 临时代理仅对当前环境有效,重启即失效。

# 长期代理

sudo gedit ~/.bashrc    #编辑.bashrc文件

在最后追加以下配置。

export http_proxy="http://localhost:port"
export https_proxy="http://localhost:port"

source ~/.bashrc或者重启终端后生效

# 配置PAC

# 生成PAC

PAC代理需要生成一个.pac的文件,首先本机安装pip工具

sudo pacman -S python-pip       #安装pip
pip -V      #查看pip版本
#-------------------------输出----------------------------
pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)
sudo pip install genpac     #使用pip安装genpac,需要root权限
#-------------------------输出----------------------------
Collecting genpac
  Downloading https://files.pythonhosted.org/packages/48/fb/b8f9cce57c4ea856e7dd1f9fb917df2896d7e62d43c50ed1af2e50a4e57d/genpac-2.1.0.tar.gz (102kB)
     |████████████████████████████████| 112kB 111kB/s 
Installing collected packages: genpac
  Running setup.py install for genpac ... done
Successfully installed genpac-2.1.0

最后执行以下命令,会生成一个auto.pac文件,无输出结果表示执行成功

genpac --format=pac -o auto.pac --pac-proxy="SOCKS5 127.0.0.1:1080"

# Firefox PAC代理设置

PAC文件的绝对路径为file:///etc/v2ray/auto.pac,如下图

Firefox PAC Manual Proxy

# 系统PAC代理设置

gnome桌面为例,PAC文件的绝对路径为file:///etc/v2ray/auto.pac

PAC Automatic Proxy

全局代理也可以通过以下命令来设置:

gsettings set org.gnome.system.proxy autoconfig-url file:///etc/v2ray/auto.pac
gsettings set org.gnome.system.proxy mode 'auto'

gsettings set org.gnome.system.proxy.socks host '127.0.0.1'
gsettings set org.gnome.system.proxy.socks port 1088

转引自https://www.teaper.dev/2019/06/02/v2ray/,有修改。