frp 内网穿透完全指南:用廉价VPS把家里NAS和服务器全都暴露到公网

家里NAS存了20T资料,出门在外只能干瞪眼?一文讲透frp内网穿透从服务端到客户端的完整部署,含避坑清单和安全性建议,半小时搭好永不掉线。

家里的 NAS、服务器、开发板,跑了一大堆服务,但一到外面就全连不上了。运营商不给公网 IP,这是大多数自部署玩家最头疼的问题。

frp 是目前最成熟的内网穿透方案之一,作者是 Go 语言开发者 fatedier,项目在 GitHub 上已有 80k+ Star。它的原理很简单:在你的 VPS 上跑一个 frps(服务端),在家里的机器上跑 frpc(客户端),客户端主动连服务端建立隧道,外面的请求通过 VPS 转发到你家里的服务。

准备工作

  • 一台有公网 IP 的 VPS(最低配置即可,1核1G足够)
  • 家里需要暴露的服务(NAS、Jellyfin、SSH 等)
  • 一个域名(可选,配 HTTPS 用)

服务端部署(VPS)

用 Docker 部署最省事:

docker run -d --name frps --restart always \
  -p 7000:7000 -p 7500:7500 \
  -v /opt/frps.toml:/etc/frp/frps.toml \
  snowdreamtech/frps

配置 frps.toml:

bindPort = 7000
auth.token = "你的安全令牌"

webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "管理密码"

客户端部署(家里机器)

家里跑 Docker 的机器上:

docker run -d --name frpc --restart always \
  --network host \
  -v /opt/frpc.toml:/etc/frp/frpc.toml \
  snowdreamtech/frpc

配置 frpc.toml,暴露 NAS 的管理页面为例:

serverAddr = "你的VPS_IP"
serverPort = 7000
auth.token = "安全令牌"

[[proxies]]
name = "nas-web"
type = "tcp"
localIP = "192.168.1.100"
localPort = 5000
remotePort = 5000

配置完后,访问 http://你的VPS_IP:5000 就能连回家里的 NAS 了。

进阶:配 HTTPS 和域名

光用 IP+端口访问不够安全,配合 Nginx/Caddy 反代加 HTTPS 是标准做法。在 VPS 上配一个 Caddy:

nas.你的域名.com {
  reverse_proxy localhost:5000
}

Caddy 自动申请 Let’s Encrypt 证书,一条配置就搞定 HTTPS。

注意事项

  • frp 不加密传输内容,建议配合 HTTPS 使用
  • auth.token 不要用弱密码,frp v0.52+ 支持 TLS 加密,建议开启
  • 如果家里有 IPv6,优先考虑直接用 DDNS + IPv6,延迟更低
  • VPS 带宽决定了实际体验,流媒体至少需要 10Mbps 上行

内网穿透的选择不止 frp,还有 WireGuard Tailscale Cloudflare Tunnel 等。frp 的优势是配置灵活、协议支持全面(TCP/UDP/HTTP/HTTPS),是通用性最好的方案。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注