An's Blog
收藏、分享 …
Toggle navigation
Home
Cesium
SuperMap
ArcGIS
MapboxGL
CentOS
GeoServer
Favorites
Archives
Tags
基于v2ray的websocket+tls+web实现安全网络代理
2023-03-24 23:56:23
8
0
0
admin
[shadowsocks.tar.gz](/api/file/getAttach?fileId=6422dd099a54ae0224000040) ## **前言** 原来使用的代理最近一直无法使用了,原来使用的是酸酸乳,可能是因为使用的人太多了, 目标太明显,所以被和谐了。好吧,既然目标太明显的不行,那就换个小众点的吧。之前尝试使用goflyway,但是没有配置成功,所以索性就换了V2Ray的websocket+tls+web方式。好了,废话不多说,下面开始正题吧。 ## **准备** 首先你得准备一台能够作为代理的服务器,至于服务器存在的物理位置,取决于你的用途吧,如果能够使用域名的话就更好了。 搬瓦工VPS:https://www.banwagongzw.com/6.html ## **服务器端安装配置** 注意,我的命令都是在root权限下执行的,如果想更安全的配置服务器,可以选择使用非root账户配合sudo进行安装配置操作。 ### **1、校验时间** 对于 V2Ray,它的验证方式包含时间,就算是配置没有任何问题,如果时间不正确,也无法连接 V2Ray 服务器的,服务器会认为你这是不合法的请求。所以系统时间一定要正确,只要保证时间误差在一分钟之内就没问题。 对于 VPS(Linux) 可以执行命令 date -R 查看时间: $ date -R Sun, 01 Jul 2018 21:57:05 -0400 输出结果中的 -0400 代表的是时区为西4区,如果转换成东 8 区时间则为 2018-07-2 09:57:05。 如果时间不准确,可以使用 date --set 修改时间,或者使用ntpdate与ntp服务器同步。 ### **2、V2Ray服务器安装** V2Ray可以在以下平台中运行: 1. Windows Vista 及之后版本(x86 / amd64); 2. Mac OS X 10.7 及之后版本(amd64); 3. Linux 2.6.23 及之后版本(x86 / amd64 / arm / arm64 / mips64 / mips); 4. 包括但不限于 Debian 7 / 8、Ubuntu 12.04 / 14.04 及后续版本、CentOS 6 / 7、Arch Linux; 5. FreeBSD (x86 / amd64); 6. OpenBSD (x86 / amd64); 7. Dragonfly BSD (amd64); 可以看到支持的平台非常丰富,Windows与Mac OS的运行非常简单,只需要解压目录,直接运行v2ray或v2ray.exe就可以了。 我这里使用的是Debian 9,并使用脚本安装: **方法一(过期):** bash <(curl -L -s https://install.direct/go.sh) **方法二:** curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-dat-release.sh bash install-release.sh bash install-dat-release.sh 当 yum 或 apt-get 可用的情况下,此脚本会自动安装 unzip 和 daemon。这两个组件是安装 V2Ray 的必要组件。如果你使用的系统不支持 yum 或 apt-get,请自行安装 unzip 和 daemon。 此脚本会配置自动运行脚本。自动运行脚本会在系统重启之后,自动运行 V2Ray。目前自动运行脚本只支持带有 Systemd 的系统,以及 Debian / Ubuntu 全系列。 ### **3、UUID生成** VMess 的 id 使用的是 UUID 格式,作用类似于passwd,客户端与服务器端的UUID相同才能进行VMess连接。你可以使用UUID生成工具随即生成一个(如后面会说到的V2RayN客户端辅助工具),或者访问 UUID Generator 获得一个,还能够在Linux中使用命令cat /proc/sys/kernel/random/uuid生成。 ### **4、V2Ray配置文件** 使用脚本安装完成后,需要完成配置文件的修改,脚本安装后的配置文件存放位置为/etc/v2ray/config.json 或者 /usr/local/etc/v2ray/config.json。具体配置文件如下: **VMESS配置:** { "inbound": { "port": 1028, "listen":"127.0.0.1", //只监听 127.0.0.1,避免除本机外的机器探测到开放了 1028 端口 "protocol": "vmess", //使用vmess协议 "settings": { "clients": [ { "id": "b831381d-6324-4d53-ad4f-8cda48b30811", //这里写入之前通过不同方式获得的UUID "alterId": 64 } ] }, "streamSettings": { "network": "ws", //使用websocket协议作为传输协议 "wsSettings": { "path": "/v2ray" //WebSocket所使用的HTTP协议路径 } } }, "outbound": { "protocol": "freedom", "settings": {} } } **VLESS配置:** { "inbounds": [ { "port": 1028, "listen": "127.0.0.1", "protocol": "vless", "settings": { "decryption": "none", "clients": [ { "id": "050f8df2-a488-4505-acb1-f7b111a63baa", "level": 0 } ] }, "streamSettings": { "network": "ws", "wsSettings": { "path": "/v2ray" } } } ], "outbounds": [ { "protocol": "freedom", "settings": {} } ] } 这里需要注意的是,JSON是不支持注释的,所以如果需要复制配置文件,请务必删除//注释,以免造成配置文件错误。还可以使用V2Ray自带的配置检测功能对配置文件进行检测,如下: $ /usr/bin/v2ray/v2ray -test -config /etc/v2ray/config.json V2Ray v3.26 (die Commanderin) 20180614 A unified platform for anti-censorship. Configuration OK. 这里显示配置没有问题,如果配置存在问题,检测会提示配置文件错误的地方。 ### **5、Caddy安装** 在完成V2Ray的安装和配置后,下面就需要实现Web+TLS的功能了。我们可以使用源码或脚本的方式安装Caddy,但是因为Caddy使用的是Go语音编写的,可能需要golang的编译器,存在一些门槛,所以推荐脚本方式安装。运行下面的命令,等待脚本执行完成。 **方法一(过期):** curl https://getcaddy.com | bash -s personal **方法二(下载安装包直接安装):** https://github.com/caddyserver/caddy/releases  注意:这里Caddy目前对个人使用是免费的,对于商业用途是收费的,我们是个人使用,所以就选择Personal。 为什么选择Caddy而不用Nginx或者Apache等等,主要的原因是Caddy的配置简单,并且Caddy可以自动去申请和维护免费的SSL证书,这点要比NG和HTTPD要简单省事的多。(原谅我的懒惰) ### **6、Caddy配置** 我选择使用生产环境的配置,这样比较规范吧。一般情况下会放到 /etc/caddy 里。 mkdir /etc/caddy touch /etc/caddy/Caddyfile chown -R root:www-data /etc/caddy 除了配置文件,caddy 会自动生成 ssl 证书,需要一个文件夹放置 ssl 证书。 mkdir /etc/ssl/caddy chown -R www-data:root /etc/ssl/caddy chmod 0770 /etc/ssl/caddy 因为 ssl 文件夹里会放置私钥,所以权限设置成 770 禁止其他用户访问。 创建好这些文件和目录了之后,我们需要把 caddy 配置成一个服务,这样就可以开机自动运行,并且管理起来也方便。因为目前大多数发行版都使用 systemd 了,所以这里只讲一下如何配置 systemd,先下载服务配置文件: curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service # 从 github 下载 systemd 配置文件 sudo systemctl daemon-reload # 重新加载 systemd 配置 将caddy.service文件中以下三项配置选项的注释符#删除,如下: CapabilityBoundingSet=CAP_NET_BIND_SERVICE AmbientCapabilities=CAP_NET_BIND_SERVICE NoNewPrivileges=true 启动Caddy服务。 systemctl enable caddy.service # 设置 caddy 服务自启动 systemctl status caddy.service # 查看 caddy 状态 ### **7、Caddyflie配置** **方法一(过期):** ray.mydomain.me #你的站点域名 { log /var/log/caddy/caddy.log tls test@csds.xxx proxy /v2ray localhost:1028 { #注意这里需要与v2ray中配置的监听端口及WebSocket所使用的HTTP协议路径一致 websocket header_upstream -Origin } } **方法二:** root@us-vps:/etc/caddy# cat Caddyfile # The Caddyfile is an easy way to configure your Caddy web server. # # Unless the file starts with a global options block, the first # uncommented line is always the address of your site. # # To use your own domain name (with automatic HTTPS), first make # sure your domain's A/AAAA DNS records are properly pointed to # this machine's public IP, then replace the line below with your # domain name. tw.anxm.club # Set this path to your site's directory. root * /v2ray # Enable the static file server. file_server # Another common task is to set up a reverse proxy: reverse_proxy localhost:1028 # Or serve a PHP site through php-fpm: # php_fastcgi localhost:9000 # Refer to the Caddy docs for more information: # https://caddyserver.com/docs/caddyfile root@us-vps:/etc/caddy# 第四行的 tls 指令告诉 caddy 为网站开启 https 并自动申请证书,后面的 email 参数是告知 CA 申请人的邮箱。(caddy 会默认使用 let’s encrypt 申请证书并续约,很方便吧) 这里需要注意一点的是,因为caddy.service中默认的进程运行用户和用户组为www-data,所以日志文件也需要让www-data用户能够有权限读写,当然你也可以选择将日志文件存放在配置文件目录中。 mkdir /var/log/caddy/ touch /var/log/caddy/caddy.log chown -R root:www-data /var/log/caddy/ chmod 777 /var/log/caddy/caddy.log ### **8、启动Caddy和V2Ray** 这里配置完成后,就可以启动Caddy了,启动前可能还需要运行ulimit -n 8192对最大文件打开数进行修改,否则在启动Caddy时会报关于最大文件打开数的提示,导致启动失败。 # systemctl start caddy # systemctl status caddy caddy.service - Caddy HTTP/2 web server Loaded: loaded (/etc/systemd/system/caddy.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2018-07-01 21:56:01 EDT; 2h 13min ago Docs: https://caddyserver.com/docs Main PID: 664 (caddy) Tasks: 8 (limit: 4915) CGroup: /system.slice/caddy.service 664 /usr/local/bin/caddy -log stdout -agree=true -conf=/etc/caddy/Caddyfile -root=/var/tmp Jul 01 21:56:01 debian caddy[664]: Activating privacy features... done. # systemctl start v2ray # systemctl status v2ray v2ray.service - V2Ray Service Loaded: loaded (/etc/systemd/system/v2ray.service; enabled; vendor preset: enabled) Active: active (running) since Sun 2018-07-01 21:56:01 EDT; 2h 25min ago Main PID: 668 (v2ray) Tasks: 7 (limit: 4915) CGroup: /system.slice/v2ray.service 668 /usr/bin/v2ray/v2ray -config /etc/v2ray/config.json Jul 01 21:56:01 debian systemd[1]: Started V2Ray Service. Jul 01 21:56:01 debian v2ray[668]: V2Ray v3.26 (die Commanderin) 20180614 Jul 01 21:56:01 debian v2ray[668]: A unified platform for anti-censorship. Jul 01 21:56:02 debian v2ray[668]: 2018/07/01 21:56:02 [Warning] Core: V2Ray v3.26 started ## **客户端安装配置** 客户端的安装配置相对简单,我们这里使用windows的平台来举例说明,首先去github上的v2ray-core项目中下载对应windows的最新的程序包,传送门。 下载后直接解压出目录。 《基于v2ray的websocket+tls+web实现安全网络代理》 我们可以在目录中看到一个config.json的配置文件,打开配置文件(建议使用notepad++或ultraedit编译,最好不要使用记事本,避免BOM编码的问题),配置文件如下: { "inbound": { "port": 1080, "listen": "127.0.0.1", "protocol": "socks", "domainOverride": ["tls","http"], "settings": { "auth": "noauth", "udp": false } }, "outbound": { "protocol": "vmess", "settings": { "vnext": [ { "address": "ray.mydomain.me", "port": 443, "users": [ { "id": "b831381d-6324-4d53-ad4f-8cda48b30811", "alterId": 64 } ] } ] }, "streamSettings": { "network": "ws", "security": "tls", "wsSettings": { "path": "/v2ray" } } } } 这里配置文件需要注意的是,确保UUID、域名和端口,还有WebSocket所使用的HTTP协议路径与服务器端相匹配。 配置完成后,在解压目录中运行v2ray.exe文件,弹出命令窗口,显示v2ray正在运行。 《基于v2ray的websocket+tls+web实现安全网络代理》 这样就可以配置浏览器中的代理设置,并使用浏览器通过V2Ray代理访问各类Web站点。 《基于v2ray的websocket+tls+web实现安全网络代理》 这里补充一下,还可以使用一些第三方开发的图形化客户端进行代理设置,更方便的对v2ray进行配置。如:V2RayN、V2RayW等等。 这里我们列举V2RayN这款Windows客户端进行说明,在GitHub上下载该客户端。传送门 下载后将文件解压至v2ray-windows程序目录中,双击打开V2RayN.exe文件,如下图所示: 《基于v2ray的websocket+tls+web实现安全网络代理》 添加WMess服务器。 《基于v2ray的websocket+tls+web实现安全网络代理》 配置服务器参数,这里就与配置config.json文件的一样,实际上就是通过图形界面的配置生成一个config.json文件。 《基于v2ray的websocket+tls+web实现安全网络代理》 配完成后,启动代理,测试访问。 《基于v2ray的websocket+tls+web实现安全网络代理》 《基于v2ray的websocket+tls+web实现安全网络代理》 ## **手机客户端介绍** ### **1、IOS客户端** 可以在苹果商店中搜索Kitsunebi及Kitsunebi Lite。 ### **2、Android客户端** V2RayNG:GitHub(作者一直在维护,推荐使用) V2Ray Go:GitHub(这个很久没有更新了,不推荐使用) BifrostV:直接百度下载 ## **BBR加速配置** bbr这个东西真乃神器,所以如果你的代理服务器在国外,强烈建议开启bbr的功能。我的小鸡使用的是debian 9,默认内核是支持bbr加速的,但是没有开启。如果你的系统过于陈旧,需要更新linux内核至4.9以上并编译安装bbr,具体的安装步骤可以去百度,网上有大把的教程。 开启方法 ### **1、修改系统变量** echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf ### **2、保存生效** sysctl -p ### **3、查看内核是否已开启BBR** sysctl net.ipv4.tcp_available_congestion_control 显示以下即已开启: net.ipv4.tcp_available_congestion_control = bbr cubic reno ### **4、查看BBR是否启动** lsmod | grep bbr 显示以下即启动成功: # lsmod | grep bbr tcp_bbr 20480 14 ### **5、测试BBR效果** 可以看到,开启BBR后,在油土鳖上开1080P毫无压力。 《基于v2ray的websocket+tls+web实现安全网络代理》 ## **参考博文** 这里同时需要感谢以下的博文作者,这些博文在我搭建和使用目前这套系统中提供了很大的帮助。 1. V2Ray的作者Victoria Raymond:https://www.v2ray.com 2. V2Ray 配置指南 :https://toutyrater.github.io 3. Caddy – 方便够用的 HTTPS server 新手教程:https://lengzzz.com/note/caddy-http-2-web-server-guide-for-beginners 4. Debian 9快速开启Google BBR的方法,实现高效单边加速:https://www.moerats.com/archives/297/ 5. [vless配置](http://www.aiii.vip/514.html) 6. https://ssrvps.org/archives/10129 7. https://github.com/v2fly/v2ray-examples/tree/master/VLESS-TCP-TLS-WS%20(recommended) 8. https://tlanyan.me/introduce-v2ray-vless-protocol/
Pre:
glTF说明
Next:
nginx反向代理iServer
0
likes
8
Weibo
Wechat
Tencent Weibo
QQ Zone
RenRen
Table of content