14dcf97c081459bfa4c694bfd0675db1270a531b
Document NSSM (fawno/nssm.cc rebuild) as an alternative to WinSW for wrapping frpc/ser2net, with a WinSW-vs-NSSM recommendation. Add gensiot as a native RFC 2217 client alongside pySerial, noting it is optional for a server-only deployment. Update references. 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 端口直接暴露到公网。详见 安全说明。