74905def9a7ab7fe87091d91cd19bec17875fe90
Split the manual into a README index plus docs/ sections covering hardware selection, Linux and Windows serial servers, shared frpc configuration via env templating, client testing, security, and troubleshooting. Store real frpc credentials in an ignored .env and track images with Git LFS. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
用 ser2net + frpc 部署 RFC 2217 串口服务器
本手册介绍如何把一个 USB 转 RS-485 转换器接到主机上,以 RFC 2217 模式把每个串口发布为 TCP 服务,再通过已有的 FRP 服务器用 frpc 对外暴露。串口服务器一侧同时给出 Linux(ser2net)与 Windows(原生 ser2net、hub4com、商业方案)两种实现;FRP 客户端配置两端基本一致,已合并为单独一章。
RFC 2217 是关键:与裸 TCP 串口透传不同,它允许兼容的远端客户端修改串口的波特率、数据位、校验位、停止位以及控制线。
拓扑
RFC 2217 客户端
|
| TCP 连接 FRPS_HOST:2217
v
frps(公网 / 可达主机)
|
| FRP 隧道
v
串口服务器上的 frpc
|
| TCP 连接 127.0.0.1:2217
v
RFC 2217 模式的 ser2net(或 hub4com 等)
|
v
USB 转 RS-485 转换器
前提假设:
frps已在运行。- 串口服务器可以主动向该
frps发起出站连接。 - 只部署服务器一侧;客户端测试仅在末尾用于验证。
部署流程
- 选型 — 根据端口数与驱动情况选择转换器。参见 转换器选型。
- 搭建串口服务器 — 在目标机上以 RFC 2217 模式暴露串口,仅监听回环地址:
- Linux:用 ser2net 提供 RFC 2217
- Windows:原生 ser2net / hub4com / 商业方案
- 配置 FRP 客户端 — 复用现有
frps的地址、端口与令牌,把本地回环监听对外发布,并做成系统服务。真实值集中在仓库根目录.env,frpc.toml用{{ .Envs.* }}模板引用;frpc不会自动加载该.env,部署时经 systemdEnvironmentFile或 WinSW<env>注入。Linux 与 Windows 的frpc.toml代理配置一致。参见 FRP 客户端配置。 - 验证 — 从远端用支持 RFC 2217 的客户端做端到端测试。参见 客户端测试。
目录
| 文档 | 内容 |
|---|---|
| 转换器选型 | FTDI 与 WCH 对比、隔离建议、Linux 下的设备识别与稳定路径 |
| Linux 串口服务器 | 安装配置 ser2net、RFC 2217 YAML、权限、systemd |
| Windows 串口服务器 | 原生 ser2net、hub4com、HHD / FabulaTech、WinSW 服务 |
| FRP 客户端配置 | 共用的 frpc.toml、systemd 与 WinSW 服务化、暴露范围 |
| 客户端测试 | pySerial / miniterm 端到端测试与波特率验证 |
| 安全说明 | 明文风险、令牌与 TLS 的作用范围、访问控制 |
| 故障排查 | 串口、FRP 与 Windows 常见问题 |
| 参考资料 | 上游源与官方文档 |
安全要点
RFC 2217 本身既不加密也不认证;普通的 FRP TCP 代理会把 remotePort 变成 frps 主机上的一个明文 TCP 服务。请务必用源地址白名单、VPN 或其它经认证的加密传输加以保护,切勿把不受限的 RFC 2217 端口直接暴露到公网。详见 安全说明。