frp内网穿透官网

frp 的网穿网官网其实就一个域名:github.com/fatedier/frp。别去搜什么“frp官网中文版”,透官那些排在前面的网穿网多半是第三方打包的下载站,夹带私货是透官常事。真正的网穿网发布页在 GitHub Releases,作者 fatedier 一个人维护了快十年,透官star 数早就过了七万。网穿网

我最早用它大概是透官 2018 年,那会儿还在折腾树莓派。网穿网家里宽带没有公网 IP,透官想把 SSH 暴露出去,网穿网试过 ngrok,透官免费版每次重启域名都变,网穿网烦。透官frp 的网穿网配置文件一写完,服务端跑在腾讯云 1M 小水管上,客户端在树莓派,五分钟就通了。到现在那台机器还在用,配置基本没动过。

它到底怎么工作的

一句话:frps 跑在有公网 IP 的机器上,frpc 跑在内网机器上,frpc 主动连 frps,把内网端口映射到公网端口。就这么简单。没有花哨的 P2P 打洞,全靠中转。好处是稳定,坏处是流量都走服务器,带宽和延迟全看那台机器的质量。

配置文件是 ini 或者 toml 格式。frps.ini 里通常就写个 bind_port,比如 7000。frpc.ini 里写 server_addr 指向公网 IP,然后一段段 [xxx] 定义要穿透的服务。拿 SSH 举例:

[ssh] type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6000 

重启 frpc,公网那台机器的 6000 端口就通到内网 22 了。我第一次跑通的时候盯着终端看了半天,觉得这事挺神奇。

版本迭代里的一些变化

0.50 是个分水岭。之前 frpc 的配置语法有点乱,之后引入了 toml 支持,还加了 tcpmux 和 xtcp。xtcp 是点对点穿透,理论上不消耗服务器带宽,但实际能不能打通取决于两边 NAT 类型,我试过十次成功三次,后来还是老老实实用 tcp 中转。

还有个细节:从 0.52 开始,frpc 的 dashboard 默认只监听 127.0.0.1,要远程看就得改 webServer.addr。这个改动当时被不少人吐槽,但安全上确实合理。

官网文档其实够用

README 里的 quick start 写得清楚,examples 目录下有各种场景的完整配置。我见过有人问“怎么穿透 MySQL”,其实 examples 里就有 mysql.ini,抄下来改个端口就行。文档是英文的,但句子短,没什么长难句,配合翻译插件看完全没问题。

中文资料里,少数派和知乎上有几篇写得不错,但时效性参差。有个坑:很多教程还在用 0.4x 的语法,比如 privilege_mode,现在早就换成 tls_enable 了。照抄老教程跑不起来,别急着骂作者,先看版本号。

实际用下来的感受

frp 不是那种“一键搞定”的工具,配置文件得自己写,端口得自己规划。但它的好处也在这——透明。出问题了看日志,frpc 的 log 会告诉你连没连上、认证过没过、端口有没有被占用。我遇到过 remote_port 被服务器上其他进程占了,日志里一行 bind error 直接定位。

性能方面,1M 带宽的服务器跑 SSH 和网页够用,传大文件就吃力。后来我换了台 5M 的轻量服务器,同时挂五六个客户端,CPU 占用常年个位数。frp 本身开销很小,瓶颈永远在网络。

最后提一句:别用默认的 token。frps.ini 里那个 token = 12345678 不改,等于把门敞开。我见过扫描器专门找 7000 端口发认证请求,改个复杂点的 token,再开个 tls_enable,能挡掉九成以上的无聊扫描。