Update avaliable. Click RELOAD to update.
目录

旅行必备 V2Ray 的高级使用方式

1. 介绍

V2Ray 是一个与 Shadowsocks 类似的代理软件,很多人可能会想当然地将 V2Ray 看作一个特定的翻墙协议或用于实现该协议的翻墙软件。但实际上是一个融合了各种翻墙协议的集成性软件,其中只有 VMess 协议是 V2Ray 社区原创的翻墙协议。

2. 安装和使用

2.1 创建实例

参考 旅行必备 ShadowsocketR 搭建与使用 中的创建实例

唯一区别就是建议将CPU设置为”n1标准型”

2.2 执行安装

打开 vm 实例的 ssh 终端,输入以下命令执行安装:

# 切换成root用户
$ sudo -i

# 同步本地时间
$ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 执行一键安装脚本
$ bash <(curl -L -s https://install.direct/go.sh)

终端显示”V2Ray v4.19.1 is installed.”,表示已经安装完成。

2.3 配置文件

点击下载 config.json 配置文件,修改 port、id、alterId 字段,id和alterId随意变更,保持位数一致。port 最好使用已经配置好防火墙规则的端口(关于配置防火墙规则请参看 旅行必备 ShadowsocketR 搭建与使用 中的配置防火墙一节)。

v2ray-config-json

准备好 v2ray 的配置内容后,到刚才创建的实例中,使用命令vi /etc/v2ray/config.json打开v2ray的配置文件,删除里面全部内容,将准备好的配置明细复制进去,复制的格式很乱,不需要关心,v2ray会正常解析

小技巧,vi编辑器中使用命令 :set paste 打开粘贴模式可以保证格式

2.4 重启服务

# 重新启动v2ray服务
$ systemctl restart v2ray

# 查询启动后服务状态
$ systemctl status v2ray

# 将v2ray服务注册为开机自自动
$ systemctl enable v2ray

2.5 配置连接

点击下载 v2ray 客户端并安装。

所有配置在上面的json中都可以找到,配置如下:

v2ray-client

配置完成并save后,点击load core即可开启国际旅行

3. 欺骗与伪装

上面的配置方式是直连 v2ray 服务端,虽然使用的是 vmes 协议这种冷门协议,尽管也对传输体进行了aes的加密,但不排除伟大的墙会找到协议的特征码进行block,为了达到极致效果,基于上述继续我们的升级计划。

3.1 整体方案

[v2ray + websocket + tls + nginx + cdn]

此处应有图,懒的画了,自己理解。

3.2 安装nginx

继续在上面的服务器中执行以下命令安装nginx反向代理服务器(这也是为什么在第一步要求CPU稍微高点的原因,毕竟需要安装两个服务,不能使用微型CPU配置)

# 切换成root用户
$ sudo -i

# 安装nginx服务
$ apt install nginx

安装完成后,默认nginx就已经启动,可以使用命令netstat -an | grep 80看看端口是否处于 listen 状态,打开浏览器,直接输入服务器的IP地址应该可以看到nginx的欢迎界面,如下:

nginx

3.3 域名解析

这里使用在阿里云注册的域名为例,如果没有的话,可以在 freenom 可以申请免费域名。将域名解析到上面服务器的公网IP上,添加一个记录,记录类型为A,主机记录为ray,这样就将二级域名 ray.wangjun.bid 解析到了对应的 Google 云服务器上。

aliyun-parse

到服务器上使用命令vi /etc/nginx/sites-available/default打开nginx配置文件,删除里面所有内容,将域名配置到nginx的配置文件中,最终内容如下:

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    # 这里使用自己定义的域名
    server_name ray.wangjun.bid;

    location / {
        try_files $uri $uri/ =404;
    }
}

保存配置,并在终端中使用命令nginx -s reload让nginx重新加载配置,若没有任何信息输出表示配置正确,重新打开浏览器使用域名访问应能正常显示nginx的欢迎页面,说明域名解析成功。

3.4 安全证书

上面的输出说明我们正常解析了域名,但80端口的HTTP协议是明文传输的,我们需要在HTTP协议上层在加上TLS的HTTPS协议,使传输内容加密。

要为站点申请HTTPs证书,可以使用 letsencrypt 机构颁发的免费证书,省钱又可靠,letsencrypt 有个工具 certbot,全自动生成证书,下面是使用方法。

系统版本和代理服务器安装方式不一样,根据自己的配置来,这里在 Google 云创建的是 debian9 的操作系统,代理服务器使用的是 nginx,所以:

certboot

那我们的安装方式就是:

# 切换成root用户
$ sudo -i

# 安装certbot及其依赖
$ apt-get install certbot python-certbot-nginx -t stretch-backports

颁发证书

$ certbot --nginx

这里会要求输入和选择几项配置,具体如下:

publish-cert

出现”Congratulations”说明命令执行成功,重新打开浏览器输入https://域名可以正常看见nginx欢迎界面,且浏览器网址左边的小锁正常显示,HTTPS配置完成。

letsencrypt 为我们颁发的HTTPs证书有效期是90天,90天后证书会失效,可以使用命令certbot renew --dry-run重新颁发一次,当然最好在cron中配置好定时任务来自动执行

3.5 隐藏地址

Ping域名可以得到真实的服务器地址,尽管可以禁ping命令,但仍有很多工具可以发现我们在 Google 云上真实的服务器IP,这里使用CDN让域名指向地址变得隐藏,尽管这不是绝对的,但仍能杜绝大部分想获取服务器IP的方法。

CDN同样我们选择免费的,免费即王道,这里选择 CloudFlare,具体操作如下:

CloudFlare-addsite

CloudFlare-freeplan

CloudFlare-parse

CloudFlare-dns

经过上面的操作,CloudFlare配置已经完成,最后在阿里云域名下将对应域名的 DNS 解析为 CloudFlare 为我们分配的 DNS 记录,点击确定即可

aliyun-edit-dns

CDN已经配置完成

3.6 配置v2ray

我们上面的操作都与v2ray没有任何关系,只是创建了一个普通的HTTPS的静态站点,现在我们这才开始将其关联。

编辑vi /etc/v2ray/config.json文件修改和新增如下配置

v2ray-config-update

这里为什么改端口,之前的端口已经配置在防火墙的出入站规则中,外部是可以直接访问,反向代理一个重要的原则是隐藏内部应用,统一出入口,所以端口只需要设置一个不在防火墙规则里的1024~65535之间的值即可。

重新启动v2ray并查看启动状态

$ systemctl restart v2ray
$ systemctl status v2ray

一切正常,恭喜你,你已经不能使用 v2ray 服务了,因为目前 v2ray 服务只是在服务器内部启动,并没有对外开放,只能服务器内部访问,如果暴露 v2ray 服务,这是下一步做的事情。

3.7 代理转发

编辑nginx配置文件vi /etc/nginx/sites-available/default,内容有些乱,是因为在使用certbot生成HTTPS证书时自动改的,不管,直接使用复制下面在nginx的配置,配置v2ray的反向代理,最终结果如下:

server {
    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;

    # 这里填写自己的证书路径
    ssl_certificate /etc/letsencrypt/live/ray.wangjun.bid/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/ray.wangjun.bid/privkey.pem;
    
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    root /var/www/html;
    index index.html index.htm index.nginx-debian.html;

    # 这里填写自己的域名
    server_name ray.wangjun.bid;

    location / {
        try_files $uri $uri/ =404;
    }

    # ========== 增加的配置 ========== 
    # 请求"/ray"与v2ray配置里的wsSettings下path对齐
    location /ray {            
        # 转发地址与v2ray配置里的listen和port对齐
        proxy_pass http://127.0.0.1:9001;

        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
    }
}

执行命令让nginx重新加载配置文件,没输出表示配置OK

$ ngins -s reload

解释下上面的配置,当使用”https://域名/ray”访问时,nginx将所有请求代理转发到内部应用127.0.0.1:9001上,而这个启动着9001端口的内部应用就是v2ray服务,这样就像正常访问普通站点一样完成我们伟大的出国旅行计划,出关被检查时,GF认为请求的是正常的网页服务从而达到伪装的目的,下面配置v2ray客户端。

3.8 配置连接

使用伪装欺骗的方式旅行,客户端上的配置与普通的稍有区别,具体如下:

  1. 更改Address和端口号,network协议改成ws,其他保持不变,然后点击transport settings按钮
  2. path值改为/ray
  3. 勾选Use TLS,TLS serverName使用配置的域名

v2ray-client-fake-1 v2ray-client-fake-2 v2ray-client-fake-3

All done. 点击客户端上的load core,✈️ 开启你的环游世界之旅。

完整的配置

最后奉上v2ray和nginx完整的配置文件,仅供参考。

版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2019/06/v2ray-build/