TomatoUSB+Entware+SS

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 驱动器挂载之前运行。
  • 服务器加密方法或密码不匹配。
  • 路由器防火墙阻止了本地监听端口。

最安全的工作流程是一次只做一个改动,手动测试,然后再把它移入启动脚本。