V2ray简介
简单来说, V2Ray是一个流量转发的工具, 可以实现跟酸酸乳一样的效果, 它的优势是采用VMess协议, 可单独设置传输载体,比如TCP、mKCP、WebSocket等。而且V2Ray的节点可以伪装成正常的网站(HTTPS), 将其流量与正常的网页流量混淆。
frp内网穿透安装及配置
以前已经写过很多关于frp内网穿透的相关教程了,比如
V2ray服务端配置
下面以CentOS 7.X为例配置TLS + WebSocket版本的V2Ray, 这样的好处是: 加密性更强, 而且如果服务器被墙之后, 可以直接配置CDN,继续使用,妥妥的不受影响。
1.下载一键脚本
yum install -y wget wget https://install.direct/go.sh
2.执行安装V2Ray
sudo bash go.sh
3.V2Ray安装成功提示
当看到类似下面的提示就算安装成功了
Installing curl ...省略... Donwloading V2Ray. % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 608 0 608 0 0 2403 0 --:--:-- --:--:-- --:--:-- 2412 100 2583k 100 2583k 0 0 1229k 0 0:00:02 0:00:02 --:--:-- 1847k Installing unzip ...省略... PORT:40827 UUID:505f001d-4aa8-4519-9c54-6b65749ee3fb Created symlink from /etc/systemd/system/multi-user.target.wants/v2ray.service to /lib/systemd/system/v2ray.service. V2Ray v2.33 is installed.
4.此脚本会自动安装以下文件:
/usr/bin/v2ray/v2ray:V2Ray 程序;
/usr/bin/v2ray/v2ctl:V2Ray 工具;
/etc/v2ray/config.json:配置文件;
/usr/bin/v2ray/geoip.dat:IP 数据文件
/usr/bin/v2ray/geosite.dat:域名数据文件
此脚本会配置自动运行脚本。自动运行脚本会在系统重启之后,自动运行 V2Ray。目前自动运行脚本只支持带有Systemd的系统,以及 Debian / Ubuntu全系列。
V2Ray服务器配置参数
V2Ray安装完成后,配置文件位于/etc/v2ray/config.json,
通过编辑config.json文件来配置你需要的代理方式。以下是我常用的WebSocket配置demo, 双//后的为注释内容
{ "inbounds": [ { "port": 10086, //自定义端口号 "listen": "127.0.0.1", "protocol": "vmess", //采用vmess协议 "settings": { "clients": [ { "id": "4346de4e-6224-4f02-a388-134c2e3aead9", //UUID,安装V2Ray成功后,会默认生成一个,也可以通过在线网站https://www.uuidgenerator.net/生成 "alterId": 4 //额外ID,[1,64]均可,值会大,效率越低 } ] }, "streamSettings": { "network": "ws", //采用WebSocket协议 "wsSettings": { "path": "/ray" //自定义WS路径,Nginx配置时用 } } } ], "outbounds": [ { "protocol": "freedom", "settings": {} } ], "routing": { "rules": [ { "type": "field", "ip": [ "geoip:private" ], "outboundTag": "blocked" } ] } }
TLS证书配置放在Nginx中进行配置,V2Ray服务端就不需要配置了。
附V2Ray常用命令
service v2ray start #启动V2Ray服务 service v2ray stop #停止V2Ray服务 service v2ray status #查看V2Ray服务状态 service v2ray reload #重载V2Ray配置文件 service v2ray restart #重启V2Ray服务
TLS证书简介
TLS是证书认证机制,所以使用 TLS 需要证书,证书也有免费付费的,同样的这里使用免费证书,证书认证机构为Let's Encrypt。 证书的生成有许多方法,这里使用acme.sh 一键脚本生成。
证书有两种,一种是ECC 证书(内置公钥是 ECDSA 公钥),一种是RSA 证书(内置 RSA 公钥)。简单来说,同等长度 ECC 比 RSA 更安全,也就是说在具有同样安全性的情况下,ECC 的密钥长度比 RSA 短得多(加密解密会更快)。但问题是 ECC 的兼容性会差一些,Android 4.x 以下和 Windows XP 不支持。只要您的设备不是非常老的老古董,强烈建议使用 ECC 证书。
证书生成只需在服务器上操作, 前提是自备一个域名
注册好域名之后务必记得添加一个 A 记录指向你的 VPS
以下假设注册的域名为 mydomain.com,请将之替换成自己的域名。
免费证书生成
以下命令在/root目录下演示.
安装acme.sh
curl https://get.acme.sh | sh
安装成功后执行 source ~/.bashrc 以确保脚本所设置的命令别名生效。
如果安装报错,那么可能是因为系统缺少 acme.sh 所需要的依赖项,acme.sh 的依赖项主要是 netcat(nc),我们通过以下命令来安装这些依赖项,然后重新安装一遍 acme.sh:
sudo yum -y install netcat
使用acme.sh生成证书
以下的命令会临时监听 80 端口,请确保执行该命令前 80 端口没有使用
sudo ~/.acme.sh/acme.sh --issue -d mydomain.com --standalone -k ec-256
当出现类似以下,就说明证书生成成功了,证书目录位于/root/.acme.sh/mydomain.com_ecc目录下,其中modomain.com_ecc根据自己填写的域名变化
[Fri Dec 30 08:59:12 HKT 2016] Standalone mode. [Fri Dec 30 08:59:12 HKT 2016] Single domain='mydomain.com' ... [Fri Dec 30 08:59:16 HKT 2016] Cert success. .... [Fri Dec 30 08:59:16 HKT 2016] Your cert is in /root/.acme.sh/mydomain.com_ecc/mydomain.me.cer [Fri Dec 30 08:59:16 HKT 2016] Your cert key is in /root/.acme.sh/mydomain.com_ecc/mydomain.me.key [Fri Dec 30 08:59:16 HKT 2016] The intermediate CA cert is in /root/.acme.sh/mydomain.com_ecc/ca.cer [Fri Dec 30 08:59:16 HKT 2016] And the full chain certs is there: /root/.acme.sh/mydomain.com_ecc/fullchain.cer
证书更新命令
由于Let's Encrypt的证书有效期只有3 个月,因此需要90 天至少要更新一次证书,acme.sh 脚本会每 60 天自动更新证书。当然也可以手动更新。
手动更新 ECC 证书,执行:
sudo ~/.acme.sh/acme.sh --renew -d mydomain.com --force --ecc
如果是 RSA 证书则执行:
sudo ~/.acme.sh/acme.sh --renew -d mydomain.com --force
Nginx配置
Nginx安装
Nginx 不在默认的 yum 源中,可以使用 epel 或者官网的 yum 源,本例使用官网的yum源。
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm yum install -y nginx
Nginx配置V2Ray转发(TLS + WS)
创建Nginx-V2Ray配置文件
在/etc/nginx/conf.d目录, 创建v2ray.conf配置文件
v2ray.conf 配置参数
server { listen 443 ssl; ssl on; ssl_certificate /.acme.sh/www.mydomain.com_ecc/www.mydomain.com.cer; #acme.sh生成的证书路径 ssl_certificate_key /.acme.sh/www.mydomain.com_ecc/www.mydomain.com.key; #acme.sh生成的证书路径 ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; server_name www.mydomain.com; #证书绑定的域名 location /ray { # 与 V2Ray 配置中的 path 保持一致 proxy_redirect off; proxy_pass http://127.0.0.1:10086; # 端口与 V2Ray 配置中的 port 保持一致 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $host; # Show real IP in v2ray access.log proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
重启Nginx
重新加载Nginx配置,使其生效
nginx -s reload
注意事项
V2Ray 自4.18.1后支持TLS1.3,如果开启并强制TLS1.3请注意v2ray客户端版本.
如果在设置完成之后不能成功使用,可能是由于SElinux机制(如果你是 CentOS 7 的用户请特别留意 SElinux 这一机制)阻止了 Nginx 转发向内网的数据。如果是这样的话,在 V2Ray 的日志里不会有访问信息,在 Nginx 的日志里会出现大量的 “Permission Denied” 字段,要解决这一问题需要在终端下键入以下命令:
setsebool -P httpd_can_network_connect 1
请保持服务器和客户端的 wsSettings 严格一致,对于 V2Ray, /ray 和 /ray/ 是不一样的。
附Nginx常用命令
nginx -t #测试配置文件 nginx #启动命令 nginx -s stop #强制停止Nginx服务 nginx -s quit #处理完请求后再停止服务 nginx -s reload #重启命令 ps -ef |grep nginx #查看进程命令 nginx -v #查看Nginx的版本号
官方QQ群号码:922069959(空)、1093596563(空)