简介
介绍
Trojan模仿了互联网上最常见的Https协议,以诱骗GFW封锁认为它就是Https,从而不被识别. Trojan处理来自外界的Https请求,如果是合法的,那么为该请求提供服务,否则将该流量转交给Web服务器Nginx,由Nginx为其提供服务. 基于这个工作过程可以知道,Trojan的一切表现与Nginx一致,不会引入额外特征,从页达到无法识别的效果.复制代码
Trojan与V2ray ws协议的区别
V2ray是Nginx侦听443,数据->Nginx->V2ray;Trojan是自己侦听443,都是伪装成网站.复制代码
Trojan-Go访问原理
当一个客户端试图连接Trojan-Go的监听端口时,会发生下面的事情: 如果TLS握手成功,检测到TLS的内容非Trojan协议(有可能是HTTP请求,或者来自GFW的主动探测)。Trojan-Go将TLS连接代理到本地127.0.0.1:80上的HTTP服务。这时在远端看来,Trojan-Go服务就是一个HTTPS网站。 如果TLS握手成功,并且被确认是Trojan协议头部,并且其中的密码正确,那么服务器将解析来自客户端的请求并进行代理,否则和上一步的处理方法相同。 如果TLS握手失败,说明对方使用的不是TLS协议进行连接。此时Trojan-Go将这个TCP连接代理到本地127.0.0.1:1234上运行的HTTPS服务(或者HTTP服务),返回一个展示400 Bad Reqeust的HTTP页面。fallback_port是一个可选选项,如果没有填写,Trojan-Go会直接终止连接。虽然是可选的,但是还是强烈建议填写。复制代码
部署
准备工作
►更新系统安装环境
# 更新系统
yum update -y #CentOS
apt update -y #Debian
# 安装curl|wget
yum install -y curl #CentOS
yum install -y wget #CentOS
apt-get install wget #Debian Ubuntu
apt-get install curl #Debian Ubuntu安装Trojan-go面板
提前准备好trojan-web面板域名和trojan服务域名
Jrohy的一键Trojan面板脚本
#安装/更新 source <(curl -sL https://git.io/trojan-install) #卸载 source <(curl -sL https://git.io/trojan-install) --remove修改trojan-web端口
/etc/systemd/system/trojan-web.service 在/usr/local/bin/trojan web 后面添加 -p port systemctl daemon-reload systemctl restart trojan-webtrojan设置
# 修改端口 /usr/local/etc/trojan/config.json # 申请证书报错 netstat -ntlp 采用命令 sudo fuser -k 80/tcp 强制 杀掉进程 nginx # 连接被墙的外网就No route to host: 切换trojan-go版本解决更改Trojan-Go配置文件(可选)
# 找到VPS目录文件 /usr/local/etc/trojan/config.json ,备份一份(若是把类型切换回来可以恢复使用Trojan) # 需要增加WS等其他Trojan-Go所支持的模块,增加完成后保存并在面板重启Trojan-GO服务 "websocket": { "enabled": true, "path": "/DFE4545DFDED/", "host": "你的域名" }, "mux": { "enabled": true, "concurrency": 8, "idle_timeout": 60 }
常见问题总结
Failed to set locale, defaulting to C.UTF-8解决方法
Invalid version. The only valid version for X509Req is 0.
参考链接
https://ybfl.net/sites/158.html
https://v2rayssr.com/bbr.html
https://v2rayssr.com/trojancdn.html
https://github.com/Jrohy/trojan
https://www.youtube.com/watch?v=tC5bER5iHyE
https://kejilion.blogspot.com/2023/10/vps.html