非常非常森破的薇图睿讲解和配置

官方project的代码可以在github上找到。 其project页面为ProjectV

我还是非常noob的,希望有大佬能指正我错误的观点(交流

薇图睿,就是V二ray,就是v②ray,就是v2ray,其实是一个在结构上类似于薇批恩而不是影袜子的东西。但是与影袜子相同,喂图睿会按需向私有网络内的远端设备发送流量,而不是像喂批恩那样需要定期握手来保持连接。在理论上被网络大环境识别和侦测的可能与影袜子相同,但是肯定比虚拟个人网络要来得好。

运作方式上,通常的薇图睿的运作与影袜子类似,都是在本地建立一个代理服务器后将本地出口流量转为加密的流量再向远程设备发送;远程设备在解包之后转发给对应的网站。那么有人就会问了,为什么薇图睿普遍认为被侦测的可能性要比影袜子低呢?

首先一点,影袜子的流量其实相当容易识别。这个包既不像http也不像https,并且很多时候走的并不是喜闻乐见的80或者443端口。加密形式虽然多但是总是就那么几种,学一学就很容易出来特征了。而且对于这种“非法入侵他人计算机系统”的行为,并不需要真的解包,只需要确认你的流量异常即可查杀。

其次,薇图睿可以更好地伪装为正常的websocket、http或者https流量。这样的话,你向远端服务器发送的这个流量就更难与正常的一般网页访问区分开来。尤其是薇图睿的配置可以支持native的负载均衡(我不知道影袜子能否做到,但是薇图睿可以做到同时两个网页使用了两条不同薇图睿线路)。这样集中在单个水管上的流量就更加离散,难以被识别和追踪。

以上内容是非常noob的我在配置和使用过程中的对薇图睿的理解。肯定会有不足之处。评论区gkd。


接下来是服务端的薇图睿配置。

用这个自动安装脚本就完事儿了,官方自己推荐的

bash <(curl -L -s https://install.direct/go.sh)

具体这个go.sh的功能可以在官方project主页查看,我只说接下来要做的。

编辑设置文件:

vim /etc/v2ray/config.json

待续……预告是先从http1.1/tls(非openssl自建证书)到负载均衡(迫真)多节点配置。多用户统一管理我暂时没考虑,毕竟用我服务的朋友挺少的(指快交钱


19.08.15更新


终于从旅游回来了

在编写config.json之前我非常建议你好好研究一下原来config.json的写法,里面的各个条目的意义基本猜意思也可以知道。。。好的我现在假定读者你已经读过原来的config.json了,也对里面的条目、块、数组起的作用有了大致的了解。

首先一个,我们需要选择是否开启日志。我的建议是最好开启,开启日志有助于你进行检修。,这就是“log”这一块的内容。具体log文件存的路径可以自己选择。等级可以调更高的(那样就更详细,占用空间也会更大),具体有哪些级别可以查看官网的技术文档。

{
    "log":{
"access": "/var/log/v2ray/access.log",
"error": "/var/log/v2ray/error.log",
"level": "info"
},

然后是配置“inbounds”这一块,主要功能是接受来自用户端的数据,再由outbous发出去。监听地址和端口就127.0.0.1:1080,使用的协议为vmess。这个协议的具体作用和内容我也不是很明白,应该是ProjectV的一个部分,或者可以认为是他们专门创建的一个新协议,来为薇图睿的数据流加密的。

这里面需要在settings里添加一个clients数组。这里记录了各个用户的唯一id和流量选择等级alterId(?)。id的话貌似是什么都行,只要不重复就可以。

除此之外还有要给streamSettings,这一子块是最核心的。它声明了服务端与客户端之间沟通的数据包属性,也可以为发送的数据包添加header信息。我这里使用的是websocket格式(ws),并通过127.0.0.1:810/ray这个url进行访问。用户id是114514-1919-810。

"inbounds": [
{
	"port": 810,
	"listen":"127.0.0.1",
	"protocol": "vmess",
	"settings": {
	  "clients": [
		{
		  "id": "114514-1919-810",
		  "alterId": 64
		}
	  ]
	},
	"streamSettings": {
	  "network": "ws",
	  "wsSettings": {
	  "path": "/ray",
	  "header": {}
	  }
	}
}
],

outbounds块就很简单了。直接由数据包的类型自由选择连接协议即可。

"outbounds": [
{
	"protocol": "freedom",
	"settings": {}
}
]
}

细心的读者可能发现了,我们这里的in&outbounds是一个数组,那么是不是同一个服务端可以直接有多个inbound和outbound呢?理论上说,是可以的。但我没试过。

上面的各个块的内容讲道理是直接拼在一起就能用的。


肯定有人要问:兄啊,你不是要用http1.1/tls来的吗,你怎么用的websocket了呢?说真的,其实我也不太明白这两种格式有什么太多区别。实际上,我实现的方式是使用一个ssl证书来对inbound的http流量进行加密,然后再转发ws给薇图睿的,整个流水线就跟个黑盒子一样work very well。至于http怎么就变成了ws,我也不知道,大概nginx就是nb吧。

没错,接下来我们配置nginx。

首先是搞个证书,你用openssl我当然不反对,不过我懒得配置三个月一换的自动脚本。所以,我就搞了阿里云一年一换的免费证书(有钱大晒的便宜可以直接买3/5年的企业版)。怎么买还要我教吗?

把阿里云给你的.pem和.key文件传到服务器上去。然后在nginx的conf里添加一个conf文件。

server {
  listen  443 ssl;
  ssl on;
  ssl_certificate       你的.pem路径;
  ssl_certificate_key   你的.key路径;
  ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers           HIGH:!aNULL:!MD5;
  server_name           你准备好的域名;
        location /ray {
        proxy_redirect off;
        proxy_pass http://127.0.0.1:810;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host_with_default;

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
access_log /var/log/nginx/v2ray.access.log;
error_log /var/log/nginx/v2ray.error.log;
}

因为本文的目的不是教会读者配nginx,所以建议你自己学一学,直接抄记得该改的东西要改,自己modify的东西也要改。

然后重启你的v2ray和nginx,确认无误服务端就配置完成了。

待续:客户端配置,以及如何上网使用薇图睿客户端。


190928更新:匆匆忙忙填完了坑

我不是鸽子!!!

接下来就是配置你的用户端,你可以使用官方项目主页上推荐的各自gui工具。但是我是用命令行的版本的。

编辑你本地的config.json文件。

{
"inbounds": [
  {
    "port": 1080,
    "listen": "127.0.0.1",
    "protocol": "socks",
    "sniffing": {
      "enabled": true,
      "destOverride": ["http", "tls"]
    },
    "settings": {
      "auth": "noauth",
      "udp": false
    }
  }
],
"outbounds": [
  {
    "protocol": "vmess",
    "settings": {
      "vnext": [
        {
          "address": "你的域名,
          "port": 443,
          "users": [
            {
              "id": "114514-1919-810",
              "alterId": 64
            }
          ]
        }
        #这里可以跟上更多的模块来配置多线路
      ]
    },
    "streamSettings": {
      "network": "ws",
      "security": "tls", "tlsSettings": {
        "allowInsecure": true,
        "serverName": null
      },
      "tcpSettings": null,
      "kcpSettings": null,
      "wsSettings": {
        "connectionReuse": true,
        "path": "/ray",          # websocket连接路径
        "headers": null
      },
      "httpSettings": null
    },
    "mux": {
      "enabled": false
    }
  }
]
}

懒得说了,打字手疼。各个模块的内容如果不是一目了然说明你需要进行大脑升级。

然后运行v2ray时带上这个文件,你本地就创造出了一个跑在127.0.0.1:1080的socks服务器。然后就是配置各种网络应用的代理。不建议用v2ray跑游戏加速器。


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *