
30 秒速读:学完这篇,你能用一台自有服务器,把家里没有公网 IP 的电脑、NAS 或者自有小服务,通过 FRP 安全地映射到公网端口上,在外面也能访问。前置条件:一台有公网 IP 的自有服务器,一台家里内网设备,会一点 Linux 命令行。预计耗时:第一次跟着做约 40 分钟,熟练后 10 分钟内可以配好一对服务端与客户端。
先说清楚适用边界:本文只讲自有服务器与自有应用的合法穿透场景,例如远程访问自己的 NAS 管理界面、自己的电脑远程桌面、自己搭建的演示服务。不要把别人的服务、不属于自己的设备挂到公网上,也不要把内网穿透当成绕过网络管理的手段。

FRP 是什么:先理解两端分工
FRP 的全称是 Fast Reverse Proxy,是一款免费开源的内网穿透工具,支持 Windows、macOS 与 Linux。它由两端组成,缺一端都跑不起来:服务端 frps 装在有公网 IP 的自有服务器上,负责接公网请求;客户端 frpc 装在家里内网设备上,负责把内网服务推出去。公网访问时走的路径是:访问者先连到服务端,再由服务端通过已经建立的通道找到客户端,最后到达内网服务。

理解这个分工,后面排错就有了方向:服务端没起来,公网连不上任何东西;客户端没连上服务端,端口映射不会生效;服务端与客户端之间的端口、令牌对不上,连接会直接被拒绝。
准备工作:三样东西缺一不可
- 一台自有服务器:有公网 IP,能登录,能放行端口。云服务器、自己机房的机器都可以,关键是这台机器归你管理。
- 一台内网设备:可以是 Windows 电脑、Mac、树莓派、NAS 或者其他 Linux 设备,上面跑着你想从外网访问的自有服务,例如 NAS 管理界面、远程桌面、本地网页服务。
- 一对端口规划:服务端通信端口、每个内网服务的远程访问端口,事先写在纸上,避免配到一半端口冲突。示例规划:服务端通信用 7000,NAS 管理界面远程用 7001,远程桌面远程用 7002。
另外准备一个强令牌:一串自己生成的长随机字符,服务端与客户端必须填同一个令牌。令牌的作用是防止别人的客户端随便连上你的服务端,不要用 123456 这类弱口令。
步骤一:服务端安装与配置
这一步是在自有服务器上装 frps,目的是让服务器监听客户端连接,并准备好转发端口。
- 登录自有服务器,新建一个固定目录,例如 /etc/frp,把下载的压缩包解压到这里。版本号以仓库 Release 页最新版为准,下载时按服务器系统与架构选对包,Linux 服务器一般选 linux_amd64 包。
- 在该目录新建服务端配置文件 frps.toml,写入以下内容,并把令牌换成你自己的强令牌:
bindPort = 7000
auth.token = "请换成你自己的强令牌"
dashboardPort = 7500
dashboardUser = "admin"
dashboardPwd = "请换成你自己的强密码"
这里每行在做什么:bindPort 是客户端连服务端的通信端口;auth.token 是双方约定的令牌;dashboard 是可选的管理面板端口与账号,用来看连接状态,不想开面板可以删掉最后三行。
- 在服务器防火墙与云厂商安全组里放行 7000 端口,以及后面每个远程访问端口,例如 7001、7002。只放行自己规划的端口,不要图省事放行全部端口。
- 前台先跑一次验证,确认没有报错:进入 /etc/frp 目录,执行 ./frps -c ./frps.toml。看到服务端正常监听 7000 端口,说明配置通过;此时不要关窗口,先留着做下一步联调。
- 联调通过后,再把服务端设为开机自启。做法是写一个系统服务文件,让系统启动时自动跑 frps,服务文件里写清工作目录与配置文件路径,启动后用系统服务状态命令确认它是运行中,而不是前台窗口一关就断。
步骤二:客户端安装与配置
这一步是在家里内网设备上装 frpc,目的是告诉服务端:我这里有哪些内网服务、分别对应哪个远程端口。
- 在内网设备上下载与服务端相同大版本的 frp 包,解压到固定目录。服务端与客户端版本跨度太大时配置格式可能不一致,尽量用同一版本。
- 在该目录新建客户端配置文件 frpc.toml,写入以下内容。示例里假设服务端公网 IP 是 1.2.3.4,请换成你自己服务器的真实公网 IP;内网 IP 请换成你设备的真实局域网 IP;令牌必须与服务端完全一致:
serverAddr = "1.2.3.4"
serverPort = 7000
auth.token = "请换成与服务端相同的强令牌"
[[proxies]]
name = "nas"
type = "tcp"
localIP = "192.168.1.40"
localPort = 5000
remotePort = 7001
[[proxies]]
name = "rdp"
type = "tcp"
localIP = "192.168.1.30"
localPort = 3389
remotePort = 7002
这里每段在做什么:serverAddr 与 serverPort 是告诉客户端去连哪台服务端;第一个代理 nas 把内网 NAS 的 5000 端口映射到服务端 7001 端口;第二个代理 rdp 把内网电脑的远程桌面 3389 端口映射到服务端 7002 端口。每个代理的 name 不能重复,remotePort 也不能重复。
- 前台先跑一次验证:在内网设备上执行 ./frpc -c ./frpc.toml,看到类似 start proxy success 的字样,说明代理启动成功。
- 联调通过后,同样把客户端设为开机自启。内网设备重启后客户端能自己连回服务端,否则每次重启都要手动跑一次,很容易忘。
步骤三:从外网访问与验证
- 访问 NAS 管理界面:在外网浏览器地址栏输入 服务端公网 IP:7001,能打开 NAS 登录页,说明 nas 这条代理通了。
- 访问远程桌面:打开远程桌面客户端,地址填 服务端公网 IP:7002,能连上家里电脑,说明 rdp 这条代理通了。
- 验证清单逐项打勾:服务端在运行、客户端在运行、每个代理都显示成功、每个远程端口都能打开对应服务。任何一项不通,先回到易错点一节按顺序查,不要同时改多个地方。
易错点:排错先按这个顺序查
易错点一:端口没有放行,客户端一直连不上。表现是客户端日志反复连接失败。先查云厂商安全组与服务器防火墙有没有放行 7000,以及每个 remotePort;再查服务端是不是真的在运行。端口没放行时,改配置、改令牌都不会有用。
易错点二:服务端与客户端令牌不一致。表现是客户端能连上端口但认证被拒绝。把两边的 auth.token 逐字对一遍,注意不要多空格、不要把示例令牌留在其中一边。改完令牌要重启两端才生效。
易错点三:配置文件格式与版本对不上。新版 FRP 用 TOML 配置,旧版教程里的 ini 写法不能直接套到新版上。按你下载版本的自带示例配置为准,看到配置解析报错时先确认文件后缀与字段名是不是当前版本的写法。
易错点四:内网 IP 或内网端口写错。表现是代理显示成功,但打开远程端口却是空白或者连到别的服务。回到内网设备上确认服务本身在局域网内能不能访问,确认 localIP 与 localPort 填的是该服务的真实地址,再重启客户端。
易错点五:前台跑通了,关掉窗口就断。这是没有设开机自启或者没有用系统服务托管。把服务端与客户端都改成系统服务方式运行,重启服务器与内网设备各一次,确认两端都能自己恢复连接,才算真正配完。
安全提醒:穿透出去的口子要自己守好
- 每个远程端口都是一道门:只映射确实需要从外网访问的自有服务,不用的代理及时删掉,不要把内网所有服务一股脑全映射出去。
- 远程桌面、NAS 管理界面本身必须设强密码,并且只在需要时保持映射开启。长期暴露又用弱密码的远程桌面,是最容易被扫到的口子。
- 令牌与管理面板密码不要写进公开笔记、截图里,换服务器或者换人维护时,第一时间换掉令牌。
- 定期看一眼服务端管理面板或者日志,确认连接的代理是不是自己配的那几个,多出不认识的代理要立刻排查。
延伸:配通基础版之后可以再学什么
基础版跑通后,常见的下一步有三个方向。第一是 Web 服务穿透:把本地网页服务用 http 类型映射出去,配合自己的域名访问,适合演示自己做的页面。第二是图形化客户端:不想每次改配置文件,可以试试桌面版图形客户端,用界面填服务端地址与代理,适合 Windows 用户入门。第三是点对点模式:这是试验性功能,连接成功后数据可以不经过服务端中转,传大文件更快,但对网络环境有要求,不能保证每次都成功,有文件传输需求时优先考虑把服务端带宽买大一点,更省心。
学到这一步,你已经能独立完成一对 FRP 服务端与客户端的部署。之后每加一个新服务,都是在客户端配置里照样子加一段代理、放行一个端口、验证一次访问,不用重新学整套流程。

关注「软件教程管家」
回复软件名即取即下:网盘下载链接 + 提取码,一步直达,不用再跳转。
本站资源仅供个人学习交流,请勿用于商业用途。软件与资料版权归原作者所有;如有侵权,请通过公众号「软件教程管家」联系我们,我们将在 24 小时内下架处理。查看免责声明 ›







