# 用 ser2net + frpc 部署 RFC 2217 串口服务器 本手册介绍如何把一个 USB 转 RS-485 转换器接到主机上,以 **RFC 2217 模式**把每个串口发布为 TCP 服务,再通过已有的 FRP 服务器用 `frpc` 对外暴露。串口服务器一侧同时给出 Linux(`ser2net`)与 Windows(原生 `ser2net`、`hub4com`、商业方案)两种实现;FRP 客户端配置两端基本一致,已合并为单独一章。 RFC 2217 是关键:与裸 TCP 串口透传不同,它允许兼容的远端客户端修改串口的波特率、数据位、校验位、停止位以及控制线。 ## 拓扑 ```text 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. **选型** — 根据端口数与驱动情况选择转换器。参见 [转换器选型](docs/hardware.md)。 2. **搭建串口服务器** — 在目标机上以 RFC 2217 模式暴露串口,仅监听回环地址: - Linux:[用 ser2net 提供 RFC 2217](docs/serial-server-linux.md) - Windows:[原生 ser2net / hub4com / 商业方案](docs/serial-server-windows.md) 3. **配置 FRP 客户端** — 复用现有 `frps` 的地址、端口与令牌,把本地回环监听对外发布,并做成系统服务。真实值集中在仓库根目录 `.env`,`frpc.toml` 用 `{{ .Envs.* }}` 模板引用;`frpc` 不会自动加载该 `.env`,部署时经 systemd `EnvironmentFile` 或 WinSW `` 注入。Linux 与 Windows 的 `frpc.toml` 代理配置一致。参见 [FRP 客户端配置](docs/frpc.md)。 4. **验证** — 从远端用支持 RFC 2217 的客户端做端到端测试。参见 [客户端测试](docs/client-testing.md)。 ## 目录 | 文档 | 内容 | |---|---| | [转换器选型](docs/hardware.md) | FTDI 与 WCH 对比、隔离建议、Linux 下的设备识别与稳定路径 | | [Linux 串口服务器](docs/serial-server-linux.md) | 安装配置 `ser2net`、RFC 2217 YAML、权限、systemd | | [Windows 串口服务器](docs/serial-server-windows.md) | 原生 `ser2net`、`hub4com`、HHD / FabulaTech、WinSW 服务 | | [FRP 客户端配置](docs/frpc.md) | 共用的 `frpc.toml`、systemd 与 WinSW 服务化、暴露范围 | | [客户端测试](docs/client-testing.md) | pySerial / miniterm 端到端测试与波特率验证 | | [安全说明](docs/security.md) | 明文风险、令牌与 TLS 的作用范围、访问控制 | | [故障排查](docs/troubleshooting.md) | 串口、FRP 与 Windows 常见问题 | | [参考资料](docs/references.md) | 上游源与官方文档 | ## 安全要点 RFC 2217 本身既不加密也不认证;普通的 FRP TCP 代理会把 `remotePort` 变成 `frps` 主机上的一个明文 TCP 服务。请务必用源地址白名单、VPN 或其它经认证的加密传输加以保护,切勿把不受限的 RFC 2217 端口直接暴露到公网。详见 [安全说明](docs/security.md)。