搭建前提: 已经拥有固定IP的VPS以及正确解析域名到VPS。
Trojan原理简介
Trojan是一个比较新的翻墙软件,在设计时采用了更适应国情的思路。在穿透GFW时,人们认为强加密和随机混淆可能会欺骗GFW的过滤机制。然而,Trojan实现了这个思路的反面:它模仿了互联网上最常见的HTTPS协议,以诱骗GFW认为它就是HTTPS,从而不被识别。ListenListenValidInvalidRedirectto 443
如图所示,Trojan工作在443端口,并且处理来自外界的HTTPS请求,如果是合法的Trojan请求,那么为该请求提供服务,否则将该流量转交给web服务器Nginx,由Nginx为其提供服务。基于这个工作过程可以知道,Trojan的一切表现均与Nginx一致,不会引入额外特征,从而达到无法识别的效果。当然,为了防止恶意探测,我们需要将80端口的流量全部重定向到443端口,并且服务器只暴露80和443端口,这样可以使得服务器与常见的Web服务器表现一致。
一键脚本搭建Trojan服务器
使用Randy’s 堡垒维护的 Trojan 一键安装脚本,需求及特性如下:
- 系统支持centos7+/debian9+/ubuntu16+
- 域名需要解析到VPS并生效
- 需要VPS开放80、443端口
- 脚本自动续签https证书
- 自动配置伪装网站,位于/usr/share/nginx/html/目录下,可自行替换其中内容
- Trojan不能用CDN,不要开启CDN
开始搭建
- SSH连接到VPS后台,进入root用户
sudo -i
- 安装必须的依赖组件
yum -y install wget ##ContOS Yum 安装 wget
or
apt-get install wget ##Debian Ubuntu 安装 wget
- 复制以下命令在VPS中执行,选择安装trojan
安装过程中输入解析到VPS的域名并回车(不要带http://,只输入域名,例如tr.laobaitu.xyz),开始安装,然后等待安装完成即可
注意:如果提示SELinux状态问题,请按要求输入Y重启VPS,然后再执行本脚本,否则可能https证书申请出错
ycurl -O https://raw.githubusercontent.com/atrandys/trojan/master/trojan_mult.sh && chmod +x trojan_mult.sh && ./trojan_mult.sh
- (可选)安装bbr,原版即可
cd /usr/src && wget -N --no-check-certificate "https://raw.githubusercontent.com/chiakge/Linux-NetSpeed/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh
自动生成的Windows客户端
安装完成后,会展示一条下载地址,复制地址,并下载下来即可。
如果你真的忘记下载了,那么进入/usr/share/nginx/html/目录下,找到一个乱码文件夹,进入会看到客户端文件,使用sftp下载下来即可。
该客户端提供的是Socks5代理,可以根据需要进行转发、透明代理等一系列操作。
查看/修改Trojan密码
一键安装脚本会随机生成一个密码,记录在server.conf文件中,打开该文件即可查看或修改密码。
在服务器端打开文件:
cat /usr/src/trojan/server.conf
文件内容大概如下:
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"your_password_here"
],
"log_level": 1,
"ssl": {
"cert": "/usr/src/trojan-cert/fullchain.cer",
"key": "/usr/src/trojan-cert/private.key",
"key_password": "",
"cipher_tls13":"TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
"prefer_server_cipher": true,
"alpn": [
"http/1.1"
],
"reuse_session": true,
"session_ticket": false,
"session_timeout": 600,
"plain_http_response": "",
"curves": "",
"dhparam": ""
},
"tcp": {
"no_delay": true,
"keep_alive": true,
"fast_open": false,
"fast_open_qlen": 20
},
"mysql": {
"enabled": false,
"server_addr": "127.0.0.1",
"server_port": 3306,
"database": "trojan",
"username": "trojan",
"password": ""
}
}
如果想修改代码,就编辑该文件,修改your_password_here保存后重启trojan服务:
sudo systemctl restart trojan
同时客户端的密码也要修改,保持一致。
后记
不使用一键脚本也可以手动搭建Trojan服务器,可以自己完全掌握安装的内容。