## 回顾 FRP 基础
FRP(Fast Reverse Proxy)是国内最流行的内网穿透工具。基础用法很简单:服务器端运行 frps,客户端运行 frpc,就能把内网端口映射到公网。
但基础模式有个安全问题:流量在公网是明文传输的(除非你上层套了 TLS)。FRP 提供了 STCP(secret TCP)模式来解决这个问题。
## STCP 是什么
STCP 是 FRP 的安全传输模式,所有流量在客户端和服务端之间加密传输,且需要预共享密钥(PSK)才能连接。
**基础 TCP vs STCP:**
| 特性 | 基础 TCP | STCP |
|------|---------|------|
| 流量加密 | 否 | 是(AES-128) |
| 访问控制 | IP 可达即可连 | 需要密钥 |
| 访问方式 | 直接访问公网端口 | 需要 frpc 客户端 |
注意:STCP 模式要求访问者也安装 frpc,不像基础 TCP 那样直接用浏览器访问。它适合"点对点"的安全访问场景。
## 配置示例
**服务端 frps.ini:**
```ini
[common]
bind_port = 7000
token = your_secure_token
```
**客户端 A(被访问的内网机器)frpc.ini:**
```ini
[common]
server_addr = your_server_ip
server_port = 7000
token = your_secure_token
[secret_ssh]
type = stcp
sk = abcdefgh
local_ip = 127.0.0.1
local_port = 22
```
**客户端 B(访问者)frpc.ini:**
```ini
[common]
server_addr = your_server_ip
server_port = 7000
token = your_secure_token
[secret_ssh_visitor]
type = stcp
role = visitor
server_name = secret_ssh
sk = abcdefgh
bind_addr = 127.0.0.1
bind_port = 6000
```
访问者在本地执行 `ssh -p 6000 [email protected]` 即可连接内网的 SSH。
## 完整的安全配置模板
```ini
# frps.ini - 服务端
[common]
bind_port = 7000
token = strong_random_token_here
# 限制端口范围
allow_ports = 6000-7000
# Dashboard
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = your_password
# 限速
max_pool_count = 50
# 日志
log_file = /var/log/frps.log
log_level = info
log_max_days = 7
```
## 性能对比
在同一台低配 VPS 上测试(1C1G,带宽 10Mbps):
| 模式 | 吞吐量 | CPU 占用 | 延迟增加 |
|------|--------|---------|---------|
| TCP 直连 | 9.5 Mbps | 5% | +3ms |
| STCP | 8.8 Mbps | 8% | +8ms |
| STCP + 压缩 | 实测带宽利用率更高 | 12% | +12ms |
加密带来的性能损耗很小(约 7%),对于管理用途完全可接受。
## 使用建议
- SSH/RDP 等管理类连接优先使用 STCP
- Web 服务(博客等)用基础 TCP + Nginx HTTPS 即可
- 使用强随机密钥(`openssl rand -hex 16` 生成)
- 定期更换 token 和 sk
FRP 配上 STCP,让你的内网隧道既方便又安全。