先注册一个域名。在linux vps上,安装acme.sh和v2ray. v2ray的可执行文件为
/usr/local/bin/v2ray,其配置文件所在的目录为/usr/local/etc/v2ray/,
v2ray服务器端的配置文件,我取名为v2ray-tls-config.json,
cat /usr/local/etc/v2ray/v2ray-tls-config.json
{ "inbounds": [ { "port": 445, // 不一定要用443端口 "protocol": "vmess", "settings": { "clients": [ { "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297", "alterId": 64 } ] }, "streamSettings": { "network": "tcp", "security": "tls", // security 要设置为 tls 才会启用 TLS "tlsSettings": { "certificates": [ { "certificateFile": "/root/.acme.sh/urdomain.com/fullchain.cer",
"keyFile": "/root/.acme.sh/urdomain.com/urdomain.com.key" } ] } } } ], "outbounds": [ { "protocol": "freedom", "settings": {} } ] }
然后运行:
v2ray -config /usr/local/etc/v2ray/v2ray-tls-config.json
不过此命令是运行在前台的,容易退出,我们可以利用systemd把它运行为service:
nano /etc/systemd/system/v2ray-tls.service
cat /etc/systemd/system/v2ray-tls.service
[Unit]
After=network.target
[Service]
ExecStart=/usr/local/bin/v2ray -config /usr/local/etc/v2ray/v2ray-tls-config.json
Restart=always
[Install]
WantedBy=multi-user.target
然后运行,
systemctl start v2ray-tls
systemctl enable v2ray-tls
服务器端搭建完成。
在本地机器mac或linux桌面系统上,安装v2ray.
客户端的配置文件,我把它取名为v2ray-tls-config-socks-proxy-mode.json,内容如下:
{ "inbounds": [ { "port": 3080, "protocol": "socks", // socks协议可以换成http协议 "sniffing": { "enabled": true, "destOverride": ["http", "tls"] }, "settings": { "auth": "noauth" } } ], "outbounds": [ { "protocol": "vmess", "settings": { "vnext": [ { "address": "urdomain.com", // tls 需要域名,所以这里应该填自己的域名。 "port": 445, "users": [ { "id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297", "alterId": 64 } ] } ] }, "streamSettings": { "network": "tcp", "security": "tls" // 客户端的 security 也要设置为 tls } } ] }
然后运行:
v2ray -config v2ray-tls-config-socks-proxy-mode.json
不要关闭这个终端,然后设置浏览器的socks5代理服务器地址为127.0.0.1 ,端口:3080 ,浏览器即可翻墙。
V2Ray 的 TLS 不是伪装流量或混淆流量,这是完整、真正的 TLS加密。因此才需要域名和证书。
正因为它用了TLS加密,所以翻墙效果非常可靠,比纯kcp方式(https://briteming.blogspot.com/2015/10/v2ray.html)可靠多了。
上面的urdomain.com是购买的付费域名,那么上面这么操作后,浏览器即可翻墙。
如果urdomain.com是你注册的免费的可解析的域名,那么此域名有可能已被gfw封锁,无法解析,导致用客户端命令连接不上服务器。解决办法:
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
运行某个ss客户端程序。
cd ~/dns-tcp-socks-proxy;sudo ./dns_proxy
(用法详见https://briteming.blogspot.com/2019/07/dns-tcp-socks-proxysocks-proxydns.html)
然后运行上面的客户端命令。
(如果你合拢了mac机器的机盖,需先运行
sudo networksetup -setdnsservers "Wi-Fi" 127.0.0.1
sudo killall dns_proxy;cd ~/dns-tcp-socks-proxy;sudo ./dns_proxy
然后重新运行客户端命令:
v2ray -config v2ray-tls-config-socks-proxy-mode.json
不要关闭这个终端,然后设置浏览器的socks5代理服务器地址为127.0.0.1 ,端口:3080 ,浏览器即可翻墙。
参考自:https://github.com/bannedbook/fanqiang/blob/master/v2ss/%E8%87%AA%E5%BB%BAV2Ray%2BTLS%E7%BF%BB%E5%A2%99%E9%85%8D%E7%BD%AE%E6%96%B9%E6%B3%95.md
----------------
V2Ray之TLS+WebSocket翻墙方法
WebSocket 的配置其实很简单,基于前文 V2Ray+TLS的基础上, 我们把 "network": "tcp" 改成 "network": "ws" 就行了,注意,服务器和客户端要同时修改哦。
话不多说了,直接上配置。
服务器
{
"inbounds": [
{
"port": 443, // 建议使用 443 端口
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297",
"alterId": 64
}
]
},
"streamSettings": {
"network": "ws",
"security": "tls", // security 要设置为 tls 才会启用 TLS
"tlsSettings": {
"certificates": [
{
"certificateFile": "/etc/v2ray/v2ray.crt", // 证书文件
"keyFile": "/etc/v2ray/v2ray.key" // 密钥文件
}
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
客户端
{
"inbounds": [
{
"port": 1080,
"protocol": "socks",
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
},
"settings": {
"auth": "noauth"
}
}
],
"outbounds": [
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "mydomain.me", // tls 需要域名,所以这里应该填自己的域名。如果前面配置了子域名,可以使用其中一个子域名,子域名被封可换另一个子域名
"port": 443,
"users": [
{
"id": "23ad6b10-8d1a-40f7-8ad0-e3e35cd38297",
"alterId": 64
}
]
}
]
},
"streamSettings": {
"network": "ws",
"security": "tls" // 客户端的 security 也要设置为 tls
}
}
]
}
结语
改完服务器、客户端配置后,重启服务器,然后重启客户端,开始冲浪,是不是感觉更快了一些呢?
from https://github.com/bannedbook/fanqiang/blob/master/v2ss/V2Ray%E4%B9%8BTLS%2BWebSocket%E7%BF%BB%E5%A2%99%E6%96%B9%E6%B3%95.md
----------------------------------------------------------------------
折腾v2ray的http2方式代理
安装结束后,我们用winscp软件登陆vps进行相关修改。进入/usr/local/caddy/ 下新建Caddyfile文件(注意大小写 )并写入配置文件。下面我用cloud.cctv.com域名、demo@cctv.com邮箱、/data路径为例,进行相关配置。请换成自己的。
保存后,启动Caddy。 启动后可以重启vps直接输入reboot命令。重启后看/temp/caddy.log启动是否正常,如果不正常,看相关提示操作。在winscp里面按ctrl+alt+H键,看是否有隐藏文件夹.caddy。
winscp打开/etc/v2ray/config.json进行修改
其中cloud.cctv.com改为自己的,路径/data和Caddy中一致,"certificateFile": "/etc/v2ray/v2ray.crt","keyFile": "/etc/v2ray/v2ray.key"的路径要和/.caddy/acme/acme-v01.api.letsencrypt.org/sites/cloud.cctv.com/进行软链,不进行软链要输入完整Caddy生成的证书文件所在的位置.
运行命令:ps aux|grep v2ray 查看v2ray是否正常启动。
如一切正常,你就可以用http/2协议进行翻墙了。
简单地说 HTTP/2 是 HTTP/1.1 的升级版(目前大多数网页还是 HTTP/1.1),点击这里可以直观地体会到 HTTP/2 相比于 HTTP/1.1 的提升(不代表 V2Ray 中 HTTP/2 相对于 TCP 的提升就是这样的)。
配置
最近几版的 V2Ray 已经开始支持 HTTP/2,可能 v3.12 就支持了,实测 v3.14 能够使用 HTTP/2 了。与其它的传输层协议一样在 streamSettings 中配置。
与其它的传输层协议一样在 streamSettings 中配置,不过要注意的是使用 HTTP/2 要开启 TLS。
服务器配置
{
"inbounds": [
{
"port": 443,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811",
"alterId": 64
}
]
},
"streamSettings": {
"network": "h2", // h2 也可写成 http,效果一样
"httpSettings": { //此项是关于 HTTP/2 的设置
"path": "/ray"
},
"security": "tls", // 配置tls
"tlsSettings": {
"certificates": [
{
"certificateFile": "/etc/v2ray/v2ray.crt", // 证书文件,详见 tls 小节
"keyFile": "/etc/v2ray/v2ray.key" // 密钥文件
}
]
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
客户端配置
{
"inbound": [
{
"port": 1080,
"listen": "127.0.0.1",
"protocol": "socks",
"domainOverride": ["tls","http"],
"settings": {
"auth": "noauth",
"udp": false
}
}
],
"outbound": [
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "mydomain.me",
"port": 443,
"users": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811",
"alterId": 64
}
]
}
]
},
"streamSettings": {
"network": "h2",
"httpSettings": { //此项是关于 HTTP/2 的设置
"path": "/ray"
},
"security": "tls"
}
}
]
}
服务器反代配置,没找到相关资料……
用nginx的话,需要在编译的时候开启 –with-http_v2_module,配置加入proxy_http_version 2
但问题是:
http2可以让客户端复用连接提高性能,但是不适合用于服务器端proxy,大量的请求复用连接反而会使性能下降。
—— 以前在某篇技术文章看到的,大概是这个意思。→nginx官方issue
所以V2Ray 引入 HTTP/2 的意义到底是什么呢……
用Caddy倒是能直接反代http2,但没我用过,不予置评:
mydomain.me
{
log ./caddy.log
proxy /v2ray https://127.0.0.1:5050 {
header_upstream Host {host}
header_upstream X-Forwarded-Proto {scheme}
insecure_skip_verify
}
}
No comments:
Post a Comment