Ubuntu | Tools | 科学基础上网

T-r-o-j-a-n是一款基于WebSocket的Daili工具,支持多用户、多端口、多协议、多路由、多实例、多负载均衡、多流量统计、多日志、多插件等功能。

Trojan

下载与配置

Trojan Github
Trojan Home

下载trojan-[版本号]-linux-amd64.tar.xz

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 切换到工作路径
cd /home/[yourUserName]/
# wget下载trojan包
wget https://repo.trojan-cdn.com/trojan-gfw/trojan/LatestRelease/trojan-[版本号]-linux-amd64.tar.xz
# 解压缩
tar -xvf trojan-1.16.0-linux-amd64.tar.xz
# 进入Trojan目录
cd trojan
# 备份默认config.json
cp config.json config.json_bak
# 修改个人配置文件
vim config.json
# 配置文件内容直接在ss相关平台上获取并粘贴并退出
:wq
image-20250514125201846 image-20250514125233080

启动服务

前台使用

1
2
./trojan
# 看到如下内容,配置即完成

后台使用

1
2
3
4
5
# 启动
./trojan &

# 关闭
pkill -f trojan

测试服务

  1. 开启前测试

    1
    2
    # 查看当前服务器的IP地址
    curl ip.sb

    我们可以浏览器访问ip.sb来查看此IP位置

    image-20250514130219446
  2. 开启后测试

    trojan开启后,默认不会对系统进行全局代理(也不建议系统~/.bashrc配置文件中配置全局)

    需要手动对于当前会话开启临时代理,设置完成后再进行网络访问,代理正常:

    (注意:有时候如果发现等待很久,不要怀疑,可能是配置文件被屏蔽了,再换一个配置重新配置config.json再重启下即可)

    1
    2
    3
    4
    5
    export http_proxy="socks5://127.0.0.1:1080"
    export https_proxy="socks5://127.0.0.1:1080"

    # 若当前会话不需要全局代理,可手动失效
    unset http_proxy && unset https_proxy

灵活代理(进阶)

上述可以看见,http_proxy的代理配置,既不想让系统流量完全走代理,又想合适的时候使用代理,上线采用了export+unset的临时方案,当然我们也可以选择 proxychains 组件进行简单使用,而无需不想全局还想用,还得每次都export.

1
2
3
4
5
6
7
8
9
10
11
sudo apt install proxychains -y
vim /etc/proxychains.conf
# 将最后一行socks4 XXX 替换成如下
socks5 127.0.0.1 1080
:wq # 保存退出

# 想让某些命令走代理的话,proxychains + 命令 即可。
# 测试无代理
curl ip.sb
# 测试有代理
proxychains curl ip.sb

添加服务控制(进阶)

可以发现,每次服务器重启后,都需要执行/home/[yourUserName]/trojan/trojan &进行服务启动,有没有什么可以系统代码控制,并且可以设置开机自启的方式?

systemctl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
cd /etc/systemd/system
sudo touch trojan.service
sudo vim trojan.service

# 内容如下
##################################################################################
[Unit]
Description=Trojan Server
After=network.target

[Service]
Type=simple
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/[yourUserName]/trojan
ExecStart=/home/[yourUserName]/trojan/trojan -c /home/[yourUserName]/trojan/config.json
#Restart=always # always时候,kill杀死了又会再起来
Restart=fail # 失败重启
RestartSec=3
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
#################################################################################

# 保存
:wq

# 重启systemctl服务
sudo systemctl daemon-reload
# 启动Trojan服务
sudo systemctl start trojan
# 查看Trojan服务
sudo systemctl status trojan
# 停止Trojan服务
sudo systemctl stop trojan
# 重启Trojan服务
sudo systemctl restart trojan


# 设置Trojan服务失败重启
sudo systemctl enable trojan

# 关闭Trojan服务失败重启
sudo systemctl disable trojan

下图可以看出,我们可以通过systemctl对trojan服务进行控制,