V2ray 工具,相信大家都不陌生,由大神使用 Go 语言开发,极大的方便了国内小伙伴畅游互联网。

多数朋友在安装 V2ray 时会采用其自动化安装脚本,然后直接运行 V2ray 软件。这样做虽然简单方便,但是还不能完全发挥 V2ray 的潜力。事实上只需要简单修改一下 V2ray 的配置文件,就可以让 V2ray 运行的更加安全和高级。

1] V2ray 支持非 Vmess 协议

V2ray 不仅支持 Vmess 协议,还支持 Shadowsocks 协议,做法也非常简单,就是在配置文件”config.json”添加一个”inboundDetour”键,然后配置 Shadowsocks 协议相应内容即可:

"inboundDetour": [
    {
     "protocol": "shadowsocks",
     "port": 12345,
     "settings": {
      "method": "aes-256-cfb",
      "password": "password",
      "udp": false
     }
    }
],

配置文件中:

  • “protocol”指支持的协议
  • “port”指该协议侦听的端口
  • “settings”指该协议的配置项
  • “method”是协议配置项中对应的配置内容,这里指SS协议的加密方法
  • “password”是协议配置项中对应的配置内容,这里指SS协议的连接密码
  • “udp”是协议配置项中对应的配置内容,这里指SS协议是否启用UDP连接

将以上内容添加到配置文件中,V2ray 就会同时支持 Vmess 协议和 SS 协议了。

2] V2ray 侦听多个端口

添加 SS 协议就已经为 V2ray添加了新的侦听端口。事实上,如果对于”inboundDetour”键进修改,就可以让V2ray 侦听更多的端口,从而实现为多用户使用不同端口同时服务,充分体现 Go 语言强大的并发处理能力。

熟悉 JSON 格式的话,可以发现”inboundDetour”键的值是一个 JSON 对象数组,数组中的一个对象就对应一个侦听的端口或者说是一个入流量协议。

于是可以修改”inboundDetour”键的值内容,从而增加多端口支持:

"inboundDetour": [
    {
     "protocol": "shadowsocks",
     "port": 12345,
     "settings": {
      "method": "aes-256-cfb",
      "password": "password-1",
      "udp": false
     }
    },
    {
     "protocol": "shadowsocks",
     "port": 54321,
     "settings": {
      "method": "aes-256-cfb",
      "password": "password-2",
      "udp": false
     }
    }
  ],

可以看到,在”inboundDetour”键的值数组中,有两个 JSON 对象,用于指示两个不同的协议。示例使用SS协议侦听两个不同的端口,并且使用不同的密码,从而可以轻松实现用户隔离。

3] V2ray+WebSocket+Tls+Nginx 实现高伪装

所谓的高伪装,当然是针对 GFW 来说。普通 V2ray 客户端同服务器使用 TCP 方式连接,虽然在传输过程中使用 Vmess 协议对数据进行了加密操作,让 GFW 不能识别数据包的内容,但是由于固定连接某些主机的特定端口,也容易被标记为可疑数据,造成服务端被屏蔽。

而 V2ray+WebSocket+Tls+Nginx 的方式就相对更具隐蔽性,客户端将代理数据进行 Vmess 加密,并将数据伪装成普通的 Web 请求,再通过 Tls 进行传输层加密,到达服务端后由 Nginx 响应请求,并将请转发给 V2ray 服务端,服务端对数据进行解密后,代理访问目标网站,并将目标网站的数据响应反馈给 Nginx,由 Nginx 转发给 V2ray客户端面,从而实现数据的代理。流程如下:

V2ray客户端<-Vmess-><-Tls->Nginx<-Vmess->V2ray服务端<-->Google

可以看出,用户数据在整个代理环节中会进行两次加密,并且在传输过程中与普通的 HTTPS 流量一致,由 Nginx 完成请求响应,极大的提升了数据的隐蔽性。其实现方法与 Trojan 基本一致,只是 V2ray 的 WebSocket 方案需要有 Web 服务器来配合完成。

首先配置 V2ray 服务器的 Vmess 协议采用 Websocket 方式传输:

 "inbounds": [{
    "port": 12345,
    "listen":"127.0.0.1",
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "User-uuid",
          "level": 1,
          "alterId": 64
        }
      ]
    },
    "streamSettings": {
      "network": "ws",
      "wsSettings": {
	     "path": "/webroot/html"
      }
    }
  }],

其中标红的内容就是服务器使用 WebSocket方式时需要添加的内容:

  • “listen”是指 V2ray 侦听的主机,也就是接收 Nginx 转发请求的主机,一般采用本机即可
  • “streamSettings”表示数据流设置
  • “network”表示数据流的网络设置,WebSocket方式时设置为”ws”
  • “wsSettings”是工作于 ws 方式时的设置项
  • “path”: “/webroot/html”是指 Nginx 服务器转发请求网站的根目录

然后就需要配置 Nginx 启用 Tls 传输并将请求转发给 V2ray 服务端:

server {
        listen 443 ssl;
        ssl_certificate /etc/v2ray/public-key.pem;
        ssl_certificate_key /etc/v2ray/private-key.pem;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5;
        server_name ws.rultr.com;

        location /webroot/html {
            proxy_redirect off;
            proxy_pass http://127.0.0.1:12345;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Host $http_host;
            # Show realip in v2ray access.log
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

Nginx 的配置中标红部分为需要根据实际情况修改的内容:

  • ssl_certificate 为Web服务器的公钥
  • ssl_certificate_key 为Web服务器的私钥
  • server_name 为Web服务器侦听的主机名示例使用”ws.rultr.com”
  • location 为主机文件的实际目录,需要与 V2ray 服务端保持一致
  • proxy_pass 为转发请求的目标网址,需要与 V2ray 服务端对应

最后,说一下 Windows 平台 GUI 客户端 V2rayN 如何配置。因为服务器工作的再正常,客户端配置有问题,那也是白搭。当然如果习惯使用命令行客户端,那么修改配置文件也可以达到同样的效果,不过还是有 GUI 界面的工具用起比较直观。

图.1 V2rayN配置使用 WebSocket 方式连接服务器

从图.1的配置中可以看出,V2ray 的客户端配置需要与 Nginx 及 V2ray 服务端保持一致,这样才能让整个系统运转正常。

需要说明的是,这种方式并不代表 V2ray 会更加稳定,而是仅仅提升了隐蔽性。双重加密可能会带来一些性能损失,但对于现在的主机来说,整体影响很小。

以上就是一些关于 V2ray 的高级使用技巧,当然,这也只是些皮毛,希望可以发掘更多更加好用的功能 出来。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注