V2Ray的搭建 (WebSocket + TLS 传输协议)

这个搭建方法步骤比较麻烦但安全性较高 使用 Cloudflare(dns) 中转V2Ray WebSocket的流量来避免IP被墙。简单说就是使用 V2Ray 的 WebSocket + TLS 传输协议,并且,由于使用了Cloudflare中转,所以很难查到你的ip。

 

需要准备的东西

1.CentOS 7 创建系统时选择
2.域名注册 (域名)
3.Cloudflare (CDN)
4.V2ray
5.安装Nginx
6.SSL证书 (acme.sh)

 

域名注册

随便买个域名就行 GoDaddyFreenom(有免费域名)

 

安装 V2ray

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

-f 或 –force: 强制安装。在默认情况下,如果当前系统中已有最新版本的 V2Ray,go.sh 会在检测之后就退出。如果需要强制重装一遍,则需要指定该参数。
–version: 指定需要安装的版本,比如 “v1.13″。默认值为最新版本。

配置 V2ray 服务端

修改配置文件

/etc/v2ray/config.json

UUID 在线生成

{
  "inbounds": [{
    "port": 10000,
    "listen":"127.0.0.1",
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "生成的id",
          "level": 1,
          "alterId": 64
        }
      ]
    },
    "streamSettings": {
      "network": "ws",
      "wsSettings": {
      "path": "/ray"
      }
    }
  }],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {}
  },{
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
  }],
  "routing": {
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "blocked"
      },
      {
        "type": "field",
        "outboundTag": "block",
        "protocol": [
          "bittorrent"
        ]
      }
    ]
  }
}

加注释复制代码导致出问题 就不加了 id port等都可自行替换 嫌麻烦可不换

打开80 443端口

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent

查看

firewall-cmd --permanent --list-port

重启防火墙

firewall-cmd --reload

备用

启动v2ray systemctl start v2ray
重启v2ray systemctl restart v2ray
查看v2ray状态 systemctl status v2ray

Cloudflare

1.域名注册成功后把DNS服务器设置成Cloudflare提供的DNS.
2.登陆Cloudflare 添加域名,它会提供DNS 服务器地址.
3.在freenom 修改nameserver之后,稍等10分钟.
4.在Cloudflare 选择申请验证DNS服务器. 等待5分钟左右.
5.验证成功后会收到Cloudflare 的邮件,告诉你DNS修改成功,可以开始使用了.

Nginx的安装

vim /etc/yum.repos.d/nginx.repo

贴入以下代码

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
yum install epel-release -y
yum clean all
yum --disablerepo="epel" update nss -y
yum install nginx -y
chkconfig nginx on
service nginx start

创建nginx页面

curl -v http://127.0.0.1/

然后修改Nginx配置

创建v2ray.conf

vim /etc/nginx/conf.d/v2ray.conf
server {
  listen  443 ssl;
  ssl on;
  ssl_certificate       /etc/v2ray/v2ray.crt;
  ssl_certificate_key   /etc/v2ray/v2ray.key;
  ssl_protocols         TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers           HIGH:!aNULL:!MD5;
  server_name           example.com;  #替换成自己的域名
  
  location / {
      default_type application/json;
      add_header Content-Type "text/plain;charset=utf-8";
      return 200 "OK~!";
    }

        location /ray { # 与 V2Ray 配置中的 path 保持一致
        proxy_redirect off;
        proxy_pass http://127.0.0.1:10000;
        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;
        }
}

如果在设置完成之后不能成功使用,可能是由于 SElinux 机制(如果你是 CentOS 7 的用户请特别留意 SElinux
这一机制)阻止了 Nginx 转发向内网的数据。如果是这样的话,在 V2Ray 的日志里不会有访问信息,在 Nginx
的日志里会出现大量的 “Permission Denied” 字段,要解决这一问题需要在终端下键入以下命令:

setsebool -P httpd_can_network_connect 1 

备用

Nginx启动命令:/usr/local/nginx/sbin/nginx (无参数)启动(-s  stop)关闭(-s reload)重启
service nginx restart也可重启

SSL证书

1.在Cloudflare 的个人资料里面找到 API Keys –> Global API Key 创建一个API key 留作备用.
使用acme.sh 一键部署Let’s Encrypt 的免费SSL.
2.替换下面代码中的注释的命令

curl https://get.acme.sh | sh
export CF_Key="第一步拿到的apikey"
export CF_Email="Cloudflare 登录邮箱"
alias acme.sh=~/.acme.sh/acme.sh
acme.sh --upgrade --auto-upgrade
acme.sh --issue --dns dns_cf -d example.com //example.com 换成自己的域名 下面的也要换
acme.sh --install-cert -d example.com --cert-file /etc/v2ray/v2ray.crt --key-file /etc/v2ray/v2ray.key --reloadcmd "systemctl restart nginx" //example.com 换成自己的域名

配置 CloudFlare

修改默认配置,以下是必须调整的.
第一个是 Network 中的 Websocket,必须开启.
第二个是 DNS 中的对应域名的解析,必须套用 CDN,即黄色 DNS and HTTP proxy(CDN)
第三个是 Cloudflare 的 Crypto 选项卡的 SSL 为 Full

不是必须
Crypto 中,Authenticated Origin Pulls 关闭
Opportunistic Encryption 关闭

当访问https地址/ray 显示 Bad Request 革命就算是成功了

注意 以上有关于CloudFlare的无论是设置还是证书都有一定的等待时间 获取证书有可能要等待24小时才能生效!

客户端的一些配置

地址填写的是域名不是ip
端口 443
用户ID UUID生成的id(填入/etc/v2ray/config.json的id)
AlterID 64
加密方式 客户端控制 #建议aes-128-gcm
传输协议 ws
ws path要填 /ray headers host选填 可填入域名
tls勾上 域名选填

发表评论

电子邮件地址不会被公开。