前言
很多小伙伴在使用一键脚本搭建trojan-go实现科学上网的时候,偶尔会出现失败的情况,不妨试试手动搭建,花几分钟而已,100%成功,何乐而不为呢?
trojian和trojan-go的区别
trojan-go:使用Go实现的完整Trojan代理,与Trojan协议以及Trojan版本的配置文件格式兼容。安全,高效,轻巧,易用。
但是,trojan-go具有以下2个特性是trojan不具有的:
1.支持使用多路复用提升并发性能
2.支持CDN流量中转(基于WebSocket over TLS/SSL)。
准备条件:
1.一个vps,我使用谷歌云演示
2.一个域名(不会申请域名的小伙伴可以看这个视频:),域名和vps的ip地址关联成功
申请tls证书
一、简介
本文主要介绍使用acme.sh脚本来申请证书,并实现到期自动续订的步骤。acme.sh脚本实现了acme协议,可以从letsencrypt生成免费的证书。
二、安装acme.sh脚本
1.先切换到root
1 | sudo -i |
2.安装依赖,debian或ubuntu执行:
1 | apt-get update && apt-get -y install socat |
centos执行:
1 | yum update && yum -y install socat |
3.安装acme.sh脚本:
1 | curl https://get.acme.sh | sh |
出现:Install success!表示安装成功
4.让环境变量生效,以后无论在哪个路径,直接使用acme.sh
1 | source ~/.bashrc |
三、用acme.sh脚本申请证书
1.开始签发证书,注意请将example.com替换成你的域名
1 | acme.sh --issue -d example.com --standalone -k ec-256 --force |
出现下图说明你的证书签发成功
2.创建一个目录用于存放你的证书,注意请将example.com替换成你的域名
1 | mkdir /data |
1 | mkdir /data/example.com |
四、复制/安装证书
注意请将example.com替换成你的域名 (共3处)
1 | acme.sh --installcert -d example.com --fullchainpath /data/example.com/fullchain.crt --keypath /data/example.com/privkey.key --ecc --force |
至此,tls证书签发成功!!!
五、证书更新
关于从Letsencrypt申请到的证书,有效期为90天,脚本会每60天自动更新证书,你无须进行任何操作,今后可能会缩短这个时间,不过都是自动的,你不用关心。
下载伪装网站
创建一个目录,用于放置网站
1 | mkdir /usr/wwwroot |
下载并解压(如果下载失败了,再到这个网站https://templated.co/找一个模板下载)
1 | wget -O /usr/wwwroot/web.zip --no-check-certificate https://templated.co/intensify/download |
1 | unzip -o -d /usr/wwwroot /usr/wwwroot/web.zip |
编译安装nginx
一、安装依赖包
1.下载/安装 openssl-1.1.1(使 nginx 支持TLS 1.3)
1 | cd /usr/local/src |
1 | wget -nc --no-check-certificate https://www.openssl.org/source/openssl-1.1.1g.tar.gz -P /usr/local/src |
1 | tar -zxvf /usr/local/src/openssl-1.1.1g.tar.gz -C /usr/local/src |
2.其他依赖
debian和ubuntu执行下面语句:
1 | apt -y install build-essential libpcre3 libpcre3-dev zlib1g-dev git dbus manpages-dev aptitude g++ |
centos执行:
1 | yum -y groupinstall "Development tools" |
1 | yum -y install pcre pcre-devel zlib-devel epel-release gcc gcc-c++ |
二、下载解压nginx源码
1 | wget -nc --no-check-certificate http://nginx.org/download/nginx-1.18.0.tar.gz -P /usr/local/src |
1 | tar -zxvf /usr/local/src/nginx-1.18.0.tar.gz -C /usr/local/src |
三、编译和安装nginx
1.编译配置
1 | cd /usr/local/src/nginx-1.18.0 |
1 | mkdir /etc/nginx |
1 | ./configure --prefix=/etc/nginx \ |
2.编译&&安装
1 | make && make install |
3、修改基本配置
1 | sed -i 's/#user nobody;/user root;/' /etc/nginx/conf/nginx.conf |
4、删除临时文件
1 | rm -rf /usr/local/src/nginx-1.18.0 |
5、添加配置文件
1 | mkdir /etc/nginx/conf/conf.d |
注意:将下面代码中的端口号、域名和伪装网站目录修改成你自己的
1 | cat >/etc/nginx/conf/conf.d/default.conf <<EOF |
四、配置nginx服务
1.创建服务文件
1 | cat >/etc/systemd/system/nginx.service <<EOF |
2.加载并启动nginx
1 | systemctl daemon-reload |
1 | systemctl restart nginx |
3.其他命令
1 | systemctl start nginx -启动 |
安装trojan-go
一、下载trojan-go
1.先切换到root
1 | sudo -i |
2.新建一个目录,作为trojan的安装目录:
1 | mkdir /etc/trojan |
1 | mkdir /etc/trojan/bin |
3.下载trojan-go最新版本
浏览器打开trojan-go的release页面:https://github.com/p4gefau1t/trojan-go/releases,找到最新版本的release,目前是:v0.8.1。
这里有很多不同系统的release,找到自己的系统对应的版本。不知道自己的,可以执行下面这句查看系统版本:
1 | uname -m |
经过查询我的vps是x86_64,对应的版本是:trojan-go-windows-amd64.zip,执行下面语句下载:
1 | wget --no-check-certificate -O /etc/trojan/bin/trojan-go-linux-amd64.zip "https://github.com/p4gefau1t/trojan-go/releases/download/v0.4.10/trojan-go-linux-amd64.zip" |
如果执行上面那句报wget command not found ,debian和ubuntu请执行(没有报错就无需执行):
1 | apt -y install wget |
centos请执行:
1 | yum -y install wget |
二、解压/安装trojan-go
下载后解压:
1 | unzip -o -d /etc/trojan/bin /etc/trojan/bin/trojan-go-linux-amd64.zip |
如果执行上面那句报unzip command not found ,debian和ubuntu请执行(没有报错就无需执行):
1 | apt -y install unzip |
centos请执行:
1 | yum -y install unizip |
注意:
如果您的是i386 或i686,请下载:trojan-go-linux-386.zip
1 | wget --no-check-certificate -O /etc/trojan/bin/trojan-go-linux-amd64.zip "https://github.com/p4gefau1t/trojan-go/releases/download/v0.4.10/trojan-go-linux-386.zip" |
解压执行:
1 | unzip -o -d /etc/trojan/bin /etc/trojan/bin/trojan-go-linux-386.zip |
如果是armv7l,请下载:trojan-go-linux-armv7.zip
1 | wget --no-check-certificate -O /etc/trojan/bin/trojan-go-linux-amd64.zip "https://github.com/p4gefau1t/trojan-go/releases/download/v0.4.10/trojan-go-linux-armv7.zip" |
解压执行:
1 | unzip -o -d /etc/trojan/bin /etc/trojan/bin/trojan-go-linux-armv7.zip |
这样trojan-go就安装完成了
配置trojan-go
trojan-go安装完成后,开始配置
一、服务端配置
1.先创建一个存放配置文件的目录:
1 | mkdir /etc/trojan/conf |
2.创建服务端的配置文件:
修改以下6处,改好后执行下面所有的代码:
注意,请修改以下6处后再执行:
1.将第5行local_port修改一个1-65535之间的端口,
2.第7行的端口号必须与nginx设置的端口一致
3.将第11行改为你的密码,
4.将第18、19、25、68、69行中的example.com改成自己的域名
点击显示所有代码
1 | cat >/etc/trojan/conf/server.json <<EOF |
二、启动trojan-go服务
1.创建trojan-go服务文件
1 | cat >/etc/systemd/system/trojan.service<< EOF |
2.加载服务文件:
1 | systemctl daemon-reload |
3.启动服务
1 | systemctl start trojan.service |
4.其他的一些命令:
1 | systemctl stop trojan.service ------停止trojan-go |
服务端和客户端配置文件都改好后,就可以进行科学上网了。但是,这个配置文件对于Trojan-go的新特效,一个都没有配置。
三、新特性的配置
下面我们一个个来看看如何设置这些新特性:
1.配置CDN流量中转
服务器配置文件修改以下3点:
1.第2行改为true
2.第3行改为一个url,必须以斜杠(“/“)开始,如:/my,客户端和服务端必须一致
3.第4行是域名
1 | "websocket": { |
host是主机名,一般填写域名。客户端host是可选的,填写你的域名。如果留空,将会使用remote_addr填充。
path指的是websocket所在的URL路径,必须以斜杠(“/“)开始。路径并无特别要求,满足URL基本格式即可,但要保证客户端和服务端的path一致。path应当选择较长的字符串,以避免遭到GFW直接的主动探测。客户端的host将包含在Websocket的握手HTTP请求中,发送给CDN服务器,必须有效;服务端和客户端path必须一致,否则Websocket握手无法进行。
2.使用多路复用提升并发性能
服务端和客户端都只需要将false改为true即可
1 | "mux": { |
各平台客户端下载
Windows/MacOS/Linux客户端Trojan-Qt5下载:
https://github.com/Trojan-Qt5/Trojan-Qt5/releases
安卓客户端Igniter-Go下载:
ios客户端到AppStore下载shadowrocket
请注意哈,以上的Trojan-Qt5、Igniter-Go支持trojan-go的新特性,但shadowrocket不支持新特性。
如果你经常使用的是shadowrocket就不要启用新特性了。