由于近期TCP阻断频繁,于是部署基于WebSocket+TLS+Web的v2ray,将代理流量通过TLS加密,以此达到通过V2Ray访问任何网络都显示访问一个HTTPS网站,隐蔽性更高,也更安全。当然,这本来就是完整、真正的TLS流量。另外,这种TLS代理在速度或者说效率上对比TCP并没有什么优势,大家酌情部署!
申请域名和填写DNS记录
首先你要注册一个免费域名,这个可以到Freenom上免费搞一个,不多讲。
域名注册好后,需要添加两条DNS记录,建议使用Cloudflare的DNS解析,如果IP被墙可以使用它的CDN复活,没被墙就不建议使用了,毕竟减速CDN不是白叫的。添加两条DNS解析记录,如果没有v6IP的话,就填一个v4IP,如下:
Name (prefix) | Type | TTL | Target |
---|---|---|---|
A | 3600 | 这里填写vps上的v4IP | |
AAAA | 3600 | 这里填写vps上的v6IP |
上面完成后,就开始服务端的配置了。
服务端配置Nginx
安装Nginx
apt-get install nginx
配置Nginx的Server文件
vi /etc/nginx/sites-available/default
修改配置如下:
server { listen 80; listen [::]:80; //这是IPv4和IPv6的80端口监听 server_name xxxx.com; //域名 // 下面是真正的ws转发给v2ray location /ray { //与V2Ray配置中的path保持一致 proxy_redirect off; proxy_pass http://127.0.0.1:10086; //假设WebSocket监听在环回地址的10086端口上 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; } } server { listen 443 ssl http2; //这是IPv4和IPv6的443端口监听及ssl和http2支持 listen [::]:443 ssl http2; server_name xxxx.com; //域名 ssl_certificate /etc/letsencrypt/live/xxxx.com/fullchain.pem; //证书路径,xxxx.xxx改成你的域名 ssl_certificate_key /etc/letsencrypt/live/xxxx.com/privkey.pem; location /ray { // path路径 proxy_redirect off; proxy_pass http://127.0.0.1:10086; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; // 下面是realip日志,在access.log里面,可留可删除,随意 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
对于已经用nginx搭建网站的用户,就更简单了,只要在443端口下添加以下ws转发就好了。
// 下面是真正的ws转发给v2ray location /ray { //与V2Ray配置中的path保持一致 proxy_redirect off; proxy_pass http://127.0.0.1:10086; //假设WebSocket监听在环回地址的10086端口上 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; }
下面是nginx.conf完整配置实例,注意修改域名和证书文件夹名。
vi /etc/nginx/nignx.conf
user nginx; pid /run/nginx.pid; worker_processes auto; worker_rlimit_nofile 51200; events { worker_connections 1024; multi_accept on; use epoll; } http { server_tokens off; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 120s; keepalive_requests 10000; types_hash_max_size 2048; include /etc/nginx/mime.types; access_log off; error_log /dev/null; server { listen 80; listen [::]:80; server_name xxxx.com; location /ray { proxy_redirect off; proxy_pass http://127.0.0.1:10086; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; } } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name xxxx.com; ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; ssl_certificate /etc/letsencrypt/live/xxxx.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/xxxx.com/privkey.pem; location /ray { proxy_redirect off; proxy_pass http://127.0.0.1:10086; 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; } } }
如果你只用80端口的话是没必要去申请证书的,配置好v2ray的config.json文件就可以直接用的,当然这就只能是ws代理,不支持tls加密了。443端口需要申请ssl证书,往下看。
申请免费SSL证书
安装certbot
apt install certbot
注: 生成证书前请关闭服务器的Apache或Nginx,否则会生成失败。
certbot certonly --standalone --email 你的邮箱 -d xxxx.com(域名) -d www.xxxx.com
在完成Let’s Encrypt证书的生成之后,我们会在/etc/letsencrypt/live/xxxx.com/
域名目录下有4个文件就是生成的密钥证书文件。
cert.pem - used for OCSP stapling in Nginx >=1.3.7. chain.pem - will break many server configurations, and should not be used without reading further documentation fullchain.pem - 在大多数服务器软件中使用的证书文件。 privkey.pem - 证书私钥
在Nginx环境下,那就需要用到fullchain.pem
和privkey.pem
两个证书文件,在部署Nginx的时候只要将对应的ssl_certificate
和ssl_certificate_key
路径设置成生成的2个文件就可以。
打开/etc/nginx/sites-available/default
填入如下内容:(上面的nginx的配置文件已经添加进去了)
ssl_certificate /etc/letsencrypt/live/xxxx.com/fullchain.pem; //xxxx.com是你的域名 ssl_certificate_key /etc/letsencrypt/live/xxxx.com/privkey.pem;
Let’s Encrypt免费SSL证书有效期为90天, 需要我们自己手工更新续期才可以,手工续期如下命令:
systemctl stop nginx certbot certonly --renew-by-default --email 你的邮箱 -d xxxx.xxx -d www.xxx.com systemctl start nginx
看到这里是不是发现,俺在搭建一个完整的https网站,不错,到这一步你只要写一个html静态页面放在根目录下,这个站点就可以通过浏览器正常访问了。闲话不多说,往下看。
V2Ray服务端配置
证书申请好了以后,配置好nginx后,就要安装v2ray和修改服务端的配置文件了。
安装v2ray:
// 下载脚本 $ wget https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh // 安装v2ray $ bash install-release.sh
修改v2ray配置如下:
vi /usr/local/etc/v2ray/config.json
{ "inbounds": [ { "port": 10086, //同nginx上的环回地址端口保持一致 "listen":"127.0.0.1", //只监听 127.0.0.1,避免除本机外的机器探测到开放了 10086 端口 "protocol": "vmess", "settings": { "clients": [ { "id": "b831381d-6324-4d53-ad4f-8cda48b30811", "alterId": 64 } ] }, "streamSettings": { "network": "ws", "wsSettings": { "path": "/ray" //同nginx上的路径一致 } } } ], "outbounds": [ { "protocol": "freedom", "settings": { "domainStrategy": "UseIP" } } ], "dns": { //开启DoH "servers": [ "https+local://1.1.1.1/dns-query", "1.1.1.1", "8.8.8.8", "localhost" ] } }
systemctl start nginx
//启动nginx
systemctl start v2ray
//启动v2ray
bash install-release.sh
//更新v2ray
bash install-release.sh --remove
//移除v2ray
到此就可以开启Nginx和V2Ray了,服务端也就全部完成,下面就是折腾客户端了。另,这些配置文件建议先在本地修改好后再scp到服务端,因为服务端上的vi编写js文件容易遇到缩进问题。
V2Ray客户端设置
首先从V2Ray官网下载软件。
客户端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": "xxxx.xxx", //域名 "port": 443, "users": [ { "id": "b831381d-6324-4d53-ad4f-8cda48b30811", "alterId": 64 } ] } ] }, "streamSettings": { "network": "ws", "security": "tls", "wsSettings": { "path": "/ray" //路径 } } } ] }
客户端白话配置如下,主要就是选择ws传输协议,填上type路径,还有打开tls传输。
80端口配置,不需要打开tls传输,如下:
地址(address) : xxxx.xxx //这里填写你的域名或IP 端口(port) : 80 用户ID(uuid) : 这里填写你的UUID 额外ID(alterid) : 64 加密方式(security) : auto 传输协议(network) : ws 伪装域名(host) : cloudfront.com //可选项 路径(type) : /ray
443端口配置,443端口需要打开底层tls传输,如下:
地址(address) : xxxx.xxx //这里填写你的域名或IP 端口(port) : 443 用户ID(uuid) : 这里填写你的UUID 额外ID(alterid) : 64 加密方式(security) : auto 传输协议(network) : ws 伪装域名(host) : cloudfront.com //可选项 路径(type) : /ray 底层传输 :tls
和443端口都可以使用,到这也就全部完成了。有建站经验的网友应该很容易上手。提醒一下,用之前清理一下浏览器缓存。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2303805254@qq.com,本站将立刻删除。