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>
45 lines
2.6 KiB
Markdown
45 lines
2.6 KiB
Markdown
[返回首页](../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 的参数;某个会话改变波特率时,影响的是整条已连接总线,而不是单个从站。部署前应限制谁能够修改串口参数,并确保总线上所有设备使用一致的通信参数。
|