小白也能上手!内网穿透工具frp超详细配置与实战教程
这是一篇面向小白的内网穿透工具frp超详细配置与实战教程,frp作为一款高效的内网穿透工具,能帮助用户实现外网访问内网设备,教程内容详尽,从基础概念、环境准备,到分步配置操作均有讲解,还结合实际场景做了演示,全面降低使用门槛,让无技术基础的用户也能轻松上手,解决外网无法直接访问内网资源的难题。
你有没有遇到过这些情况:
在家想远程连接公司电脑里的文件?
本地搭了个小网站/博客,想让外地的朋友帮忙测试?
树莓派上跑了个智能家居服务,出门在外却没法控制?
如果没有公网IP,这些需求似乎很难实现——这时候,内网穿透就是你的救星!而今天要介绍的 frp(fast reverse proxy),就是一款开源、免费、跨平台的内网穿透神器,就算你是技术小白,跟着步骤走也能轻松上手。
先搞懂:什么是frp?为什么要用它?
内网穿透是什么?
简单说,内网穿透就是让外网用户能访问到你内网(比如家里、公司局域网)里的设备或服务,不需要公网IP,也不用折腾复杂的路由器端口映射。
frp是什么?
frp 是一款用 Go 语言开发的开源反向代理工具,它的优势很明显:
- 跨平台:支持 Windows、Linux、MacOS,甚至树莓派;
- 功能全:支持 TCP、UDP、HTTP、HTTPS 协议;
- 易配置:配置文件简单易懂,新手也能快速上手;
- 完全免费:代码开源在 GitHub,无任何商业限制。
frp的工作原理(小白也能秒懂)
frp 采用 “服务端+客户端” 架构:
- 服务端(frps):需要放在一台有公网IP的服务器上(比如阿里云、腾讯云的轻量应用服务器,1核2G足够用);
- 客户端(frpc):放在你需要暴露的内网设备上(比如家里的电脑、树莓派)。
工作流程是这样的:
外网用户 → 公网服务器(frps) → 内网设备(frpc) → 内网服务(比如SSH、网站)
简单说就是:客户端先主动连接服务端,建立一条“隧道”,外网的流量通过服务端转发到这条隧道,最终到达内网设备。
实战开始!手把手教你配置frp
接下来我们分三步:准备工作 → 配置服务端 → 配置客户端,先从最基础的“SSH访问内网Linux机器”和“HTTP访问本地网站”开始。
第一步:准备工作
- 一台有公网IP的云服务器:可以买阿里云、腾讯云的轻量应用服务器,系统选 Ubuntu 或 CentOS 都行(本文以 Ubuntu 为例);
- (可选)一个域名:如果要通过域名访问本地HTTP服务,需要把域名解析到公网服务器的IP;
- 下载frp安装包:去 GitHub 下载最新稳定版(推荐用最新的,配置文件格式为
toml):
👉 frp GitHub Releases
- 云服务器(Linux x86):下载
frp_0.52.3_linux_amd64.tar.gz - 内网Windows电脑:下载
frp_0.52.3_windows_amd64.zip
- 云服务器(Linux x86):下载
第二步:配置frp服务端(frps)
我们先在有公网IP的云服务器上部署 frps。
上传并解压安装包
把下载好的 Linux 安装包上传到云服务器(用 Xshell、WinSCP 或者 scp 命令都行),然后解压:
# 解压(以0.52.3为例,版本号替换成你下载的) tar -zxvf frp_0.52.3_linux_amd64.tar.gz # 进入解压后的目录 cd frp_0.52.3_linux_amd64
编辑服务端配置文件 frps.toml
新版本 frp 用 toml 格式(旧版本是 ini,别搞混啦),我们先做一个最基础的配置:
# 编辑frps.toml vim frps.toml
# frps 监听的端口,frpc 会通过这个端口连接 bindPort = 7000 # 如果你要穿透HTTP/HTTPS服务,需要配置这两个端口(可选) vhostHTTPPort = 8080 vhostHTTPSPort = 8443 # 身份验证(可选但推荐,防止别人蹭用你的frps) auth.token = "your_secret_token_here" # 换成你自己的密码
按 Esc,输入 wq 保存退出。
启动frps服务
先前台启动测试一下(没问题再弄后台运行):
./frps -c frps.toml
如果看到输出里没有报错,说明服务端启动成功啦!
(重要)开放云服务器防火墙端口
云服务器厂商(阿里云/腾讯云)的控制台里,需要在安全组里开放以下端口:
7000(bindPort)6000(后面测试SSH用的远程端口)8080(vhostHTTPPort,可选)
不同厂商的安全组配置位置略有不同,但很容易找到,记得添加“入站规则”哦。
第三步:配置frp客户端(frpc)
现在来配置内网设备上的客户端,我们分两个场景演示:
场景1:用SSH远程访问内网Linux机器
假设你的内网Linux机器IP是 168.1.100,SSH端口是默认的 22。
-
在内网Linux机器上解压frp安装包:
和服务端一样,下载对应架构的安装包并解压。 -
编辑客户端配置文件
frpc.toml:vim frpc.toml
写入以下内容:
# 公网服务器的IP地址 serverAddr = "你的公网服务器IP" # frps配置的bindPort serverPort = 7000 # 身份验证,和frps的token一致 auth.token = "your_secret_token_here" # 配置SSH代理 [[proxies]] name = "ssh_my_linux" # 自定义名字,别重复就行 type = "tcp" localIP = "127.0.0.1" # 内网服务的IP,本地的话就是127.0.0.1 localPort = 22 # 内网SSH的端口 remotePort = 6000 # 公网服务器上用来转发的端口(自己选,别和其他服务冲突)
-
启动frpc客户端:
./frpc -c frpc.toml
如果看到
login to server success,说明客户端和服务端连接成功啦! -
测试SSH连接:
在另外一台外网电脑上,用SSH命令连接:ssh -p 6000 内网Linux的用户名@你的公网服务器IP
输入密码后能登录,就说明成功了!
场景2:用域名访问本地Web服务
假设你本地电脑上搭了个网站,跑在 8080 端口,想让朋友通过 web.yourdomain.com:8080 访问。
-
先把域名解析到公网服务器IP:
去域名控制台(比如阿里云域名),添加一条 A 记录:主机记录填web,记录值填你的公网服务器IP。 -
编辑客户端配置文件
frpc.toml:
刚才的SSH配置保留,再添加一个HTTP代理:# 保留之前的serverAddr、serverPort、auth.token # 刚才的SSH代理 [[proxies]] name = "ssh_my_linux" type = "tcp" localIP = "127.0.0.1" localPort = 22 remotePort = 6000 # 新增HTTP代理 [[proxies]] name = "web_my_site" type = "http" localIP = "127.0.0.1" localPort = 8080 # 你本地网站的端口 customDomains = ["web.yourdomain.com"] # 换成你自己的域名
-
重启frpc客户端:
先按Ctrl+C停掉之前的frpc,再重新启动。 -
测试访问:
在外网浏览器里输入http://web.yourdomain.com:8080(这里的8080是frps配置的vhostHTTPPort),就能看到你本地的网站啦!
进阶:让frp在后台自动运行
刚才的前台启动一关窗口就停了,我们需要让它后台运行,甚至开机自启。
Linux服务端/客户端用systemd自启
以服务端为例,客户端步骤一样,把 frps 换成 frpc 就行:
-
创建systemd服务文件:
sudo vim /etc/systemd/system/frps.service
写入以下内容(注意把路径换成你实际的frp目录):
[Unit] Description=frps Service After=network.target [Service] Type=simple # 替换成你的frps路径 ExecStart=/root/frp_0.52.3_linux_amd64/frps -c /root/frp_0.52.3_linux_amd64/frps.toml Restart=always RestartSec=5 [Install] WantedBy=multi-user.target
-
启动并设置开机自启:
# 重载systemd配置 sudo systemctl daemon-reload # 启动frps sudo systemctl start frps # 设置开机自启 sudo systemctl enable frps # 查看状态 sudo systemctl status frps
Windows客户端后台运行
Windows可以用 nssm 把frpc注册成系统服务,或者直接用任务计划程序设置开机启动(更简单):
- 把
frpc.exe和frpc.toml放在一个固定文件夹里; - 打开“任务计划程序”,创建任务,触发器选“当计算机启动时”;
- 操作选“启动程序”,程序选
frpc.exe,参数填-c frpc.toml,起始于填文件夹路径; - 勾选“不管用户是否登录都要运行”,确定即可。
安全提醒!别忽略这几点
- 一定要加身份验证:在
frps.toml和frpc.toml里配置auth.token,防止陌生人连接你的frps; - 不要用默认端口:比如把
bindPort改成其他端口,降低被扫描的风险; - 限制远程端口范围:在
frps.toml里可以配置allowPorts,只开放你需要的端口; - HTTPS配置:如果是Web服务,建议用frp的HTTPS功能,或者在frps前面加Nginx反向代理,保证传输安全。
写在最后
frp 能做的远不止这些:你还可以用它穿透Windows远程桌面(RDP,端口3389)、转发UDP协议(比如游戏服务器)、甚至做内网文件共享。
一开始可能觉得有点复杂,但跟着步骤走一遍,你会发现其实很简单——赶紧找个小服务器试试,享受“随时随地访问内网”的便利吧!
如果遇到问题,欢迎在评论区留言讨论~
注:本文使用frp 0.52.3版本演示,新版本配置可能有微调,建议参考GitHub官方文档哦!

