利用TLS 分流器实现Trojan与V2ray和SS分流(一) 作者: Hogwarts 发布于: 2020-08-05 更新于: 2021-03-07 分类: 红杏出墙 一个vps上布置多个翻墙软件确实有坟头上蹦迪的感觉;但纯粹从技术的角度看,这又是技术的一大进步。 TLS分流最先接触的是Trojan-GFW,监听443端口,然后把非Trojan流量交给监听80端口的nginx或caddy,根据路径分流v2ray和ss流量,这种分流从理论的角度v2ray和ss速度明显变慢。第二种分流是利用nginx的stream分流,据说效果不错,未进行实践。需要实践的可以看这篇教程:https://www.chengxiaobai.cn/record/trojan-shared-443-port-scheme.html 。第三种就是本篇要介绍的tls-shunt-proxy分流器。 #一、实现的理论基础 两个域名,A域名v2ray和ss用,B域名trojan用。Tls-shunt-proxy分流器监听443端口,并且处理A域名的证书。Tls-shunt-proxy分流器解开A域名的TLS流量,分别给v2ray或ss,不解开B域名的流量,把流量直接交Trojan处理,Trojan同时处理B域名的证书,非Trojan流量交给其他端口处理(例如由caddy监听的80端口)。 ##1.1 安装TLS 分流器 官方网址: https://github.com/liberal-boy/tls-shunt-proxy 推荐一键安装命令: bash <(curl -L -s https://raw.githubusercontent.com/liberal-boy/tls-shunt-proxy/master/dist/install.sh) 配置文件位于 `/etc/tls-shunt-proxy/config.yaml`, 通过`systemctl status tls-shunt-proxy.service`命令查看其运行状态。 ##1.2 安装v2ray、Go-shadowsocks2、Trojan-go - v2ray推荐一键安装命令: bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh) 通过`service v2ray status`命令查看其运行状态。 - 前文有介绍安装Go-shadowsocks2、Trojan-go的文章。 - 将这三个软件默认监听的0.0.0.0:443改为127.0.0.1:port1/2/3,port是TLS分流器与VPS之间内部通信的端口,需与 /etc/tls-shunt-proxy/config.yaml的一致。 - Go-shadowsocks2额外加一个路径“path=/goss2” #二、TCP模式下v2ray/ss-v2pluin+TLS+Web方案,并与Trojan-go共享端口 - 采用这种模式的前提是vps的线路要好,选择适合自己宽带的周边国家的VPS最好了;或者选择美西GIA线路也可以。 ##2.1 TLS分流器的TCP配置 cp /etc/tls-shunt-proxy/config.yaml /etc/tls-shunt-proxy/config.yaml.bak //防翻车做个备份吧 vim /etc/tls-shunt-proxy/config.yaml yaml很娇气,修改时注意格式。 listen: 0.0.0.0:443 inboundbuffersize: 4 outboundbuffersize: 32 vhosts: - name: vmess.example.com #A域名 tlsoffloading: true managedcert: true alpn: h2,http/1.1 protocols: tls12,tls13 http: paths: - path: /goss2 #Go-shadowsocks2的路径 handler: proxyPass args: 127.0.0.1:40000 #Go-shadowsocks2与vps通信的端口,和配置文件一致即可 handler: fileServer args: /var/www/html #静态网站的路径 default: handler: proxyPass args: 127.0.0.1:40001 #v2ray与vps通信的端口,和配置文件一致即可 - name: trojan.example.com #B域名 tlsoffloading: false default: handler: proxyPass args: 127.0.0.1:8443 #trojan-go与vps通信的端口,和配置文件一致即可 - 查看分流器运行状态 systemctl restart tls-shunt-proxy.service systemctl status tls-shunt-proxy.service ##2.2 V2ray的TCP配置 { "inbounds": [ { "protocol": "vmess", "listen": "127.0.0.1", "port": 40001, #与分流器保持一致 "settings": { "clients": [ { "id": "ccc49350-a6de-434d-8654-4fde541321d7" #你的UUID } ] }, "streamSettings": { "network": "tcp" } } ], "outbounds": [ { "tag": "direct", "protocol": "freedom", "settings": {} }, { "tag": "blocked", "protocol": "blackhole", "settings": {} } ], "routing": { "domainStrategy": "AsIs", "rules": [ { "type": "field", "ip": [ "geoip:private" ], "outboundTag": "blocked" }, { "type": "field", "protocol": [ "bittorrent" ], "outboundTag": "blocked" } ] } } - 查看v2ray的运行状态 sevice v2ray start sevice v2ray status ##2.3 ss-v2pluin的TCP配置 vim /etc/go-shadowsocks2/go-shadowsocks2.env REMOTE_ADDR=ss://aes-128-gcm:yourpassword(你的密码)@127.0.0.1:port(要与分流器一致,本例是40000) -verbose -plugin v2ray-plugin -plugin-opts "server;path=goss2(要与分流器一致,本例是goss2)" - 查看go-shadowsocks2的运行状态 systemctl restart go-shadowsocks2 systemctl status go-shadowsocks2 ##2.4 Trojan-go的TCP配置 { "run_type": "server", "local_addr": "127.0.0.1", "local_port": 8443, #与vps通信的端口,和分流器一致即可 "remote_addr": "amazon.com", #如装有caddy可设置为127.0.0.1 "remote_port": 80, "password": [ " yourpassword " #你的密码 ], "ssl": { "cert": "/etc/trojan-go/fullchain.crt", #证书路径 "key": "/etc/trojan-go/private.key", #密钥路径 "sni": "你的域名" }, "router": { "enabled": true, "block": [ "geoip:private" ], "geoip": "/etc/trojan-go/geoip.dat", #注意路径 "geosite": "/etc/trojan-go/geosite.dat" #注意路径 } } - 查看trojan-go的运行状态 systemctl restart trojan-go systemctl status trojan-go - 配置完毕,在查看运行状态时如果有问题,不要着急,慢慢的查找并解决问题。把上面的掌握了,再接着往下看。 # 三、在v2ray的白话文中讲到也可采用第二种模式即Domain Socket模式 相比 TCP模式,DS模式更为高效。根据测试反馈,速度超过 50Mbps时,通常会有较明显的性能差距。可参考https://guide.v2fly.org/advanced/tcp_tls_shunt_proxy.html ##3.1 DS模式下TLS 分流器的配置 listen: 0.0.0.0:443 inboundbuffersize: 4 outboundbuffersize: 32 vhosts: - name: vmess.example.com #A域名 tlsoffloading: true managedcert: true alpn: h2,http/1.1 protocols: tls12,tls13 http: paths: - path: /goss2 #Go-shadowsocks2与vps通信的路径,和配置文件一致即可 handler: proxyPass args: 127.0.0.1:40000 #Go-shadowsocks2的端口 handler: fileServer args: /var/www/html #静态网站的路径 default: handler: proxyPass args: unix:/tmp/v2ray-ds/v2ray.sock //v2ray与vps内部通信 - name: trojan.example.com #B域名 tlsoffloading: false default: handler: proxyPass args: 127.0.0.1:8443 #trojan-go与vps通信的端口,和配置文件一致即可 查看分流器运行状态 systemctl restart tls-shunt-proxy systemctl status tls-shunt-proxy ##3.2 DS模式下v2ray的配置 vim /etc/v2ray/config.json { "inbounds": [ { "protocol": "vmess", "listen": "127.0.0.1", "port": 40001, #采用了DS的模式,端口无意义,随意即可 "settings": { "clients": [ { "id": "f2435e5c-9ad9-4367-836a-8341117d0a5f" #修改UUID } ] }, "streamSettings": { "network": "ds", "dsSettings": { "path": "/tmp/v2ray-ds/v2ray.sock" } } } ], "outbounds":[ { "protocol":"freedom", "settings":{}, "tag":"direct" }, { "protocol":"blackhole", "settings":{}, "tag":"adblock" } ], "routing":{ "domainStrategy":"IPOnDemand", "rules":[ { "domain":[ "googleadsserving.com" ], "type":"field", "outboundTag":"adblock" }, { "type":"field", "outboundTag":"direct", "domain":["geosite:cn"] }, { "type": "field", "outboundTag": "block", "protocol": [ "bittorrent" ] } ] } } sevice v2ray start sevice v2ray status - 修改 V2Ray 的 systemd 配置文件,在Debian下有效,其它系统请注意路径问题 vim /etc/systemd/system/v2ray.service [Unit] Description=V2Ray - A unified platform for anti-censorship Documentation=https://v2ray.com https://guide.v2fly.org After=network.target nss-lookup.target Wants=network-online.target [Service] Type=simple User=root #白话文建议以普通用户运行,容易翻车,建议用root用户 CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_NET_RAW NoNewPrivileges=yes ExecStartPre=/usr/bin/mkdir -p /tmp/v2ray-ds #注意mkdir路径 ExecStartPre=/usr/bin/rm -rf /tmp/v2ray-ds/*.sock #注意rm路径 ExecStart=/usr/bin/v2ray/v2ray -config /etc/v2ray/config.json #注意路径 ExecStartPost=/usr/bin/sleep 1 #注意sleep路径 ExecStartPost=/usr/bin/chmod 777 /tmp/v2ray-ds/v2ray.sock #注意chmod路径 Restart=on-failure RestartPreventExitStatus=23 [Install] WantedBy=multi-user.target systemctl daemon-reload sevice v2ray stop sevice v2ray start sevice v2ray restart sevice v2ray status 标签: shadowsocks, trojan-go, xray, v2ray
评论已关闭