TomatoUSB + Entware + SS
这篇笔记记录了如何通过 Entware 在 TomatoUSB 路由器上运行 SS 的基本流程。不同 TomatoUSB 构建版本和 Entware 快照中的确切软件包名称与配置路径可能有所不同,因此在修改任何重要内容之前,请先在路由器上核实。
1. 检查路由器环境
通过 SSH 登录路由器,确认 CPU 架构和可用存储空间:
uname -a
df -h
mount
Entware 应安装在持久化存储上,通常是挂载到 /opt 下的 USB 驱动器。如果 /opt 不存在或为只读状态,请先修复这个问题,再安装软件包。
2. 安装 Entware
在 TomatoUSB 上,先启用 USB 支持并挂载存储设备。之后,根据路由器架构选择匹配的安装程序来安装 Entware。安装完成后,更新软件包索引:
/opt/bin/opkg update
/opt/bin/opkg upgrade
如果找不到 opkg,检查 /opt/bin 和 /opt/sbin 是否在 PATH 中:
echo $PATH
ls -l /opt/bin/opkg
一个常见的临时修复方法是:
export PATH=/opt/bin:/opt/sbin:$PATH
如需永久修复,请将路径设置添加到路由器启动脚本中。
3. 安装 SS
先搜索可用的软件包名称,因为 Entware 的包名可能会变化:
opkg list | grep -i shadowsocks
安装匹配的客户端软件包。例如:
opkg install shadowsocks-libev-ss-local
如果软件包名称不同,请使用 opkg list 显示的名称。
4. 创建配置
在 /opt/etc 下创建配置文件。一个典型的客户端配置如下:
{
"server": "example.com",
"server_port": 8388,
"local_address": "0.0.0.0",
"local_port": 1080,
"password": "change-this-password",
"method": "aes-256-gcm",
"timeout": 300
}
保存为:
/opt/etc/shadowsocks.json
请使用你自己的服务器配置中的实际服务器地址、端口、密码和加密方法。不要将此文件提交到公开仓库。
5. 手动测试客户端
先以前台方式运行客户端,以便看到错误信息:
ss-local -c /opt/etc/shadowsocks.json -v
在另一个 SSH 会话中,测试本地 SOCKS 端口:
curl --socks5 127.0.0.1:1080 https://ifconfig.me
如果命令返回预期的远程 IP,说明客户端侧工作正常。
6. 开机启动
可以将一个简单的启动命令添加到 TomatoUSB 的 init 或 WAN-up 脚本中:
/opt/bin/ss-local -c /opt/etc/shadowsocks.json -f /var/run/ss-local.pid
在依赖它之前,请重启路由器并确认进程已启动:
ps | grep ss-local
netstat -lnp | grep 1080
7. 路由说明
运行 ss-local 只会提供一个本地 SOCKS 代理。它不会自动将每个局域网设备的流量都通过代理转发。对于浏览器使用,请将浏览器或操作系统的代理设置指向路由器的局域网 IP 和端口 1080。
如果要使用透明代理,则需要额外的防火墙和 DNS 规则。保持这些规则简洁且可回滚,并先在一台客户端设备上测试,再应用到整个局域网。
8. 故障排查
有用的检查命令:
opkg update
opkg list-installed | grep -i shadowsocks
logread | tail
ps | grep ss
netstat -lnp
常见问题:
- 重启后
/opt没有挂载。 - Entware 架构与路由器 CPU 不匹配。
- 启动脚本在 USB 驱动器挂载之前运行。
- 服务器加密方法或密码不匹配。
- 路由器防火墙阻止了本地监听端口。
最安全的工作流程是一次只做一个改动,手动测试,然后再把它移入启动脚本。
