想在内网穿透场景中快速打通远程访问通道,直接在云服务器上部署frp是当前多数开发者和运维人员验证过的通用方案,核心做法很简单:在具有公网IP的云服务器上运行frps服务端,在内网机器上运行frpc客户端,通过配置文件将内网端口映射到公网。
frp云服务器部署前需要准备什么
部署frp不是直接拷个二进制文件就能跑通,提前确认几个基础条件能让后续少踩坑。
云服务器与网络环境的基本要求
公网IP是硬性门槛,frp的原理依赖服务端具备公网可达地址,没有公网IP的云主机无法充当跳板,国内主流云厂商的轻量应用服务器和ECS都默认分配公网IP,这点基本能满足。
操作系统方面,Debian 11/12和Ubuntu 20.04/22.04是社区使用频率最高的两个发行版,CentOS 7虽然存量用户不少,但已停止维护,新部署不建议再用,服务器配置不用太高,1核1G的实例跑frps完全够用,带宽才是关键,按需选择。
安全组和防火墙是新手最容易忽略的环节,云厂商控制台的安全组规则和服务器内部的ufw/firewalld都要放行frp所需的端口,后续配置中会用到的端口包括:
- frps服务端监听端口(默认7000)
- 需要映射到公网的业务端口(比如80、443、3389、22)
- dashboard可视化面板端口(默认7500)
客户端机器与部署场景确认
客户端可以是内网任意一台能联网的设备,常见的场景有:
- 家里或办公室的NAS需要外网访问
- 本地开发环境需要提供给同事或客户预览
- 内网Windows机器需要远程桌面控制
- 没有公网IP的服务器需要暴露HTTP服务
明确了场景,才能决定frpc配置中代理类型是tcp、udp还是http,前期需求想得越清楚,后面改配置的次数越少。
frp服务端配置和客户端连接的完整流程
整个部署过程可以拆成四个阶段,每个阶段都有明确的操作命令和验证方式,这部内容也回答了很多人搜索的 frp内网穿透配置教程 核心诉求配置到底怎么写、参数到底怎么调。
第一步:下载frp并准备配置文件
到GitHub上fatedier/frp仓库的Releases页面下载对应系统架构的压缩包,不会判断架构的话,在服务器执行 uname -m,x86_64对应amd64,aarch64对应arm64。
以Linux amd64为例,下载解压命令如下:
wget https://github.com/fatedier/frp/releases/download/v0.61.0/frp_0.61.0_linux_amd64.tar.gz tar -zxvf frp_0.61.0_linux_amd64.tar.gz cd frp_0.61.0_linux_amd64
解压后目录里能看到frps和frpc两个可执行文件,还有对应的toml格式配置文件。frps是服务端程序,frpc是客户端程序,别搞混。
第二步:修改frps.toml服务端配置
编辑frps.toml,一份最简可用的服务端配置如下:
bindPort = 7000 auth.method = "token" auth.token = "这里填一串随机生成的强密码" webServer.addr = "0.0.0.0" webServer.port = 7500 webServer.user = "admin" webServer.password = "这里填面板登录密码"
bindPort是frps与frpc通信的端口,可以改成其他端口,但必须保证安全组已放行,auth.token是客户端连接服务端的凭证,建议用openssl rand -base64 32生成随机字符串,不要用123456这类弱口令。
webServer部分是frp的可视化监控面板,能实时看到当前在线代理和流量情况,生产环境强烈建议开启,排查问题会方便很多。
第三步:启动frps服务端并验证
直接前台运行测试配置是否正确:
./frps -c ./frps.toml
看到 frps started successfully 之类的日志说明服务端已正常运行,此时按Ctrl+C停止进程,改用systemd做守护,保证服务器重启后frps自动拉起。
创建 /etc/systemd/system/frps.service 文件,内容如下:
[Unit] Description=frps Service After=network.target [Service] Type=simple ExecStart=/root/frp_0.61.0_linux_amd64/frps -c /root/frp_0.61.0_linux_amd64/frps.toml Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
注意ExecStart里的路径要改成你实际存放frp文件的绝对路径,执行以下命令启用并启动服务:
systemctl daemon-reload systemctl enable frps systemctl start frps systemctl status frps
看到active (running)状态后,用浏览器访问 http://服务器公网IP:7500,输入配置的账号密码,能看到dashboard界面说明服务端部署成功。
第四步:客户端frpc配置与连接
内网机器上同样下载相同版本的frp压缩包,修改frpc.toml,这里给出一个tcp端口映射的典型配置,场景是把内网Windows的远程桌面3389端口映射到云服务器:
serverAddr = "云服务器公网IP" serverPort = 7000 auth.method = "token" auth.token = "和frps.toml中保持一致" [[proxies]] name = "rdp" type = "tcp" localIP = "127.0.0.1" localPort = 3389 remotePort = 6000
serverAddr填云服务器的公网IP,auth.token必须和frps.toml里完全一致,localPort是内网机器的服务端口,remotePort是云服务器上的公网映射端口。
启动frpc客户端:
./frpc -c ./frpc.toml
看到 start proxy success 日志后,在任意网络环境执行 mstsc 连接 云服务器公网IP:6000,就能登录到内网Windows桌面。
frp常见配置方法与实践难点解析
熟悉基础连接后,再看几个使用频率较高的进阶配置方向。
多个内网服务同时映射的配置写法
一个frpc客户端可以映射多个内网服务,只需在配置文件中增加多个proxies块:
[[proxies]] name = "ssh" type = "tcp" localIP = "192.168.1.10" localPort = 22 remotePort = 6001 [[proxies]] name = "web" type = "http" localIP = "192.168.1.20" localPort = 8080 customDomains = ["web.example.com"]
http类型代理需要服务端开启vhostHTTPPort,并将域名解析到云服务器IP,这适合处理多个Web服务共用一台云服务器80端口的场景。
部署时应对高风险端口安全限制的策略
国内云厂商对80和443端口有备案限制,未备案域名无法直接使用这两个端口映射Web服务,行业内的通行做法有两种:
- 使用非标准端口(如8080、8443)映射后拼接端口访问
- 通过域名解析加CNAME回源的方式,绕开部分限制,但这种方式稳定性存疑,不推荐关键业务依赖
远程桌面和SSH端口映射不受备案影响,这也是frp常用于远程办公场景的原因之一。
frp与ngrok核心差异怎么选
很多用户纠结于 frp和ngrok哪个好 这个问题,两者定位不同,frp主打自托管、协议支持丰富、定制性强,ngrok官方服务上手快且有免费额度,但对传输流量和自定义域名有限制,如果注重数据私密性和长期成本,自建frp是更合理的选择。
frp配置错误排查与性能优化建议
部署过程中遇到问题不要慌,大部分情况集中在几个固定环节。
连接失败的常见诱因
连接失败时,按优先级从高到低排查:
- 云服务器安全组有没有放行对应端口
- 服务器本地防火墙是否拦截了frp的监听端口
- frps和frpc的auth.token是否完全一致
- remotePort是否被其他程序占用
- 云厂商是否额外限制了某些端口的入站规则
用 ss -lntp | grep 7000 在服务器上确认frps端口监听状态,能快速定位问题出在网络层还是应用层。
提升frp稳定性和传输效率的方法
- 使用systemd守护进程并设置Restart=on-failure,进程崩溃后自动拉起
- frps和frpc升级到v0.52.0以上版本,默认使用更高效的通信协议
- 大流量传输场景把传输加密关闭,降低CPU开销,但内网穿透到公网建议保留加密
- 监控dashboard中流量数据,发现异常连接及时调整token
关于frp内网穿透价格与成本的真实情况
frp本身是开源软件,软件层面完全免费,部署成本集中在云服务器租赁和带宽费用,一台1核1G的入门级云服务器,国内厂商新用户活动价可以做到每年几十到一百多元,常规价格在每年两百到五百元区间,带宽建议选择按固定带宽计费而不是按流量计费,frp长连接场景下流量计费累积速度较快,综合来看,自建frp的成本远低于购买商业内网穿透服务,同时还能获得完整的数据控制权。
frp云服务器部署中常见问题解答
问:frp内网穿透速度慢,主要受什么因素影响?
速度瓶颈通常出现在云服务器的带宽上限,frp转发流量全部经过云服务器,如果服务器带宽只有1Mbps,内网千兆网络也无法提升访问速度,提升带宽或者选择就近地域的云服务器是直接有效的优化方式。
问:frp映射的端口被扫描攻击怎么办?
更改默认端口是第一步,将bindPort和remotePort设置为非常用端口能过滤掉大部分自动化扫描流量,登录认证依赖token做第一道防护,不要把端口直接暴露到公网范围过大,根据实际使用习惯,在云安全组里增加源IP白名单限制是更主动的防御方式,开启frp的传输加密功能可以防止数据在传输途中被恶意嗅探。
问:一台云服务器能同时跑frps和frpc吗?
可以,比如云服务器上同时运行frps服务端和另一个frpc客户端,用于将远端设备端口反向映射到本机,配置时注意frpc的serverAddr应填写云服务器的内网IP或127.0.0.1,避免流量绕行公网增加延迟。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/791184.html


