游客发表
家里那台树莓派跑了三年的免费博客,上个月终于被我从路由器后面拽出来了。内网原因很简单——电信把公网IP收了,穿透DDNS解析到内网地址,免费外网访问直接歇菜。内网给客服打电话,穿透对方态度挺好,免费说现在IPv4资源紧张,内网个人用户默认不提供公网地址。穿透我问那怎么办,免费她说您可以试试内网穿透。内网
行吧,穿透那就穿透。免费
内网穿透的内网本质,是穿透在公网服务器上架一座桥,把外部请求转发到你内网的机器。你的设备主动连出去,保持一条长连接,外面的人访问公网服务器的某个端口,流量顺着这条连接回到你家里。跟公司VPN有点像,但轻量得多。
市面上做这件事的工具不少,收费的居多。ngrok免费版每次重启换域名,frp需要自己有台公网服务器,花生壳免费带宽1Mbps还要实名。我折腾了一圈,最后锁定两个方案:Cloudflare Tunnel和Tailscale Funnel。前者适合有域名的,后者适合只想快速打通设备的。
前提是你得有个域名托管在Cloudflare。免费套餐就够用,不花一分钱。
安装cloudflared客户端,一行命令登录授权,再一行命令创建隧道。Web界面里配好域名映射,比如blog.yourdomain.com指向localhost:8080。完事。整个过程不到五分钟,不需要碰路由器,不需要公网IP,连防火墙都不用改。
我拿它跑了博客、Jellyfin和一台Windows远程桌面。Jellyfin streaming 1080p没问题,延迟比我预想的低。Cloudflare的全球节点不是白建的,国内访问走香港或新加坡节点,体感跟直接连公网差不了太多。
唯一要留意的是Cloudflare的服务条款——代理非HTML流量(比如视频流)理论上属于灰色地带。不过个人用量,没人管你。
Tailscale本身是组网工具,Funnel是它后来加的反向代理功能。设备装上Tailscale客户端,登录同一账号,自动组虚拟局域网。开启Funnel后,它会分配一个*.ts.net的域名,外部可以直接访问你指定的本地端口。
好处是零配置、跨平台、加密到位。坏处是免费版Funnel只支持443、8443、10000三个端口,域名固定不可自定义,而且国内部分网络环境下ts.net域名会被污染。我测试的时候,移动4G能通,电信宽带时好时坏。
所以Tailscale Funnel适合临时演示、远程调试,长期跑服务还是Cloudflare Tunnel更稳。
Cloudflare Tunnel在国内访问速度取决于你走哪个边缘节点。有时候解析到圣何塞,延迟直接飙到200ms。解决办法是在本地hosts里手动指定香港节点IP,或者用Cloudflare的Spectrum(收费)。
另外,如果你穿透的是HTTP服务,记得在Cloudflare后台把SSL/TLS模式设成Full,否则回源可能出问题。我一开始设的Flexible,结果博客样式全丢,查了半天才发现是混合内容拦截。
还有一点:免费方案终究有天花板。Cloudflare Tunnel不限流量但限并发连接数,Tailscale Funnel限端口又限带宽。真要跑生产服务,该花钱还是得花。个人玩票,这两个足够。
现在我的树莓派又活过来了。外网访问博客的速度,甚至比之前用公网IP还快那么一点——毕竟Cloudflare的CDN不是吃素的。
友情链接