Files
UploaderHui/frp内网穿透_原理与部署指南.md
2026-04-18 15:08:57 +08:00

15 KiB
Raw Permalink Blame History

frp 内网穿透 - 原理与部署指南

适用对象:没有技术背景的人员
阅读时间:约 15 分钟
最后更新2026-04-17


1. 什么是 frp为什么需要它

1.1 一句话解释

frp 就是一座"桥",让外面的人可以通过公网访问到你家里(或公司内网)的设备。

1.2 生活类比

想象一下这个场景:

你家有一台 NAS网络存储器里面存了很多照片。
你想让朋友们通过互联网访问你的 NAS 上传照片。

但是问题来了:
  - 你家的 NAS 没有"公网身份证"公网IP外面的人找不到它
  - 就像你家住在一个封闭小区里,快递员进不来

怎么办?
  - 你在小区门口找了一个"门卫"frp 服务端),他站在公网上
  - 你在家里装了一个"对讲机"frp 客户端),和门卫保持通话
  - 朋友来找你时,先到门卫那里,门卫通过对讲机通知你,然后帮你把东西转达过去

这就是 frp 的工作原理!

1.3 专业术语对照表

你会看到的术语 大白话解释
公网 IP 你在互联网上的"门牌号",全球唯一,任何人都能找到
内网 IP 你家内部的"房间号",只有家里的人能找到
内网穿透 让外面的人能绕过小区门禁,找到你家里的设备
frpsfrp server frp 服务端,装在公网服务器上,相当于"门卫"
frpcfrp client frp 客户端,装在你家里的 NAS 上,相当于"对讲机"
端口Port 设备上的"窗口编号",比如 80 窗口用来传网页22 窗口用来远程控制
反向代理 代替别人收快递,然后转交给你

2. frp 是怎么工作的?

2.1 整体流程图

                        互联网(公网)
                            │
        ┌───────────────────┼───────────────────┐
        │                   │                   │
   用户手机/电脑      公网服务器frps      其他网站
   "我要上传照片"     "门卫"在这里等着        (互不干扰)
        │                   │
        │    ① 请求到达公网服务器    │
        │ ──────────────────────→  │
        │                   │
        │    ② 服务器转发给家里的NAS  │
        │                   │ ──────────────────────→
        │                   │                   │
        │              你家的 NASfrpc         │
        │              "对讲机"收到消息           │
        │              处理上传请求               │
        │                   │
        │    ③ NAS 处理完,原路返回   │
        │  ←──────────────────────  │ ←──────────────────────
        │                   │                   │
   收到"上传成功!"          │                   │

2.2 用大白话描述整个过程

  1. 你买了一台公网服务器(比如阿里云、腾讯云的云服务器),它有一个公网 IP全世界都能访问到它
  2. 在公网服务器上安装 frps服务端它就像一个24小时值班的门卫
  3. 在你家里的 NAS 上安装 frpc(客户端),它主动连接到公网服务器,说:"嘿,我是某某某家的 NAS如果有人找我请转接给我"
  4. 当用户访问你的网站时,请求先到达公网服务器,服务器再通过已经建立好的连接,把请求转发到你家里的 NAS
  5. NAS 处理完后,结果原路返回给用户

关键点:是 NAS 主动"打电话"给公网服务器的,所以不需要你家有公网 IP。只要你的 NAS 能上网,就能用 frp。


3. 你需要准备什么?

3.1 硬件/服务清单

需要的东西 说明 大概费用
一台公网服务器 阿里云/腾讯云等云服务器,最便宜的就行 约 50-100 元/月
NAS 设备 你已有的 NAS群晖、威联通等 已有
家里的网络 NAS 需要能正常上网 已有

3.2 需要提前获取的信息

在开始安装之前,请准备好以下信息:

□ 公网服务器的 IP 地址例如123.45.67.89
□ 公网服务器的登录密码
□ NAS 的登录密码(或 SSH 权限)
□ NAS 在家里的内网 IP例如192.168.1.100
□ 你想给网站分配的端口号(建议用 8080

怎么看 NAS 的内网 IP
登录 NAS 的管理界面,一般在"网络设置"或"控制面板 → 网络"里能看到,通常格式是 192.168.x.x


4. 安装步骤

4.1 第一步:在公网服务器上安装 frps服务端

这一步通常由技术人员或有服务器经验的人操作。如果你是租的云服务器,可以请服务商帮忙。

4.1.1 下载 frp

登录到你的公网服务器,执行以下命令:

# 下载 frp以 Linux 64位 为例)
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz

# 解压
tar -xzf frp_0.61.1_linux_amd64.tar.gz

# 进入目录
cd frp_0.61.1_linux_amd64

4.1.2 创建配置文件

用文本编辑器创建一个配置文件 frps.toml

nano frps.toml

写入以下内容(直接复制粘贴即可):

# frp 服务端配置文件

# 绑定端口 - frpc 客户端通过这个端口连接到服务端
bindPort = 7000

# 认证令牌 - 相当于暗号,客户端和服务端必须一致才能连接
# 请把下面的 your_secret_token 改成一个只有你知道的密码!
auth.token = "your_secret_token"

# frp 管理面板(可选,方便查看运行状态)
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin123"

⚠️ 重要:请把 your_secret_token 改成一个强密码!这个密码用于验证客户端身份,防止别人盗用你的服务器。

4.1.3 启动 frps

# 启动服务端
./frps -c frps.toml

如果看到类似 frps started successfully 的提示,说明启动成功了!

4.1.4 设置开机自启(推荐)

让 frps 在服务器重启后自动运行:

# 创建系统服务
sudo nano /etc/systemd/system/frps.service

写入以下内容:

[Unit]
Description=frp server
After=network.target

[Service]
Type=simple
ExecStart=/root/frp_0.61.1_linux_amd64/frps -c /root/frp_0.61.1_linux_amd64/frps.toml
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

⚠️ 注意:把路径替换成你实际的 frp 安装路径。

# 启用并启动服务
sudo systemctl enable frps
sudo systemctl start frps

# 查看运行状态
sudo systemctl status frps

4.2 第二步:在 NAS 上安装 frpc客户端

这一步在 NAS 上操作。不同品牌的 NAS 操作方式略有不同,下面以通用方式说明。

4.2.1 下载 frp

SSH 登录到你的 NAS执行

# 如果是 x86 架构的 NAS大多数群晖/威联通是这种)
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz

# 如果是 ARM 架构的 NAS部分 NAS 是这种)
# wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_arm64.tar.gz

# 解压
tar -xzf frp_0.61.1_linux_amd64.tar.gz
cd frp_0.61.1_linux_amd64

4.2.2 创建配置文件

创建配置文件 frpc.toml

nano frpc.toml

写入以下内容:

# frp 客户端配置文件

# 公网服务器的地址和端口
serverAddr = "123.45.67.89"    # ← 改成你的公网服务器 IP
serverPort = 7000

# 认证令牌 - 必须和服务端设置的一致!
auth.token = "your_secret_token"  # ← 改成和服务端一样的密码

# 图片上传服务的代理配置
[[proxies]]
name = "nas-uploader"
type = "tcp"
localIP = "127.0.0.1"       # NAS 本机地址
localPort = 5000             # NAS 上网站运行的端口
remotePort = 8080            # 公网服务器上对外暴露的端口

参数解释:

参数 含义 怎么填
serverAddr 公网服务器的 IP 填你的云服务器 IP
serverPort 服务端的连接端口 默认 7000和服务端配置一致
auth.token 认证密码 和服务端填一样的
localPort NAS 上网站的端口 5000网站默认端口
remotePort 对外开放的端口 8080用户通过这个端口访问网站

4.2.3 启动 frpc

./frpc -c frpc.toml

看到 start proxy success 就说明连接成功了!

4.2.4 设置开机自启

sudo nano /etc/systemd/system/frpc.service

写入:

[Unit]
Description=frp client
After=network.target

[Service]
Type=simple
ExecStart=/root/frp_0.61.1_linux_amd64/frpc -c /root/frp_0.61.1_linux_amd64/frpc.toml
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target
sudo systemctl enable frpc
sudo systemctl start frpc
sudo systemctl status frpc

4.3 第三步:验证是否成功

打开浏览器,访问:

http://你的公网服务器IP:8080

例如:http://123.45.67.89:8080

如果能看到网站页面恭喜你frp 配置成功了!🎉


5. 群晖 NAS 特别说明

如果你使用的是群晖 NAS,操作方式稍有不同:

5.1 通过 SSH 连接群晖

  1. 打开群晖控制面板 → 终端机和 SNMP → 勾选"启动 SSH 功能"
  2. 在电脑上用终端工具连接:
    ssh 你的NAS用户名@192.168.1.100
    

5.2 使用 Docker 安装 frpc推荐

群晖支持 Docker用 Docker 安装更方便管理:

  1. 打开群晖的 Docker 套件(或 Container Manager
  2. 注册表 中搜索 frpc,下载镜像
  3. 映像 中双击下载好的镜像,创建容器
  4. 设置中,挂载配置文件
  5. 网络 设置中,勾选"使用与 Docker Host 相同的网络"

或者通过命令行:

# 创建配置文件目录
mkdir -p /volume1/docker/frpc

# 把 frpc.toml 放到这个目录下
# 然后启动容器
docker run -d \
  --name frpc \
  --restart always \
  -v /volume1/docker/frpc/frpc.toml:/etc/frp/frpc.toml \
  --network host \
  snowdreamtech/frpc

6. 常见问题排查

6.1 连接不上怎么办?

按以下顺序检查:

第1步检查公网服务器上的 frps 是否在运行
  → 在服务器上执行systemctl status frps
  → 如果没运行执行systemctl start frps

第2步检查 NAS 上的 frpc 是否在运行
  → 在 NAS 上执行systemctl status frpc
  → 如果没运行执行systemctl start frpc

第3步检查防火墙是否开放了端口
  → 公网服务器的 7000 端口frp 通信)和 8080 端口(网站访问)必须开放
  → 在云服务器管理控制台的"安全组"中添加规则

第4步检查 token 是否一致
  → frps 和 frpc 的 auth.token 必须完全一样
  → 注意大小写和空格

第5步检查服务器的 IP 地址是否正确
  → frpc.toml 中的 serverAddr 是否填对了

6.2 端口被占用怎么办?

如果提示端口被占用,说明有其他程序已经在用这个端口了:

# 查看哪个程序占用了端口
lsof -i :7000    # 查看 7000 端口
lsof -i :8080    # 查看 8080 端口

# 解决方法:换一个端口号
# 比如把 remotePort = 8080 改成 remotePort = 9090

6.3 网站能访问但上传失败?

→ 检查 NAS 上的网站服务Flask是否在运行
→ 检查 localPort 是否和网站实际运行的端口一致
→ 检查 NAS 的存储目录是否有写入权限

6.4 速度很慢怎么办?

→ frp 的速度取决于公网服务器的带宽和 NAS 的上传带宽
→ 建议选择国内云服务器(阿里云/腾讯云),延迟更低
→ 如果只是传图片,一般带宽足够了

7. 安全注意事项

7.1 一定要做的事

  • 修改默认 token:不要用示例中的 your_secret_token,改成强密码
  • 设置防火墙规则只开放必要的端口7000 和 8080关闭其他端口
  • 定期更新 frp:关注 frp 的版本更新,及时升级修复安全漏洞

7.2 建议做的事

  • 🔶 使用 HTTPS:通过 Nginx 配置 SSL 证书,让传输更安全
  • 🔶 限制访问 IP:如果只有特定的人需要访问,可以在防火墙中限制来源 IP
  • 🔶 定期查看日志:检查是否有异常访问记录

7.3 不要做的事

  • 不要把 token 写在公开的地方(比如 GitHub
  • 不要使用过于简单的 token比如 123456
  • 不要开放不必要的端口

8. 速查表

8.1 常用命令

操作 命令
启动 frps ./frps -c frps.toml
启动 frpc ./frpc -c frpc.toml
查看服务状态 systemctl status frpssystemctl status frpc
重启服务 systemctl restart frpssystemctl restart frpc
查看日志 journalctl -u frps -fjournalctl -u frpc -f

8.2 文件位置速查

文件 位置 说明
frps 配置 公网服务器上的 frps.toml 服务端配置
frpc 配置 NAS 上的 frpc.toml 客户端配置
frps 服务文件 /etc/systemd/system/frps.service 开机自启配置
frpc 服务文件 /etc/systemd/system/frpc.service 开机自启配置

8.3 端口速查

端口 用途 在哪里
7000 frp 通信端口 公网服务器
7500 frp 管理面板(可选) 公网服务器
5000 网站服务端口 NAS
8080 对外访问端口 公网服务器

9. 附录:完整配置文件模板

9.1 frps.toml公网服务器

# ============================================
# frp 服务端配置 - 放在公网服务器上
# ============================================

# frp 通信端口(客户端通过此端口连接)
bindPort = 7000

# 认证令牌(请修改为你自己的强密码!)
auth.token = "请改成你自己的强密码"

# 管理面板(可选,方便查看状态)
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "请改成管理面板密码"

9.2 frpc.tomlNAS 客户端)

# ============================================
# frp 客户端配置 - 放在 NAS 上
# ============================================

# 公网服务器地址(请修改为你的服务器 IP
serverAddr = "123.45.67.89"
serverPort = 7000

# 认证令牌(必须和服务端一致!)
auth.token = "请改成你自己的强密码"

# 图片上传网站代理
[[proxies]]
name = "nas-uploader"
type = "tcp"
localIP = "127.0.0.1"
localPort = 5000
remotePort = 8080

有问题? 把报错信息截图发给技术人员,或者查看 frp 官方文档:https://gofrp.org/zh-cn/