手动更新trojan服务端

其实和安装是类似的。

执行如下脚本,从github官网下载并安装最新版的trojan服务端。

bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"

在安装过程中会提示你是否要覆盖原有的配置文件,一般来说选n,如果选y的话就要重新配置。当然也可以事先将老的备份好,然后再copy回去。

之后又会询问你是否要更新启动文件,这个我个人觉得无所谓,因为一般不会更改。但如果你修改过启动文件就要记得选n。

trojan手动配置已有的nginx

先前一篇文章讲了如何配置trojan的服务端。

新装的nginx配置其实和已有的nginx差不多,但后者问题可能会更多一点。今天说一下如何对原有的nginx如何手动配置。

1,找到原nginx路径

可以用以下命令

ps -ef|grep nginx

此图像的alt属性为空;文件名为微信截图_20200301223125.png

一般都会显示nginx运行进程的全路径。(我的vps装了2个nginx,一般人可以忽略。)

2,找到nginx配置文件

以上图为例,/usr/local/nginx-1.8/就是我的nginx安装路径。

一般在安装目录下可以找到‘conf’这个文件夹,这里就是存放nginx配置文件的地方。默认的nginx配置文件命名为nginx.conf

3,修改配置

有两种方法,(都是在http的”{}”内加入,搞不清的可在http内最后一个”}”前加)

一种是直接在nginx.conf里修改

另一种是先将需要增加的内容写入一个新的文件,然后nginx.conf这个总配置文件里去调用刚才的子配置文件,命令是”incdlude 子配置文件“。记得要写对子配置文件的路径。

server {
listen 127.0.0.1:80 default_server; 
server_name example.com;
location / {
proxy_pass https://www.ieee.org;
#root /usr/share/nginx/html/; 
#index index.html; 
}
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
}

server {
listen 80;
#listen [::]:80;
server_name example.com;
return 301 https://example.com; 
}

server {
listen 80;
#listen [::]:80;
server_name _;
return 444;
}

(将example.com换成自己的域名)

解释:

行2-3:让网站从127.0.0.1这个IP的80端口释放流量,并且设为默认。(trojan就是从这个IP端口吸收流量)

行5:当输入你的网址,会自动跳转这个www.ieee.org,跳转网址你可以随意换。

行6-7:调用/usr/share/nginx/html这个目录下的静态网址作为伪装站点。(如果要用行6-7,把前面#取消掉,再把行5前加#)

行12-17:301重定向,行14为ipv6的端口,有些系统并不支持,所以打了#注释掉了。

行19-24:同上。

4,重载配置文件

以安装地址为/usr/local/nginx-1.8为例,先进入到安装目录,然后下面有一个sbin的目录,进入,接着运行下面指令

./nginx -s reload

Debian8手动安装配置trojan服务端

现在网上能找到的一键脚本基本都要求debian9或以上版本才行,由于某些原因我并不打算升级debian,却想用上trojan,在一番折腾后发现debian8也是可以的。但是8以下的版本没有试过。

本文不包括nginx配置。

trojan工作原理简述

trojan先从正常网站(监听http 80端口)吸取流量,然后将流量作为伪装成加密的正常网站(https 443端口)释放给客户端(用户)。

安装trojan

  • 使用以下命令,会直接从github下载并安装最新版的服务端。如果不是root用户,请用sudo命令切换到root运行。(以下全部省略sudo)
bash -c "$(curl -fsSL https://raw.githubusercontent.com/trojan-gfw/trojan-quickstart/master/trojan-quickstart.sh)"

然后会得到几个重要的路径

1,配置文件路径

/usr/local/etc/trojan/config.json

2,启动文件路径

/etc/systemd/system/trojan.service

修改配置文件

输入以下命令

vi /usr/local/etc/trojan/config.json

修改config

这里需要修改的一般只有cert:和key:两行。分辨填入ssl证书和密钥文件的路径。

至于如何获得ssl证书和密钥可以参考另外一篇文章:freessl申请免费ssl证书

额外提几点:

1,修改“local_port”也是可以的,但是这样就没法伪装成常用的https流量。(常用https端口为443),这就违背了trojan最大的意图–伪装。

2,检查443端口有没有被其他进程占用,使用以下命令

 lsof -i:443

如果有发现443端口被占用,上述命令可以显示进程的PID,然后用kill+pid数字关掉进程。但这只是一时的,下次启动这个进程可能还是会继续占用443端口,最好的办法就是让那个进程使用其他端口。这里就不展开说了。

修改启动文件

输入以下命令

vi /etc/systemd/system/trojan.service

此图像的alt属性为空;文件名为微信截图_20200301211723.png

这就是debian8和debian9以上的区别!

将 

ExecStart=”/usr/local/bin/trojan” “/usr/local/etc/trojan/config.json”

替换成

ExecStart=/usr/local/bin/trojan -c “/usr/local/etc/trojan/config.json”

修改完后重新加载一下

systemctl daemon-reload

一些常用命令

启动

systemctl start trojan

重启

systemctl restart trojan

状态查询(如果有显示绿色active(running),就表示正常运行中)

systemctl status trojan

错误查询

journalctl -e -u trojan.service

开机自动启动

systemctl enable trojan

鸣谢

本文研究主要参考文章:

  1. https://trojan-tutor.github.io/2019/04/10/p41.html
  2. https://betterme.xin/posts/2019-12/trojan/
  3. https://www.v2rayssr.com/trojan-1.html
  4. https://github.com/trojan-gfw/trojan/issues/283