EasyRouter 是一个 LAN-first TCP 路由器。客户端应用始终连接本机地址,EasyRouter 会自动选择局域网直连或该服务的 FRP 公网入口。
例如,一台家用服务器的 SSH 在局域网监听 192.168.1.20:22222,并通过 FRP 暴露为 203.0.113.10:7600。MacBook 无论在家还是外出,都只需连接 EasyRouter 提供的本机地址:
ssh -p 22222 user@127.0.0.1- 局域网可达时优先直连,不可达时自动回退到 FRP。
- 通过 UDP 自动发现服务端,服务端局域网地址变化后无需逐台修改客户端。
- 每项服务可使用不同的 FRP 主机和端口。
- 客户端可以为每项服务覆盖本机端口。
- 本机端口未指定时,依次尝试局域网端口、FRP 端口和随机空闲端口。
- 支持从
frpc.toml导入一条或多条 TCP 业务代理。 - Windows 系统托盘、macOS 菜单栏驻留和单实例运行。
- Linux 可只运行无图形界面的
easyrouter-core。
flowchart LR
A["应用<br/>127.0.0.1:本机端口"] --> C["EasyRouter 客户端"]
C -->|"优先"| L["局域网服务"]
C -->|"不可达时回退"| F["FRP 业务入口"]
S["EasyRouter 服务端"] -->|"UDP 发现 / 目录 API"| C
R["FRP 控制入口"] -.->|"同步服务目录"| C
EasyRouter 使用两类公网端口:
- 控制端口:同步服务目录,默认是
45890,只需映射一次。 - 业务端口:承载 SSH、HTTP、数据库等实际流量,每项服务独立配置。
桌面用户可以从项目 Releases 下载对应平台的安装包:
- Windows:推荐使用 x64 NSIS 安装程序,也支持 MSI。
- macOS:根据设备选择 Apple Silicon 或 Intel 构建。
- Linux:可以自行构建桌面应用,服务器场景推荐部署
easyrouter-core。
从源码构建和参与开发请参阅 CONTRIBUTING.md。
下面使用这组示例地址:
| 项目 | 示例值 |
|---|---|
| 家中服务器局域网 IP | 192.168.1.20 |
| SSH 端口 | 22222 |
| FRP 服务器地址 | 203.0.113.10 |
| FRP 服务端口 | 7000 |
| EasyRouter 公网控制端口 | 45890 |
| SSH 公网端口 | 7600 |
203.0.113.10 是文档示例地址,请替换为自己的 FRP 服务器域名或公网 IP。
在家中服务器的 frpc.toml 中同时映射 EasyRouter 控制端口和 SSH 业务端口:
serverAddr = "203.0.113.10"
serverPort = 7000
[[proxies]]
name = "easyrouter-control"
type = "tcp"
localIP = "127.0.0.1"
localPort = 45890
remotePort = 45890
[[proxies]]
name = "home-ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22222
remotePort = 7600FRP 服务器需要允许 TCP 45890 和 7600 入站。完整说明见 FRP 使用指南,仓库内也提供了可直接修改的 frpc 示例。
在家中服务器打开 EasyRouter,进入“配置中心”:
- 设备角色选择“服务端”。
- 设置一个足够长的共享访问令牌。
- 服务端局域网 IP 确认为
192.168.1.20;程序会自动检测,也可以手动修改。 - API 端口保持
45890。 - 添加 SSH 服务:
| 字段 | 值 |
|---|---|
| 显示名称 | Home SSH |
| 局域网主机 | $agent |
| 局域网端口 | 22222 |
| FRP 主机 | 203.0.113.10 |
| FRP 端口 | 7600 |
$agent 表示使用 EasyRouter 服务端配置的局域网 IP。若目标服务位于 NAS 或另一台虚拟机,应填写那台设备的局域网 IP。
在笔记本打开 EasyRouter:
- 设备角色选择“客户端”。
- 填写与服务端完全一致的共享访问令牌。
- 公网控制地址填写
http://203.0.113.10:45890。 - 本机监听地址建议保持
127.0.0.1。 - 保存并应用。
路由状态出现 Home SSH 后,点击“复制”会得到类似:
127.0.0.1:22222
连接 SSH:
ssh -p 22222 user@127.0.0.1在家时,新连接会使用 192.168.1.20:22222;外出时会自动使用 203.0.113.10:7600。SSH 命令无需改变。
如果客户端的 22222 已被占用,EasyRouter 会继续尝试 FRP 端口 7600,两者都不可用时使用随机空闲端口。实际端口会显示在路由状态中。
也可以在客户端“配置中心 → 本机服务端口”中为 Home SSH 手动设置 22223。保存后使用:
ssh -p 22223 user@127.0.0.1端口覆盖只影响当前客户端,不会修改服务端或其他设备。
服务端配置中心支持粘贴一条或多条 [[proxies]] TCP 代理。导入时会使用:
serverAddr→ FRP 主机localIP→ 局域网主机;127.0.0.1、0.0.0.0和localhost会转换为$agentlocalPort→ 局域网端口remotePort→ FRP 端口
建议只导入业务代理,不要把 easyrouter-control 控制代理作为服务导入。导入结果不会立即生效,可以检查和调整后再保存。
- Windows:关闭主窗口后驻留系统托盘;托盘菜单可以打开面板、重启核心或退出。
- macOS:关闭主窗口后驻留菜单栏;只有执行“退出 EasyRouter”才会停止核心。
- Linux:可以通过 systemd 运行
easyrouter-core,不依赖桌面环境。
Linux 安装示例:
cargo build --release -p easyrouter-core
sudo ./scripts/install-linux-systemd.sh
sudo editor /etc/easyrouter/easyrouter.json
sudo systemctl restart easyrouter配置示例位于 packaging/systemd/easyrouter.example.json。
- 首次远程使用前务必更换默认共享令牌,并在所有客户端使用相同令牌。
- 控制 API 默认使用 HTTP。公网使用时建议通过 TLS、VPN 或 FRP 的安全传输能力保护令牌。
- 客户端默认监听
127.0.0.1。只有明确需要向局域网其他设备开放时才使用0.0.0.0,并配置防火墙。 - EasyRouter 不替代 FRP 的身份认证,也不加密原始业务协议。SSH、HTTPS 等端到端加密仍由业务服务负责。
- 不要将包含真实令牌、私有域名或公网服务器凭据的配置文件提交到仓库。
- 只代理 TCP 业务流量。
- 客户端当前同步单个 EasyRouter 服务端目录。
- 路线切换只影响新建立的连接,不会迁移已有 TCP 会话。
- UDP 业务代理、多个服务端目录合并、证书固定和 mDNS 尚未支持。
EasyRouter 使用 MIT License。

