低成本内网穿透技术,轻松实现内网资源的外网访问
使用帮助
admin
发布时间:2026-03-13
浏览:136 次 在日常工作和生活中,我们常常会遇到这样的需求:出差时想访问家里NAS上的文件、在家办公需要连接公司内网的开发服务器、调试本地Web项目时想分享给异地客户预览……但由于家庭或小型办公网络多为内网(无公网IP),外网设备无法直接访问内网资源。此时,内网穿透技术就成为了关键解决方案,而FRP(Fast Reverse Proxy)作为一款开源、轻量、高性能的内网穿透工具,无需复杂配置和高额成本,就能轻松实现内网资源的外网访问,是个人和小型团队的首选。
本文将从FRP核心原理、前期准备、分步部署(服务端+客户端)、常见场景配置、故障排查及低成本优化等方面,详细讲解如何用FRP实现内网穿透,全程通俗易懂,新手也能快速上手。
一、FRP核心介绍与优势(低成本关键所在)
1.1 FRP是什么
FRP是一款基于Go语言开发的高性能反向代理工具,专门用于内网穿透场景。它采用C/S(客户端/服务端)架构,核心逻辑是:通过一台拥有公网IP的服务器(服务端,frps)作为“中间人”,让内网设备(客户端,frpc)主动与服务端建立长连接,从而打通内网到外网的“数据隧道”,实现外网设备通过访问公网服务器,间接访问内网资源。
简单来说,内网设备没有公网IP,外网无法主动“找到”它,FRP就相当于让内网设备主动“伸出手”,抓住公网服务器的“手”,后续外网的访问请求,就通过这只“手”传递给内网设备,实现穿透效果。
1.2 FRP的低成本优势
相较于商业内网穿透服务(如花生壳、Ngrok付费版),FRP的低成本优势尤为突出,主要体现在以下3点:
开源免费:FRP是完全开源的工具,无任何功能限制,无需支付任何费用,彻底摆脱商业服务的付费枷锁。
硬件要求低:公网服务器无需高性能配置,入门级云服务器(1核1G内存、1M带宽)即可稳定运行,月费仅几十元,甚至可利用闲置的有公网IP的设备(如旧电脑、树莓派)搭建,实现零成本。
配置简单:核心配置仅需几行代码,无需专业的网络知识,跟着教程一步步操作,10分钟即可完成部署,后续无需过多维护。
此外,FRP还支持TCP、UDP、HTTP、HTTPS等多种协议,可满足不同场景需求(如远程桌面、SSH连接、Web预览、NAS访问等),兼容性强,稳定性高,是低成本内网穿透的最优解之一。
二、前期准备(必做,缺一不可)
在部署FRP之前,需要准备好以下两件核心设备,确保后续部署顺利进行,所有准备工作均围绕“低成本”展开,无需额外增加开支。
2.1 公网服务器(服务端载体)
核心要求:拥有固定公网IP(静态IP最佳,动态IP可配合DDNS解析弥补),系统推荐Linux(如Ubuntu、CentOS,占用资源少、稳定性强),配置无需过高,1核1G内存、1M带宽即可满足个人及小型团队使用。
低成本方案:
云服务器:选择国内主流云厂商(阿里云、腾讯云、华为云)的入门级服务器,新用户首月低至9元,年付仅几十元,性价比极高。
闲置设备改造:如果家里有旧电脑、树莓派,且能获取公网IP(可联系宽带运营商申请,部分地区免费),可直接安装Linux系统,作为公网服务器,实现零成本。
注意:如果使用云服务器,需提前在云厂商控制台开放后续需要用到的端口(如FRP服务端端口、代理端口),否则会导致连接失败。
2.2 内网设备(客户端载体)
即需要被外网访问的内网资源设备,如:家用NAS、办公电脑、本地服务器、树莓派等,系统支持Windows、Linux、macOS,无需额外配置,只要能正常连接内网(连入路由器)、能访问外网即可。
2.3 其他准备
FRP安装包:从FRP官方GitHub仓库(https://github.com/fatedier/frp/releases)下载对应系统的安装包,服务端和客户端需下载相同版本(避免版本不兼容),推荐选择稳定版(如v0.61.1),无需安装,解压即可使用。
基础操作能力:掌握简单的Linux命令(如解压、编辑文件、启动服务)、Windows命令行操作,无需深入学习,教程会给出具体命令,直接复制执行即可。
三、FRP分步部署(核心步骤,全程图解式讲解)
部署分为两大步骤:公网服务器部署FRP服务端(frps)、内网设备部署FRP客户端(frpc),两者配置完成后,即可建立连接,实现内网穿透。以下以“Linux公网服务器+Windows内网电脑”为例,讲解详细部署流程,其他系统可类比操作。
3.1 第一步:公网服务器(Linux)部署FRP服务端(frps)
此步骤的核心是:在公网服务器上启动FRP服务端,设置监听端口、认证信息,让服务端处于等待客户端连接的状态。
3.1.1 下载并解压FRP安装包
登录Linux公网服务器(可通过Xshell、Putty等工具SSH登录,输入服务器IP、用户名、密码)。
执行以下命令,下载FRP安装包(以v0.61.1版本、Linux amd64架构为例,可根据服务器架构替换下载链接):
wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gz解压安装包(解压后会生成一个同名文件夹,包含服务端和客户端相关文件):
tar -zxvf frp_0.61.1_linux_amd64.tar.gz进入解压后的文件夹(文件夹名称可根据实际版本调整):
cd frp_0.61.1_linux_amd64
解压后,文件夹内核心文件说明(多余文件可删除,如Windows相关的.exe文件,节省空间):
文件名称 | 作用 | 对应角色 |
|---|---|---|
frps | FRP服务端二进制程序(核心执行文件) | 公网服务器(服务端) |
frps.toml(或frps.ini) | FRP服务端配置文件(核心配置) | 公网服务器(服务端) |
frpc | FRP客户端二进制程序 | 内网设备(客户端) |
frpc.toml(或frpc.ini) | FRP客户端配置文件 | 内网设备(客户端) |
注:新版本FRP默认使用toml格式配置文件(frps.toml、frpc.toml),旧版本使用ini格式(frps.ini、frpc.ini),两者配置逻辑一致,本文以toml格式为例,ini格式可类比修改。
3.1.2 编辑服务端配置文件(frps.toml)
服务端配置无需复杂,核心是设置“监听端口”(客户端连接服务端的端口)和“认证信息”(防止非法客户端连接),具体操作如下:
执行以下命令,编辑配置文件(使用vim编辑器,新手可直接复制命令):
vim frps.toml清空文件原有内容,复制粘贴以下核心配置(按需修改参数,注释已标注说明,可直接使用默认值):
# 连接信息配置(核心必配)bindAddr = "0.0.0.0" # 服务端监听地址,默认0.0.0.0,监听所有网络接口bindPort = 7000 # 服务端监听端口,客户端通过此端口连接服务端,建议保留默认7000userConnTimeout = 60 # 客户端连接超时时间(秒),无需修改# 鉴权配置(核心必配,防止非法连接)auth.method = "token" # 认证方式,推荐token认证auth.token = "frp123456" # 认证token,客户端需与服务端一致,建议修改为随机强字符串(可通过openssl rand -hex 16生成)# 服务端管理后台配置(可选,便于监控连接状态)webServer.addr = "0.0.0.0" # 管理后台监听地址webServer.port = 7500 # 管理后台端口,通过公网IP:7500访问webServer.user = "admin" # 管理后台用户名webServer.password = "admin123" # 管理后台密码# 日志配置(可选,便于排查故障)log.level = "info" # 日志级别,info即可log.maxDays = 3 # 日志保留天数,3天足够保存并退出:按“Esc”键,输入“:wq”,回车即可(若输入错误,可输入“:q!”强制退出,重新编辑)。
3.1.3 启动FRP服务端,并设置开机自启
启动服务端后,需设置开机自启,避免服务器重启后,FRP服务失效,无需手动重新启动。
临时启动服务端(测试配置是否正确):
./frps -c frps.toml启动成功后,会显示“frps uses config file: frps.toml”“bind to 0.0.0.0:7000”等信息,说明服务端已正常运行,可按“Ctrl+C”暂时停止服务。设置开机自启(永久启动,推荐systemd方式,适用于Ubuntu 16.04+、CentOS 7+):
创建服务文件:
sudo vim /etc/systemd/system/frps.service复制粘贴以下内容(注意修改“ExecStart”中的FRP安装路径,需与实际解压路径一致):
[Unit]Description=FRP Server ServiceAfter=network.target[Service]Type=simpleExecStart=/root/frp_0.61.1_linux_amd64/frps -c /root/frp_0.61.1_linux_amd64/frps.toml # 替换为实际路径Restart=always # 服务异常时自动重启RestartSec=5 # 重启间隔5秒[Install]WantedBy=multi-user.target重新加载systemd配置,启动frps服务,并设置开机自启:
sudo systemctl daemon-reloadsudo systemctl start frpssudo systemctl enable frps查看服务运行状态(确认是否启动成功):
sudo systemctl status frps若显示“active (running)”,说明服务端已成功启动并设置开机自启,即使服务器重启,FRP服务也会自动运行。
3.1.4 开放服务器端口(关键步骤,否则连接失败)
如果使用云服务器,需在云厂商控制台开放以下端口(与服务端配置一致),否则客户端无法连接服务端:
核心端口:7000(服务端监听端口,客户端连接用)
可选端口:7500(管理后台端口,如需访问管理界面)
后续代理端口:根据内网服务需求开放(如远程桌面3389、SSH 22、Web 80等)
开放方法(以阿里云为例):登录阿里云控制台 → 找到对应服务器 → 进入“安全组” → 点击“配置规则” → “添加安全组规则”,协议选择TCP,端口范围填写对应端口(如7000/7000),授权对象填写0.0.0.0/0(允许所有外网IP访问,按需调整),保存即可。
如果是本地闲置设备作为服务器,需在路由器后台开放对应端口(端口转发),具体方法可参考路由器说明书。
3.2 第二步:内网设备(Windows)部署FRP客户端(frpc)
此步骤的核心是:在内网设备上启动FRP客户端,配置服务端地址、认证信息,以及需要暴露的内网服务(如远程桌面、Web服务),让客户端主动连接服务端,打通数据隧道。
3.2.1 下载并解压FRP安装包
打开FRP官方GitHub仓库,下载与服务端相同版本的Windows安装包(如v0.61.1,选择frp_0.61.1_windows_amd64.zip)。
将安装包解压到电脑任意路径(如D:\frp),解压后核心文件与Linux版本一致,重点关注frpc.exe(客户端执行文件)和frpc.toml(客户端配置文件)。
3.2.2 编辑客户端配置文件(frpc.toml)
客户端配置的核心是:指定服务端地址和认证信息,以及需要暴露的内网服务(即“代理规则”),不同内网服务的配置略有差异,以下以“远程桌面(最常用)”和“Web服务”为例,给出通用配置。
打开解压后的文件夹,找到frpc.toml文件,用记事本或Notepad++打开。
清空原有内容,复制粘贴以下核心配置(按需修改参数,注释已标注说明):
# 连接服务端的核心配置(必配,与服务端一致)serverAddr = "110.110.110.104" # 公网服务器的公网IP(必填,替换为自己的服务器IP)serverPort = 7000 # 服务端监听端口(与服务端bindPort一致,默认7000)loginFailExit = true # 登录失败后退出,无需修改transport.dialServerTimeout = 60 # 连接服务端超时时间,无需修改# 鉴权配置(必配,与服务端完全一致)auth.method = "token"auth.token = "frp123456" # 与服务端auth.token一致,否则无法连接# 日志配置(可选)log.level = "info"log.maxDays = 3# 代理规则配置(核心,暴露内网服务,可配置多个,按需添加)# 示例1:暴露内网Windows远程桌面服务(默认端口3389)[[proxies]]name = "rdp-proxy" # 代理名称,自定义(如rdp-proxy)type = "tcp" # 代理类型,远程桌面用TCP协议localIP = "127.0.0.1" # 内网服务IP,本地设备填127.0.0.1即可localPort = 3389 # 内网服务端口,远程桌面默认3389remotePort = 7001 # 公网访问端口,自定义(如7001),需在服务器开放此端口# 示例2:暴露内网Web服务(如本地Tomcat、Nginx,默认端口80)[[proxies]]name = "web-proxy"type = "tcp"localIP = "127.0.0.1"localPort = 80remotePort = 7002 # 公网访问端口,自定义,需在服务器开放# 示例3:暴露内网SSH服务(如Linux内网设备,默认端口22)[[proxies]]name = "ssh-proxy"type = "tcp"localIP = "127.0.0.1"localPort = 22remotePort = 7003 # 公网访问端口,自定义,需在服务器开放修改关键参数:
serverAddr:替换为自己公网服务器的公网IP(可在云服务器控制台查看)。
auth.token:必须与服务端的auth.token完全一致,否则无法通过认证。
remotePort:每个代理规则的远程端口需唯一,且需在公网服务器开放对应端口(如示例中的7001、7002、7003)。
localPort:根据内网服务的实际端口修改(如Web服务若用8080端口,就改为8080)。
保存文件,关闭编辑器。
3.2.3 启动FRP客户端,并设置开机自启
客户端启动后,会主动连接服务端,建立数据隧道,设置开机自启,可确保内网设备重启后,穿透服务自动恢复。
临时启动客户端(测试配置是否正确):
按住“Win+R”,输入“cmd”,打开命令提示符。
切换到FRP客户端解压路径(如D:\frp),执行以下命令:
cd D:\frpfrpc.exe -c frpc.toml启动成功后,会显示“login to server success”“start proxy success”等信息,说明客户端已成功连接服务端,隧道已打通。此时不要关闭命令提示符,否则穿透服务会中断。
设置开机自启(永久启动,无需手动打开命令提示符):
新建一个文本文档,复制粘贴以下内容(注意修改FRP客户端的路径,与实际解压路径一致):
@echo offcd /d D:\frp # 替换为FRP客户端解压路径frpc.exe -c frpc.toml将文本文档保存为“frpc-start.bat”(保存类型选择“所有文件”,编码选择“ANSI”)。
按住“Win+R”,输入“shell:startup”,打开开机启动文件夹。
将“frpc-start.bat”文件复制到开机启动文件夹中,重启电脑后,客户端会自动启动,无需手动操作。
3.3 第三步:测试穿透效果(验证是否成功)
部署完成后,需用外网设备(如手机流量、异地电脑)测试是否能正常访问内网资源,以“远程桌面”为例,测试步骤如下:
确保公网服务器FRP服务端、内网设备FRP客户端均正常运行。
用外网设备(如手机开热点,连接电脑),打开“远程桌面连接”(Windows自带,按住“Win+R”,输入“mstsc”)。
在“计算机”栏输入:公网IP:远程端口(如110.110.110.104:7001,对应客户端配置中的rdp-proxy代理)。
输入内网设备的用户名和密码,点击“连接”,若能成功登录内网设备的桌面,说明穿透成功。
其他服务测试(如Web服务):用外网浏览器访问“公网IP:远程端口”(如110.110.110.104:7002),若能正常显示内网Web页面,说明穿透成功。
四、常见场景配置(拓展,满足不同需求)
除了上述远程桌面、Web服务,FRP还支持多种常见场景,以下给出核心配置,按需添加到客户端frpc.toml文件中即可。
4.1 访问内网NAS(如群晖、威联通)
NAS默认端口一般为5000(HTTP)、5001(HTTPS),配置如下:
[[proxies]] name = "nas-proxy-http" type = "tcp" localIP = "192.168.1.100" # NAS的内网IP(可在路由器后台查看) localPort = 5000 remotePort = 7004 [[proxies]] name = "nas-proxy-https" type = "tcp" localIP = "192.168.1.100" localPort = 5001 remotePort = 7005
测试:外网浏览器访问“公网IP:7004”,即可登录NAS管理界面。
4.2 远程访问内网数据库(如MySQL)
MySQL默认端口为3306,配置如下:
[[proxies]] name = "mysql-proxy" type = "tcp" localIP = "127.0.0.1" localPort = 3306 remotePort = 7006
测试:用外网设备的数据库工具(如Navicat),连接“公网IP:7006”,输入数据库用户名和密码,即可远程操作内网数据库。
4.3 P2P穿透(优化速度,降低服务器带宽压力)
当外网设备与内网设备处于同一运营商网络时,可开启FRP的P2P模式(XTCP),数据直接在两台设备之间传输,不经过公网服务器,大幅提升访问速度,同时降低服务器带宽消耗(适合大文件传输)。
配置步骤(需同时修改服务端和客户端):
服务端frps.toml添加以下配置:
# P2P配置p2p.enable = truep2p.listenPort = 7007 # P2P监听端口,需在服务器开放客户端frpc.toml添加以下配置(替换原有的TCP代理):
[[proxies]]name = "p2p-rdp"type = "xtcp" # P2P模式,类型为xtcplocalIP = "127.0.0.1"localPort = 3389sk = "frp-p2p-123" # 密钥,用于P2P连接认证,自定义外网设备也需部署FRP客户端(同版本),配置如下:
serverAddr = "公网IP"serverPort = 7000auth.token = "frp123456"[[proxies]]name = "p2p-rdp-client"type = "xtcp"role = "visitor" # 外网设备作为访问者serverName = "p2p-rdp" # 与内网客户端的代理名称一致sk = "frp-p2p-123" # 与内网客户端的sk一致bindAddr = "127.0.0.1"bindPort = 7008 # 外网设备本地监听端口测试:外网设备打开远程桌面,连接“127.0.0.1:7008”,即可通过P2P模式访问内网远程桌面。
五、常见故障排查(新手必看,解决90%的问题)
部署过程中,可能会遇到连接失败、无法访问等问题,以下是最常见的故障及解决方法,按优先级排查:
5.1 客户端无法连接服务端(显示“login failed”)
原因1:服务端未启动或启动失败。解决:登录公网服务器,执行“sudo systemctl status frps”,查看服务状态,若未启动,执行“sudo systemctl start frps”。
原因2:服务端端口未开放。解决:检查云服务器安全组或路由器端口转发,确保7000端口(服务端监听端口)已开放。
原因3:客户端配置错误。解决:检查客户端frpc.toml中的serverAddr(公网IP是否正确)、serverPort(是否与服务端一致)、auth.token(是否与服务端一致)。
原因4:服务器防火墙拦截。解决:关闭Linux服务器防火墙(sudo ufw disable),或开放对应端口(sudo ufw allow 7000)。
5.2 客户端连接成功,但外网无法访问内网服务
原因1:客户端代理规则配置错误。解决:检查localIP(内网服务IP是否正确,本地设备填127.0.0.1,其他设备填对应内网IP)、localPort(内网服务端口是否正确)。
原因2:远程端口未开放。解决:在云服务器安全组开放客户端配置中的remotePort(如7001、7002)。
原因3:内网服务未启动。解决:检查内网设备上的服务(如远程桌面、Web服务)是否正常启动,确保本地能访问(如本地访问127.0.0.1:3389,能打开远程桌面)。
原因4:内网设备防火墙拦截。解决:关闭内网设备的防火墙(Windows关闭防火墙,Linux执行sudo ufw disable),或允许对应服务端口通过。
5.3 访问速度慢、卡顿
原因1:服务器带宽不足。解决:升级云服务器带宽(如从1M升级到2M),或开启P2P模式(XTCP),降低带宽压力。
原因2:网络延迟高。解决:选择与内网设备同运营商的云服务器(如内网是电信宽带,选择电信云服务器)。
原因3:FRP日志级别过高。解决:将服务端和客户端的log.level改为“warn”,减少日志占用的资源。
六、低成本优化技巧(进一步降低成本,提升体验)
6.1 降低服务器成本
选择云服务器新用户优惠:国内云厂商新用户首月低至9元,年付仅几十元,可选择“轻量应用服务器”,无需复杂配置,直接部署。
利用闲置设备:旧电脑、树莓派等设备,只要能获取公网IP,可直接作为服务端,零成本部署。
动态IP优化:如果服务器是动态公网IP(如家用宽带),可使用DDNS服务(如阿里云DDNS、花生壳免费版),将动态IP绑定到域名,避免IP变化后需要重新配置客户端。
6.2 提升穿透稳定性
设置日志切割:在服务端和客户端配置中,开启日志保留(log.maxDays=3),避免日志过大占用磁盘空间。
开启自动重启:服务端和客户端均设置开机自启,并配置服务异常自动重启(如Linux的Restart=always),确保穿透服务长期稳定运行。
定期更新FRP版本:从官方GitHub下载最新稳定版,修复已知bug,提升稳定性和安全性。
6.3 增强安全性
修改默认端口:将服务端bindPort(默认7000)、管理后台端口(默认7500)改为自定义端口,避免被恶意扫描。
使用强token:通过“openssl rand -hex 16”生成随机强字符串作为auth.token,避免简单密码被破解。
限制访问IP:在云服务器安全组中,将授权对象改为指定IP(如仅允许自己的外网IP访问),避免非法访问。
七、总结
FRP作为一款开源免费的内网穿透工具,以其低成本、配置简单、稳定性高的优势,完美解决了内网资源无法外网访问的痛点。通过一台低成本的公网服务器(或闲置设备),配合简单的服务端、客户端配置,就能快速打通内网到外网的通道,满足远程桌面、NAS访问、Web预览、数据库远程操作等多种场景需求。
本文讲解的部署流程,全程围绕“低成本”展开,新手只需跟着步骤一步步操作,10分钟即可完成部署,后续无需过多维护。如果遇到问题,可参考故障排查部分,基本能解决大部分常见问题。
无论是个人用户(如远程访问家里的文件、监控),还是小型团队(如异地办公、项目调试),FRP都是实现内网穿透的最优选择,无需支付高额的商业服务费用,就能轻松享受外网访问内网资源的便捷。
相关推荐
- openclaw 国内性价比最优推荐:豆包 4.0(字节)、DeepSeek-V4(深度求索)、通义千问 Qwen 3.6(阿里)。
- 合规中转 / 聚合平台 或 企业级 Azure 通道
- OpenClaw 多模型自动切换 + 双龙虾智能体一体化完整配置
- OpenClaw 多龙虾智能体(CEO 虾 + 营销虾)完整部署方案
- 直接复制粘贴到 OpenClaw 生产环境的多模型自动切换配置
- OpenClaw 原生支持全自动模型切换(智能路由 + 故障降级)
- 散户必备、最精简、可直接落地的「股票龙虾(OpenClaw)技能包(Skills)清单」
- 股票龙虾必备技能skills清单-openclaw 自动炒股
- 智能客服应答策略设计
- 清华大学OpenClaw研究报告

售前咨询专员