FEATURED · 精选文章

Cpolar还是自建frp?内网穿透方案选型与实战全解析

发布时间 / 2026/9/9 2:20:59
来源 / 创域科博编辑部
栏目 / 资讯中心
Cpolar还是自建frp?内网穿透方案选型与实战全解析 最近有个朋友问我家里有台NAS公司电脑想随时访问或者开发调试时想让同事连一下本地服务到底用Cpolar还是自己租台服务器做内网穿透这问题我太熟了。我前后折腾过不下十种穿透方案Cpolar、ngrok、frp、Tailscale、樱花frp都玩过。租过云服务器自建也用过现成的穿透服务。这中间踩过不少坑也总结出一套很务实的选型经验。这篇就把两条路线的原理、实操和坑一次性讲清楚。先说结论Cpolar和自建frp没有绝对的好坏只有合不合适。如果你只是偶尔穿透一下图省事Cpolar这类SaaS服务很香如果你对速度、稳定性、自定义端口有硬需求或者长期使用、设备多那租一台服务器自己搭frp才是正解。下面我从原理讲起再分别给出两条路线的完整落地步骤。1. 内网穿透到底在穿什么1.1 你看不见内网设备是因为NAT这堵墙先理解一个背景现在的IPv4公网地址早就枯竭了。运营商会给家用宽带分配一个内网IP你在家里所有设备电脑、NAS、摄像头都躲在路由器后面共用那一个出口IP。路由器通过NAT网络地址转换把内网设备的流量转发出去但外部设备想要主动连接你家某台设备路由器会直接丢弃因为NAT表里没有对应的映射。这就是内网穿透要解决的难题公网上的设备没有办法主动找到内网里的机器。你公司电脑想SSH登录家里服务器光知道你家宽带的IP没用因为那个IP可能还不是真正的公网IP就算有公网IP路由器也默认不把22端口转发到具体设备上。1.2 隧道是怎么打通的内网穿透的核心思路特别简单既然外网连不进来那就让内网设备主动连出去。你在内网设备上装个客户端它主动去连接一台有公网IP的服务器建立一条长连接。然后当外部设备访问服务器上的特定端口时服务器把这部分流量顺着这条已经建立好的连接“转发”到内网设备上。这个过程本质上就是反向隧道Reverse Tunnel。内网设备是隧道的发起方公网服务器是中转站外部用户访问的是中转站中转站再把数据原路送到内网设备。这条隧道让内网服务看起来像是跑在公网服务器上一样。1.3 两条路线的本质差异搞懂了隧道原理你会发现Cpolar和自建服务器本质上做的事情是一样的提供一个公网中转点。区别在于Cpolar这类服务服务器是别人的你只需要装客户端、认证、创建隧道。但是中转流量、带宽、域名、端口数量都受到服务商限制。自建服务器中转节点完全是你自己的。流量是你服务器的带宽端口随便开域名随便绑但它需要你有一个公网IP的VPS且要自己维护服务端。把隧道比作打车Cpolar是网约车便捷但按里程计费、高峰期限速自建frp是自己买车前期花成本后续自由度拉满。2. 方案选型什么时候用Cpolar什么时候该买VPS2.1 Cpolar这类SaaS服务的真实边界先说Cpolar的优点它最大的价值是零运维起步。官网注册账号客户端装好authtoken一填跑一条命令就能把一个本地Web服务暴露到公网。整个过程五分钟内能完成这也是它口碑不错的原因。但它的限制也很明显带宽和流量受限免费套餐的带宽被限制得比较厉害实际使用中传输大文件、看高清视频会很吃力。域名不固定免费随机域名会变化要固定域名通常得升级套餐。端口受限默认开放的隧道类型和端口数量有限复杂场景比如自定义TCP端口做游戏联机需要更高的套餐。所以Cpolar这种方案适合临时演示、轻量Web服务、偶尔远程SSH。它的中文文档友好、国内节点多对新手特别友好不需要你有服务器基础知识。2.2 自建frp的成本与收益自建方案的核心组件是frpFast Reverse Proxy一个开源的内网穿透工具。它的服务端frps跑在你的VPS上客户端frpc跑在内网设备上。你需要投入的成本一台有公网IP的VPS最低配的1核1G就够了重点是带宽。国内厂商的VPS有带宽容量的差异价格从几十到几百元每年不等。一点Linux基础会下载压缩包、改配置文件、跑systemctl命令基本就够了。域名可选如果要走HTTP/HTTPS隧道并绑自定义域名需要一个域名做解析几十块钱一年。收益是实打实的端口完全自定义想映射6000、6001还是任意端口都行不限制。流量用满服务器带宽你的隧道速度上限取决于VPS带宽自己选择多大就是多大。可以部署成服务开机自启、异常重启、日志监控这是长期稳定运行的关键。可以组私密网络frp支持stcp模式实现点对点加密通信传输更安全。2.3 其他备选方案横向对比我实际用过的方案里还有ngrok、Tailscale、樱花frp各有适用场景。做了个表方便参考方案类型上手难度带宽长期稳定性适合场景CpolarSaaS穿透低受套餐限制中上快速暴露Web/SSH新手首选ngrokSaaS穿透低国外节点国内体验一般中海外环境调试、demo演示frp自建自建穿透中取决于VPS带宽高长期稳定使用、多端口多服务Tailscale组网中点对点直连时优秀高多设备互访组虚拟局域网樱花frpSaaS穿透低免费限速严重中游戏联机场景比较多这里多说一句Tailscale。它严格来说不是穿透而是把多台设备组成一个加密的虚拟局域网只要两端都装了客户端设备之间会尝试P2P直连不经过服务器中转速度非常理想。但它的问题是被访问端也必须安装客户端并保持在线如果对方只是一台临时连接、不能装软件的设备Tailscale就派不上用场了。总体上临时暴露给外部用户用Cpolar长期自用设备互联用Tailscale或自建frp是我目前的习惯。2.4 我的选型决策逻辑我给朋友的建议通常是一次灵魂四问穿透频率高吗偶尔一次选Cpolar免费版就够每周都要用建议自建。对速度有要求吗传大文件、看视频、跑RDP远程桌面自建frp体验明显更好。需要自定义端口吗游戏联机、自定义服务端口这种Cpolar免费版很难满足直接frp。愿意花多少维护精力五分鐘搞定选Cpolar愿意折腾一次长期省心选自建。下面我按这两条路线分别给出完整的实操过程。3. Cpolar从零到通五分钟暴露本地Web服务3.1 注册、安装、绑定Token先在Cpolar官网注册一个账号注册流程很常规邮箱验证一下就完成。登录后台后在“验证”页面能看到专属的authtoken这个Token是你客户端和服务端账号绑定的凭证。以最常用的Linux服务器为例安装客户端就是一条命令curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash装完之后把Token绑定到本机cpolar authtoken 你后台复制的那串Token这一步本质上是把当前设备和你账号绑定起来之后创建的隧道会通过这个Token关联到你的账号下。Windows用户更简单官网下载exe安装包装完在命令行里执行同样的authtoken命令就行。3.2 快速创建一条临时HTTP隧道假设你本地有个跑在8080端口的Web服务先启动它然后执行cpolar http 8080终端会输出一条公网访问地址格式类似https://xxxxxx.cpolar.top。把这个地址发给远程的小伙伴他浏览器打开就能访问你本地的服务了。这个临时隧道有两个特点一是地址是随机分配的退出命令后隧道关闭下次再启会变成一个新地址二是它走的是Cpolar的免费公共节点速度和稳定性完全看服务商当时的状态。所以临时演示、联调接口、给客户看效果这个模式最方便。3.3 创建持久化隧道并设置为开机自启临时隧道每次地址都会变肯定是不能用于日常服务的。解决方法是预先定义好隧道名称和参数再启动它。先编辑Cpolar配置文件把隧道定义写进去cpolar config edit配置文件里加一段web: type: http local_addr: 8080保存后启动cpolar start web这样创建的隧道会按照配置里定义的类型、端口来启动至少隧道本身是“固定逻辑”的但免费版随机域名依然会变化想稳定域名要看下一小节的进阶操作。为了让隧道在断电重启后还能自动恢复Linux下可以注册成systemd服务sudo systemctl enable cpolar sudo systemctl start cpolarCpolar安装包会自动附带systemd服务文件enable之后开机自启日常使用基本不用管客户端进程。3.4 进阶固定域名与SSH隧道Cpolar真正适合日常使用的是固定域名。这个功能在免费版里通常不可用但可以理解它的价值有了固定域名你调试Webhook回调地址不用每次改配置监控面板能长期稳定监控别人收藏的地址也不会失效。如果是SSH穿透手动创建一条TCP隧道拿默认的22端口举例cpolar tcp 22终端会输出一个公网地址和随机端口对方用ssh 用户名公网地址 -p 随机端口就能连到你本机的SSH。macOS/Windows自带的SSH客户端都可以直接连。这里有个安全上的坑需要注意不要把22端口裸奔到公网。穿透前最好把SSH登录改为密钥认证、禁用密码登录不然扫描器盯上你是迟早的事。3.5 Cpolar使用中的几个真实痛点Cpolar整体体验不错但有几个细节值得一提免费版限速明显高峰期传大文件基本急死人我实测持续下载速度很难跑满1MB/s。做点文本接口、API调用还行传数据库备份就耐心点吧。随机域名变化带来的坑很多教程没提到免费隧道域名是会变的如果你在某个自动化脚本里写死了旧的穿透域名不定期更新就会莫名其妙调不通。日志问题客户端日志默认只存一段时间排查问题时要趁早看否则过两天日志就没了。管理面板占端口Cpolar默认会在本地起一个9200端口的Web管理面板如果本地9200被其他服务占用启动会报错需要手动改面板监听端口。4. 自建服务器方案用frp打造专属穿透节点如果你已经决定自己租VPS那这一步就把它做成一个长期稳定的服务。我推荐使用frp开源、文档全、社区活跃目前是最主流的选择。4.1 服务器选型要点先说结论1核1G内存、带宽按需购买的Linux VPS就能跑得非常舒服。为什么推荐最低配因为frps本身内存占用不到50MBCPU负载也非常低。真正的瓶颈在带宽。如果你只是SSH连一下、传几个小文件1Mbps带宽都够想远程桌面看视频至少得5Mbps以上如果是多人同时访问那就往10Mbps走。地域选择上也有一点讲究穿透两端的位置决定了延迟和速度。内网设备在国内、外部访问者也在国内就选国内节点如果主要是自己从外面连回家选一个离你常驻地近的节点延迟更低。如果为了省成本选海外节点高峰期跨洋延迟会让人怀疑人生。操作系统建议Debian或Ubuntu LTS稳定、文档多、踩坑方案好找。4.2 云厂商安全组与服务器防火墙这一步很多人会漏导致服务端怎么都连不上。云控制台的安全组和服务器内部的防火墙是两个独立的东西都要放行相关端口。以腾讯云/阿里云为例在控制台的安全组规则里添加入站规则放行frp的bindPort我习惯用7000以及你自定义的remotePort范围比如6000-6100。然后在服务器内部确认防火墙没有拦截# 查看防火墙状态 sudo ufw status # 如果开启了就放行端口 sudo ufw allow 7000/tcp sudo ufw allow 6000:6100/tcp这里有个排查小技巧如果外部连不上先用telnet 服务器IP 7000测试通不通一目了然。不通就分别检查安全组、服务器防火墙、frps进程是否在监听。4.3 frp服务端搭建与配置去frp的GitHub Releases页面下载对应平台的最新版以Linux amd64为例cd /usr/local wget frp下载链接 tar -zxvf frp_*.tar.gz mv frp_* frp cd frp解压后目录里有frps和frpc两个二进制文件前者是服务端后者是客户端。还有对应的.toml配置文件。新版frp使用TOML格式我建议直接用新版配置结构清晰很多。编辑服务端配置frps.tomlbindPort 7000 auth.method token auth.token 这里填一个复杂的随机字符串 webServer.addr 127.0.0.1 webServer.port 7500 webServer.user admin webServer.password 这里填面板密码这个配置的含义bindPort是frps监听客户端连接的端口auth.token是客户端连接服务端时需要提供的凭证相当于隧道系统的密码webServer是frp自带的Dashboard监控面板可以实时看有哪些隧道在跑、流量多少。然后把它注册成systemd服务保证开机自启和异常重启sudo vim /etc/systemd/system/frps.service写入[Unit] Descriptionfrp server Afternetwork.target [Service] Typesimple ExecStart/usr/local/frp/frps -c /usr/local/frp/frps.toml Restartalways RestartSec5 [Install] WantedBymulti-user.target启动并设置开机自启sudo systemctl daemon-reload sudo systemctl enable frps sudo systemctl start frps sudo systemctl status frps看到active (running)就说明服务端已经跑起来了。用journalctl -u frps -f可以实时看日志排查问题非常有用。4.4 内网设备部署frpc客户端客户端的配置文件frpc.toml写法如下重点是serverAddr指向你的VPS公网IPtoken和服务端保持一致serverAddr 你的服务器公网IP serverPort 7000 auth.method token auth.token 和服务端一样的token [[proxies]] name ssh type tcp localIP 127.0.0.1 localPort 22 remotePort 6022 [[proxies]] name web type http localIP 127.0.0.1 localPort 8080 customDomains [web.example.com]上面定义了两条隧道第一条ssh类型tcp把本机22端口映射到服务器的6022端口。外部访问服务器IP:6022就能SSH连到内网机器。第二条web类型http把本机8080端口映射为HTTP服务并通过web.example.com这个域名访问。当外部请求到达服务器80/443端口时frps会根据域名判断应该转发到哪条隧道。客户端同样可以注册systemd服务配置文件路径换成client版本就行。启动后回Dashboard看隧道状态一目了然。4.5 进阶玩法私密加密连接与安全加固frp最有价值的一点是可以做stcp模式即加密点对点通信。外部访问端也装一个frpc但不经过服务器的公网端口转发而是通过服务器做信令握手后建立加密隧道再点对点传输适合传输敏感数据。另外可以给你的Service配置个TLS证书部署HTTPS隧道访问方浏览器就不会报错。frp支持泛域名证书放在服务端客户端不用额外配置比在每台内网设备上折腾证书省事太多。关于安全我给几个最实用的加固项Token要长且随机至少24位可以用openssl rand -hex 16生成。不要把SSH的22端口直接映射成默认22映射成一个高位随机端口比如6022能少很多扫描流量。关闭密码登录编辑SSH配置/etc/ssh/sshd_config设置PasswordAuthentication no只保留密钥登录。给VPS装Fail2ban它监控登录失败日志自动封禁反复尝试的IP能挡掉大量暴力破解。我自己的服务器搭好之后就设置成密钥登录结合fail2ban半年看日志基本没有成功爆破的痕迹。4.6 frp常见配置问题速查症状可能原因排查方法客户端报EOFtoken不匹配或版本差异检查两端auth.token是否一致frp版本尽量保持一致外部连接超时安全组/防火墙未放行telnet测试端口通不通隧道显示online但访问失败localIP/localPort指向错误确认内网服务确实在跑且监听在正确端口Dashboard打不开webServer配置了127.0.0.1VPS本地curl 127.0.0.1:7500测试域名访问不了DNS解析或customDomains错误确认域名A记录指向VPS IP且HTTP请求的Host头正确5. 常见问题与排查技巧实录5.1 隧道“起来了”但外部连不上这个问题在Cpolar和自建frp里都碰到过。最典型的场景是客户端日志显示隧道已经连接成功Dashboard也显示online但外部就是访问不了。排查路径我一般按这个顺序走确认内网服务本身正常在本地机器curl http://127.0.0.1:8080如果本地都访问不了那不是穿透的问题。确认外部端口连通性用telnet 服务器IP 端口测试如果通防火墙基本没问题。确认访问的协议和端口一致HTTP隧道用浏览器直接访问域名TCP隧道要指定端口很容易把两者弄混。确认绑定地址有些服务默认只监听localhost127.0.0.1frp客户端能连上但转发失败此时在目标机器上检查服务监听的是0.0.0.0还是127.0.0.1后者需要改监听地址。5.2 Cpolar随机域名总变怎么办前面说了免费套餐的随机域名会变化。如果你在做Webhook回调或者别人收藏了你的地址域名一变就没法用了。这种情况要么升级到付费套餐获取固定子域名要么考虑自建frp。还有个小技巧是把临时生成的域名记在笔记里然后通过域名重定向但本质上还是治标不治本。真正要用得长期稳定就得接受固定域名属于付费功能这个事实。5.3 游戏联机“无效会话”问题热词里有提到“pcl通过樱花做了内网穿透提示无法连接至服务器 登录失败:无效会话”这个我在帮朋友调Minecraft联机时也遇到过。先说结论这个问题不是穿透工具造成的而是游戏服务端的在线模式online-mode和用户会话校验机制有关。当你用穿透后的公网地址连接时游戏会向官方会话服务器校验用户身份如果连不上或延迟高就会报“无效会话”。排查思路检查服务端配置online-modetrue时正版用户才能连接如果开的是盗版/离线模式确保客户端也以离线模式启动否则会话校验必然失败穿透的TCP端口要认真对应游戏流量走TCP部分启动器还要求UDPfrp默认只转TCPUDP场景需要显式声明type udp。所以遇到游戏联机问题先别急着甩锅给穿透工具多数时候是游戏本身会话机制和协议类型的问题。5.4 长期运行掉线和自动重连穿透隧道偶尔断线很正常关键是断线后能不能自动恢复。Cpolar的systemd服务默认会在进程退出后自动拉起frp的systemd配置里也有Restartalways断线后会自动重连。如果还是频繁掉线优先检查服务器带宽是否被打满、客户端所在网络是否稳定、token是否正确。另外frp在较新版本里内置了心跳机制默认每30秒发一次心跳包长时间无响应会自动重连这些参数写死在配置里正常情况不需要改动。5.5 穿透速度慢到怀疑人生一点经验分享先判断瓶颈在哪。你可以分别在两端测一下内网上传带宽家庭宽带的上行速度决定了你能提供多大的穿透能力VPS带宽云服务器的带宽决定中转上限两者取最小值就是理论上能跑到的最高速度。优化手段优先级穿透两端尽量靠近内网在华东就选华东节点VPS带宽尽量升级换用stcp模式看能不能P2P直连绕过中转大文件传输优先走压缩如果应用层支持。5.6 配置改完不生效改完frp配置后发现没有变化这是最常见的操作失误。frpc和frps的配置修改后都需要重启对应服务才能生效sudo systemctl restart frps # 或 sudo systemctl restart frpcCpolar的配置文件修改后也需要让客户端重新加载最简单的办法是重启cpolar进程。另外注意TOML对逗号、引号特别敏感多一个中文标点都不行配置文件写完后可以用toml在线校验工具检查一下。结尾写到这里两条路线的基本功都在上面了。我现在的固定组合是临时演示和Webhook调试用Cpolar常驻服务用自建frp。Cpolar让我五分钟内就能把本地服务拿出去给人看frp让我家里NAS、开发机、内网Web服务常年可用还不限制端口和流量。最后分享一个我用真金白银换来的教训穿透工具本身不是安全工具别把内网服务裸奔到公网。第一次用frp时图省事把SSH的22端口原样映射出去密码还是弱口令第二天日志里全是扫描和爆破记录。从那以后我所有穿透服务都改成密钥登录、高位端口、Token加密再没出过问题。如果你也是刚起步建议先从Cpolar跑通第一轮流程理解隧道怎么运作的再切换到自建方案一步步优化。内网穿透这件事没有一次到位的银弹玩久了就会找到最适合自己网络环境的那套组合。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻