由于目前所使用的 hiboy Padavan 固件 还没有内置 trojan 代理的支持,因此只能使用自定义脚本的方式来部署。
本文主要分为三个部分:
- 获取 trojan 程序
- 配置 trojan 启动脚本
- 配置透明代理
获取 trojan 程序
由于目前 trojan 没有提供 MIPS 平台的可执行文件,因此需要自行编译获取对应程序。
[hanwckf/Trojan-pdv-build] 已经提供了在 Linux 环境下进行交叉编译的相关脚本,我在此基础上稍作修改,利用 github actions 实现在线编译,并在编译时自动获取最新的 trojan 版本。具体操作如下:
- 打开 AmBeta/Trojan-pdv-build,点击项目右上角的 Fork 按钮 fork 项目到自己的仓库
- 在自己 fork 的项目里,点击右上角的 Star 按钮触发构建操作
- 在项目的 Actions 面板中可以看到当前的构建进度,构建完成后就可以下载生成的文件了
配置 trojan 启动脚本
1. 新建 trojan 客户端配置文件
新建一个文本文档,录入以下内容,保存文件名为 trojan_config.sh
。
注意修改文件内容中的 <Server Host>
,<Server Port>
,<Password>
为你的服务器对应的域名、端口号和密码。
{
"run_type": "client",
"local_addr": "<RouterIP>",
"local_port": 1080,
"remote_addr": "<Server Host>",
"remote_port": <Server Port>,
"password": [
"<Password>"
],
"log_level": 2,
"ssl": {
"verify": true,
"verify_hostname": true,
"cert": "",
"cipher": "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA:AES128-SHA:AES256-SHA:DES-CBC3-SHA",
"cipher_tls13": "TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384",
"sni": "",
"alpn": [
"h2",
"http/1.1"
],
"reuse_session": true,
"session_ticket": false,
"curves": ""
},
"tcp": {
"no_delay": true,
"keep_alive": true,
"reuse_port": false,
"fast_open": false,
"fast_open_qlen": 20
}
}
2. 新建 trojan 客户端启动脚本
新建一个文本文档,录入以下内容,保存文件名为 trojan_start.sh
。
#!/bin/sh
# 启动前运行的脚本
export PATH='/etc/storage/bin:/tmp/script:/etc/storage/script:/opt/usr/sbin:/opt/usr/bin:/opt/sbin:/opt/bin:/usr/local/sbin:/usr/sbin:/usr/bin:/sbin:/bin'
export LD_LIBRARY_PATH=/lib:/opt/lib
export SSL_CERT_FILE=/etc/storage/cacert.pem
# kill existing trojan process
killall trojan
# startup
logger -t "【trojan】" "启动 trojan 客户端"
trojan -c /etc/storage/trojan_config.sh 2>&1 | logger -t "【trojan】" &
在命令行中输入以下命令为文件添加可执行权限:
chmod +x trojan_start.sh
3. 下载证书
trojan 使用 tls 与服务器建立连接,因此需要用到相关的证书,否则可能会遇到无法验证证书从而无法建立连接的问题。(mipsle not work properly at padavan Router #53)
使用如下命令下载证书:
curl -O https://curl.haxx.se/ca/cacert.pem
4. 上传文件到路由器
在命令行中使用 scp 命令将以上文件拷贝到路由器(注意将 root 替换为路由器管理页面登录的用户名)。
scp trojan root@192.168.123.1:/etc/storage/bin
scp trojan_config.sh trojan_start.sh cacert.pem root@192.168.123.1:/etc/storage
由于 Padavan 特殊的安全机制,路由器重启后未执行保存命令的文件会丢失,因此需要执行一次保存操作。打开路由器的 webUI 管理页面,依次点击 高级设置->系统管理->恢复/导出/上传设置->保存 /etc/storage/ 内容到闪存->提交
,等待片刻即可。
5. webUI 配置启动自定义脚本
配置路由器启动时自动启动 trojan 客户端。依次点击 高级设置->自定义设置->脚本->在路由器启动后执行
,在输入框中追加如下脚本:
/etc/storage/trojan_start.sh &
配置透明代理
由于路由器性能有限,这里使用 ss_tproxy + transocks + trojan 的组合作为路由器透明代理的方案。
在 扩展功能->广告屏蔽功能->transocks
页面配置 transocks 透明代理服务:
Padavan 固件的内置脚本会自动启用 ss_tproxy,等待脚本执行完成后路由器透明代理就设置完成了。