crosstyanandClaude Opus 4.8 14dcf97c08 docs(windows): add NSSM service option and gensiot native client
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>
2026-07-17 15:24:01 +08:00

用 ser2net + frpc 部署 RFC 2217 串口服务器

本手册介绍如何把一个 USB 转 RS-485 转换器接到主机上,以 RFC 2217 模式把每个串口发布为 TCP 服务,再通过已有的 FRP 服务器用 frpc 对外暴露。串口服务器一侧同时给出 Linux(ser2net)与 Windows(原生 ser2nethub4com、商业方案)两种实现;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 发起出站连接。
  • 只部署服务器一侧;客户端测试仅在末尾用于验证。

部署流程

  1. 选型 — 根据端口数与驱动情况选择转换器。参见 转换器选型
  2. 搭建串口服务器 — 在目标机上以 RFC 2217 模式暴露串口,仅监听回环地址:
  3. 配置 FRP 客户端 — 复用现有 frps 的地址、端口与令牌,把本地回环监听对外发布,并做成系统服务。真实值集中在仓库根目录 .envfrpc.toml{{ .Envs.* }} 模板引用;frpc 不会自动加载该 .env,部署时经 systemd EnvironmentFile 或 WinSW <env> 注入。Linux 与 Windows 的 frpc.toml 代理配置一致。参见 FRP 客户端配置
  4. 验证 — 从远端用支持 RFC 2217 的客户端做端到端测试。参见 客户端测试

目录

文档 内容
转换器选型 FTDI 与 WCH 对比、隔离建议、Linux 下的设备识别与稳定路径
Linux 串口服务器 安装配置 ser2net、RFC 2217 YAML、权限、systemd
Windows 串口服务器 原生 ser2nethub4com、HHD / FabulaTech、WinSW 服务
FRP 客户端配置 共用的 frpc.toml、systemd 与 WinSW 服务化、暴露范围
客户端测试 pySerial / miniterm 端到端测试与波特率验证
安全说明 明文风险、令牌与 TLS 的作用范围、访问控制
故障排查 串口、FRP 与 Windows 常见问题
参考资料 上游源与官方文档

安全要点

RFC 2217 本身既不加密也不认证;普通的 FRP TCP 代理会把 remotePort 变成 frps 主机上的一个明文 TCP 服务。请务必用源地址白名单、VPN 或其它经认证的加密传输加以保护,切勿把不受限的 RFC 2217 端口直接暴露到公网。详见 安全说明

S
Description
No description provided
Readme
188 KiB