月下博客

全网首发:史上最安全V2RAY配置!V2RAY+Nginx+Ws+Tls+Host+Path,HTTPS/HTTP2协议伪装,可选开启CDN!

原理

波仔一直以来都是文字工作不咋地的人。很多东西只能教,不会说!!!!

理论上来说,证书不是必须的。但没有tls加持或不做加密,墙直接能看出真实意图从而进行干扰,这也是为什么不建议伪装http流量的原因。本文给出的方法采用合法机构签发的证书对流量进行加密,不是做特征混淆得到的tls流量,从而更难被检测和干扰。

关于伪装技术的选择,websocket+tls+web和http2+tls+web常用来做对比。理论上http2省去了upgrade的请求,性能更好。但实际使用中两者没有明显区别,加之某些web服务器(例如nginx)不支持后端服务器为http2,所以websocket的方式更流行。如果你要上http2,记得web服务器不能用nginx,因为nginx已经使用了,要用后端支持http2的caddy等软件。

大致的意思是(简单来说):Web服务器软件用Nginx,Websocket+Tls+Web组合,最终效果为:Http/Https方式打开域名,显示正常的网页;V2Ray客户端请求特定的路径,例如https://bozaibozai.ml/SoftDown,能科学上网;浏览器直接请求https://bozaibozai.ml/SoftDown,返回”400 bad request”(当然,不嫌麻烦的直接上面搭建一个静态的图片或是什么什么站)。即外部看起来完全是一个人畜无害的正规网站,特定手段请求特定网址才是科学上网的通道。

准备工作

和上一期的视频教程一样,我们需要注册免费域名,并改写免费域名的NAME DNS服务器地址。

需要注册cloudflare,用来管理DNS和注册SSL证书,其实这一步最大的目的就是生产SSL证书而已。当然,里面的CDN你可以看情况开启。视频教程中有详细讲解!

免费域名地址:https://freenom.com/ (若你是申请不了免费的,那么请移步下面)

收费申请地址:https://www.namesilo.com      (随便申请一个年付0.99/美元的域名,支付宝支付)

免费域名DNS托管(CDN):https://www.cloudflare.com

好了,前面的说完了,现在开始我们的表演!

视频教程观看地址:https://youtu.be/b7Q9i7boWxo

波仔为大家演示的系统是:

Debian 9 x64

以下操作均需要用root账号登录服务器,服务器最好开启bbr,开启了bbr后,v2ray的数据传输速度要快很多。

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf
sysctl -p
sysctl net.ipv4.tcp_available_congestion_control
lsmod | grep bbr

安装v2ray服务器

对于 V2Ray的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。所以客户端和服务端的系统时间一定要正确,只要保证时间误差在90秒之内就没问题。

bash <(curl -L -s https://install.direct/go.sh)   #安装官方版本v2ray

近期官方的go.sh脚本抽筋,经常无法访问。所以,V2RAY安装不了的小伙伴们可以试图下面安装连接:

bash <(curl -L -s https://ssrbbr.cc/install.sh)

如果提示 curl: command not found ,那是因为你的 VPS 没装 Curl

apt-get update -y && apt-get install curl -y     ##ubuntu/debian系统安装 Curl 方法
yum update -y && yum install curl -y             ##       centos系统安装 Curl 方法

vi /etc/v2ray/config.json V2RAY服务器的配置文件如下:(下面代码可以直接覆盖源文件代码)

{
  "inbounds": [{
    "port": 20892,           //此处为安装时生成的端口,可修改随意,但是保证和下面提到的端口号相同
    "listen":"127.0.0.1",
    "protocol": "vmess",
    "settings": {
      "clients": [
        {
          "id": "xxxxxxxxx", //此处为安装时生成的id
          "level": 1,
          "alterId": 64      //此处为安装时生成的alterId
        }
      ]
    },
    "streamSettings": {
      "network": "ws",
      "wsSettings": {
        "path": "/SoftDown"   //此处为路径,需要和下面NGINX上面的路径配置一样
      }
    }
  }],
  "outbounds": [{
    "protocol": "freedom",
    "settings": {}
  },{
    "protocol": "blackhole",
    "settings": {},
    "tag": "blocked"
  }],
  "routing": {
    "rules": [
      {
        "type": "field",
        "ip": ["geoip:private"],
        "outboundTag": "blocked"
      }
    ]
  }
}

设置为开机自动启动

systemctl enable v2ray

启动v2ray服务

systemctl start v2ray

安装nginx

更新软件包索引

apt update

安装Nginx软件包:

apt install nginx

Nginx服务将在安装过程完成后自动启动。您可以通过运行以下 curl 命令进行验证:

curl -I 127.0.0.1

设置nginx为开机自动启动

systemctl enable nginx

在nginx安装目录下创建ssl文件夹

mkdir /etc/nginx/ssl

vi /etc/nginx/conf.d/default.conf 将此文件设置为如下配置:

server {
    listen       443 ssl;
    server_name  bozaibozai.ml;                  #修改为自己的域名
    ssl_certificate ssl/bozaibozai.ml.crt;       #将bozaibozai.ml修改为自己的域名
    ssl_certificate_key ssl/bozaibozai.ml.key;   #将bozaibozai.ml修改为自己的域名

    location /SoftDown {                         #修改为你自己的路径,需要和V2RAY里面的路径一样
        proxy_redirect off;
        proxy_pass http://127.0.0.1:20892;       #修改为你自己的v2ray服务器端口,就是这里需要和上面V2RAY配置文件里面的端口号相同。
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60s;
        proxy_read_timeout 86400s;
        proxy_send_timeout 60s;
    }

}

生成ssl/tls证书并配置

注册一个cloudflare账号,添加自己已注册的域名,注意将域名A记录的Proxy status设置为橙色云朵状态,这样才会走cloudflare的CDN,如果设置为灰色云朵状态,表示不走cloudflare的CDN,而是域名直连你自己的服务器,然后在你的域名注册服务商那里将域名的dns服务器修改为cloudflare提供的dns。

点击cloudflare的SSL/TLS菜单,在SSL的那一栏,将右侧的下拉框设置为Full(Full表示客户端->CDN,CDN->服务器的数据传输都加密),默认为Flexible(Flexible表示客户端->CDN加密,CDN->服务器不加密),因为服务器已经开启了tls,所以这里需要设置为Full。

访问 https://dash.cloudflare.com/profile/api-tokens,添加一个API TOKEN,设置Zone.Zone的读权限以及Zone.DNS的写权限,等会会用到这个API TOKEN。如下图:

为了下面代码的方便复制,我略过里面的注释语句。具体如图片(图片下方才是代码)

共计9行代码,请修改具体参数,注释文件在上图!!!!!

apt-get install -y socat
curl  https://get.acme.sh | sh
source ~/.bashrc
export CF_Token="xxxxxx"
acme.sh --issue --dns dns_cf -d bozaibozai.ml -d www.bozaibozai.ml -k ec-256
cat ~/.acme.sh/bozaibozai.ml_ecc/fullchain.cer > /etc/nginx/ssl/bozaibozai.ml.crt
cat ~/.acme.sh/bozaibozai.ml_ecc/bozaibozai.ml.key > /etc/nginx/ssl/bozaibozai.ml.key
systemctl start nginx
acme.sh --installcert -d bozaibozai.ml -d www.bozaibozai.ml --fullchainpath /etc/nginx/ssl/bozaibozai.ml.crt --keypath /etc/nginx/ssl/bozaibozai.ml.key --ecc --reloadcmd "systemctl reload nginx"

安装完成如下图:

到这里,服务器配置就完成了!你可以尝试访问https://bozaibozai.ml(HTTPS://你的域名)看看连接是否是安全的。具体请看教程

在然后

请开始你的客户端配置!什么?客户端不会配置???那么请看视频教程