家里有台 NAS 想在外面访问、本地开发机跑了调试接口想给客户看、公司的测试环境没公网 IP——这些场景有一个共同解法:内网穿透。拿一台有公网 IP 的雨云云服务器跑 frp 服务端,内网机器跑 frp 客户端,安全地把内部服务映射到公网端口。
一、为什么用雨云做 frp 服务端
frp 服务端需要固定公网 IP 和稳定带宽。雨云云服务器正好满足,最低配就够了——frp 本身是转发流量,不怎么吃 CPU,主要吃带宽。新购用优惠码 admin01 走专属入口 https://www.jiyueip.com/link/5617 五折,专门开一台小机器当穿透网关成本极低。
二、frp 服务端安装
wget https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_amd64.tar.gz tar xzf frp_*.tar.gz cd frp_*
编辑 frps.toml:
bindPort = 7000 auth.token = "你的强密码至少32位" vhostHTTPPort = 80 vhostHTTPSPort = 443
关键:token 必须设,否则任何人扫到 7000 端口都能用你的 frp 转发,等于把内网门钥匙扔大街上。
三、frp 客户端(内网机器)配置
在需要被穿透的内网机器上装同样的 frp,编辑 frpc.toml:
serverAddr = "雨云公网IP" serverPort = 7000 auth.token = "你的强密码至少32位" [[proxies]] name = "web" type = "http" localIP = "127.0.0.1" localPort = 8080 customDomains = ["nas.yourdomain.com"]
customDomains 指向的域名 A 记录解析到雨云 IP。访问 nas.yourdomain.com,frp 服务端根据域名识别代理条目,转发到内网 8080 端口。
四、协议类型选择
| 类型 | 场景 | 说明 |
|---|---|---|
| tcp | SSH、MySQL、自定义 TCP | 端口映射,最通用 |
| http | 网站、Web 面板 | 按域名路由,一个 80 端口跑多个服务 |
| https | HTTPS 站点 | 证书在服务端统一管理 |
| udp | DNS、游戏 | 不常用但支持 |
五、安全加固
- token 用
openssl rand -hex 32生成,设到 32 位以上; - frp 服务端的 dashboard 端口(默认 7500)不要开公网,只看内网;
- 用 Nginx 反代 frp 的 HTTP/HTTPS 流量,加一层限流(limit_req)和日志;
- 被穿透的端口通过 frp 后就暴露在公网了,内网服务自己也要做好鉴权(密码、密钥)。
六、HTTPS 穿透与证书
frp 服务端可以配置统一的 TLS 证书,所有穿透出来的 HTTPS 服务共用一张证:
# frps.toml 追加 vhostHTTPSPort = 443 # 证书路径 tls.certFile = "/etc/ssl/yourdomain.crt" tls.keyFile = "/etc/ssl/yourdomain.key"
这样内网所有 HTTP 服务外面都通过 HTTPS 访问,不用每台内网机器自己管 SSL。配合本站 HTTPS 证书自动续期那篇,acme.sh 自动续即可。
七、内网穿透 vs 端口映射 vs DDNS
有公网 IP 的内网机器直接用端口映射 + DDNS 最省事;没有公网 IP(运营商大内网)只能用内网穿透。frp 是这几种方案里灵活性最高的,代价是需要一台公网中转机。
八、常见踩坑
- token 忘设或太弱,被人扫到拿来当免费代理;
- frpc 和 frps 版本不一致,协议不兼容;
- frps.ini(老版本)和 frps.toml(0.52+)格式不同,别照搬旧教程;
- 穿透出去的 HTTP 服务如果没做鉴权(NAS 管理页、本地面板),等同于把家里后门打开。
常见问题
关于用雨云做内网穿透的常见疑问,下面一并解答。






