[返回首页](../README.md) # 安全模型与部署控制 ## 威胁模型 RFC 2217 协议本身不提供加密或身份认证。使用普通 FRP TCP 代理时,`remotePort` 会作为 `frps` 主机上的普通 TCP 服务对外开放。能够连接该端口的客户端可能读取或写入串行总线,并修改波特率、校验位等串口参数。 FRP 传输层 TLS 只保护 `frpc` 与 `frps` 之间的隧道段;它不会自动加密或认证外部客户端到 `FRPS_HOST:remotePort` 的连接。因此,即使 FRP 传输层 TLS 已启用,公网侧 RFC 2217 连接仍可能是明文且无认证的。 FRP 认证令牌的作用范围也不同:令牌用于授权 `frpc` 向 `frps` 注册代理,不用于认证连接已暴露 `remotePort` 的终端用户。 ## 部署控制 本部署的选择是:`frpc` 侧只把本地回环监听经普通 TCP 代理暴露出去,边界访问控制主要在 `frps` 服务器上实施。不要将不受限制的 RFC 2217 端口直接暴露到公共互联网——请至少采用一种控制,必要时组合使用: 1. **防火墙源地址白名单**(`frps` 侧边界控制):仅允许已知客户端源地址访问 `2217-2220/tcp` 或实际配置的 `remotePort`。 2. **认证 VPN**(`frps` 侧边界控制):将 RFC 2217 端点置于 WireGuard、Tailscale 或其他经过认证的 VPN 后方。 3. **ser2net/gensio TLS 与认证**(端到端应用层加固,不在 `frps` 侧):如果所有客户端都支持相应协议栈,可另行启用 ser2net/gensio 的 TLS 和认证能力。 推荐的 Windows 串口服务仅监听 `127.0.0.1`,由 `frpc.exe` 主动连接 `FRPS_HOST:21315`。这种配置通常不需要 Windows 入站防火墙规则。`frps` 主机仍需允许: - 入站 TCP `21315`,用于 FRP 控制流量; - 每个已配置 `remotePort` 的入站 TCP; - 对应的 FRP `allowPorts` 条目。 只有当 Windows 串口服务确实需要监听 LAN 接口时,才添加范围受限的规则。例如: ```powershell New-NetFirewallRule ` -DisplayName 'RFC2217 from operations subnet' ` -Direction Inbound ` -Action Allow ` -Protocol TCP ` -LocalPort 2217 ` -RemoteAddress '192.0.2.0/24' ` -Profile Domain,Private ``` 不要为推荐的仅回环监听配置添加此入站规则。 ## RS-485 共享总线影响 RS-485 通常由多个现场设备共享一条物理总线。RFC 2217 会修改物理 UART 的参数;某个会话改变波特率时,影响的是整条已连接总线,而不是单个从站。部署前应限制谁能够修改串口参数,并确保总线上所有设备使用一致的通信参数。