Trojan是一款比较流行的代理工具,支持代理流量和伪装网站共用443端口,不支持搭配CDN使用。

Trojan可以将科学上网流量伪装为HTTPS网页浏览,相比Shadowsocks/SSR/V2ray等其它工具,Trojan因为有真实的网页做为掩护,因此伪装效果更好,更不容易被封锁。从这一点来说,Trojan与V2ray的WS+TLS模式非常相似,两者的使用效果也很接近。

Trojan的优点:

  • 使用TLS协议加密,安全性有保证。
  • 使用真实网站伪装流量,不容易被封锁。
  • 由于被认为是网站流量,基本不会被QOS限速,科学上网速度更快、更稳定。
  • 由于Trojan的开发目的很明确,所以参数更少,配置更简单。

Trojan的不足:

  • 出于实现原理,Troian的搭建,需要购买一个域名指向伪装网站。
  • 需要在VPS服务器建立一个伪装网站并申请SSL证书。
说明

以下内容仅作为技术学习,请科学上网

准备工作

  1. 一台境外 VPS:并已安装 Ubuntu 20.04 / 22.04 等 Linux 系统,拥有 root 权限
  2. 一个域名:并将域名的 A 记录解析到你的 VPS 公网 IP
  3. 开放端口:在 VPS 的防火墙和安全组中,放行 TCP 80 和 443 端口。

为什么是443端口?
因为 Trojan 的设计目标是将流量伪装成标准的 HTTPS 流量。443 端口是 HTTPS 的默认端口,使用它能让流量特征与正常网页浏览完全一致,达到最佳的伪装效果和稳定性。

申请 SSL 证书

trojan 依赖有效的 SSL/TLS 证书来加密流量和伪装,这里使用 acme.sh 来申请免费的 Let’s Encrypt 证书,acme.sh 会自动添加 crontab 任务,无需手动干预。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 1. 安装 acme.sh
curl https://get.acme.sh | sh
source ~/.bashrc

# 2. 使用 Standalone 模式为你的域名签发证书
# 注意:此模式会占用 80 端口,如果有其他进程占用了80端口,请先暂停
~/.acme.sh/acme.sh --issue -d 你的域名 --standalone

# 3. 创建证书存放目录并安装证书
mkdir -p /etc/trojan/ssl
~/.acme.sh/acme.sh --installcert -d 你的域名 \
--key-file /etc/trojan/ssl/private.key \
--fullchain-file /etc/trojan/ssl/certificate.crt

安装与配置 Trojan

安装

一键安装

可以使用官方提供的一键安装脚本,它会自动处理安装和依赖

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

安装完成后,Trojan 的主配置文件位于 /usr/local/etc/trojan/config.json

使用预编译的二进制包

也可以使用预编译的二级制包进行安装

1
2
3
wget https://github.com/trojan-gfw/trojan/releases/download/v1.16.0/trojan-1.16.0-linux-amd64.tar.xz
tar -xf trojan-1.16.0-linux-amd64.tar.xz
cd trojan

为了方便管理和后续配置,建议将二进制文件移动到系统路径,并创建专门的配置目录

1
2
3
4
5
6
# 将 trojan 可执行文件移动到 /usr/local/bin,这样任何位置都能执行 'trojan' 命令
sudo mv trojan /usr/local/bin/

# 创建 Trojan 的配置目录将文件启动到对应的目录中
sudo mkdir /usr/local/etc/trojan && mv config.json /usr/local/etc/trojan

配置

创建或者编辑配置文件 config.json

1
sudo nano /etc/trojan/config.json

将以下内容粘贴到文件中,并务必替换 your-strong-password 为你自己的信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"run_type": "server",
"local_addr": "0.0.0.0",
"local_port": 443,
"remote_addr": "127.0.0.1",
"remote_port": 80,
"password": [
"your-strong-password"
],
"log_level": 1,
"ssl": {
"cert": "/etc/trojan/ssl/certificate.crt",
"key": "/etc/trojan/ssl/private.key"
}
}

配置说明

  • run_typeserver 表示服务端模式。
  • local_addr / local_port: 监听所有网卡的 443 端口。
  • remote_addr / remote_port关键配置。非 Trojan 流量(如浏览器直接访问)会被转发到这个地址。这里指向本机的 Nginx(80 端口),起到伪装作用。
  • password: 客户端连接密码,务必修改为强密码。
  • ssl: 证书和私钥的路径,请确保与之前步骤中生成或放置的证书路径一致。

证书准备:在运行 Trojan 之前,准备好有效的 SSL 证书和私钥,并放置在配置文件指定的路径(如 /etc/trojan/ssl/ 下)。

启动 Trojan 服务

配置完成后,就可以启动 Trojan 了。你可以选择直接运行来进行测试,或者配置为系统服务以实现开机自启。

直接运行(测试用)

1
2
# -c 参数指定配置文件路径
sudo /usr/local/bin/trojan -c /usr/local/etc/trojan/config.json

按 Ctrl + C 可以停止服务。

配置为 systemd 服务(推荐)

💡Tip

如果使用官方的一键安装脚本,会自动创建systemd服务,不需要手动创建。

为了便于管理和实现开机自启,可以创建一个 systemd 服务。

创建服务文件

1
sudo nano /etc/systemd/system/trojan.service

写入服务信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=trojan
After=network.target

[Service]
Type=simple
PIDFile=/run/trojan.pid
ExecStart=/usr/local/bin/trojan -c /usr/local/etc/trojan/config.json
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=1s

[Install]
WantedBy=multi-user.target

启动并设置开机自启

1
2
3
4
5
6
7
8
# 重新加载 systemd 配置
sudo systemctl daemon-reload
# 启动 Trojan 服务
sudo systemctl start trojan
# 设置 Trojan 服务开机自启
sudo systemctl enable trojan
# 查看服务状态
sudo systemctl status trojan

客户端配置

客户端这里以Clash Verge为例,当然也可以使用其他客户端

创建配置文件

创建trojan-clash.yml,将以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
proxies:
- name: "Trojan-Server"
type: trojan
server: your-domain.com # 替换为你的实际域名
port: 443
password: **** # 替换为你的实际密码
sni: your-domain.com # 替换为你的实际域名
skip-cert-verify: false
udp: true

proxy-groups:
- name: "PROXY"
type: select
proxies:
- Trojan-Server
- DIRECT # 保留 DIRECT 作为备用

rules:
# 只有访问 your-domain.com 的流量走代理
- DOMAIN,your-domain.com,PROXY #your-domain.com 替换为你的实际域名

# 其余所有流量直连(不走代理)
- MATCH,DIRECT

配置说明:

部分 作用
proxies 定义你的 Trojan 节点,填写正确的服务器地址、端口和密码
proxy-groups 定义一个代理组,包含节点和直连选项
rules 核心规则DOMAIN,your-domain.com,PROXY匹配自己域名的流量走代理;MATCH,DIRECT 兜底,所有其他流量直连

新增订阅

订阅中新建配置,并将本地创建的trojan-clash.yml导入保存,保存后使用该配置。

启动代理

Clash 首页中启用代理,就可以愉快的上网了。