家里那台老树莓派一直吃灰,内网直到我把它接上客厅电视当下载机,穿透才想起这茬——人在公司,阿里想远程看看下载进度,内网或者临时传个文件回家,穿透结果卡在路由器后面,阿里死活连不上。内网
这就是穿透典型的NAT穿透问题。运营商分配的阿里IPv4地址是共享的,你家的内网设备躲在路由器后面,外网根本摸不到。穿透买公网IP?阿里电信客服会告诉你每月加100元,还得看小区机房脸色。内网所以,穿透内网穿透成了刚需。阿里
我试过ngrok、frp,但免费版要么限速,要么域名老变。最后干脆自己搭——用阿里云一台99元的轻量服务器当跳板。说白了,就是让云服务器帮你牵线,把外网请求转发到你家的设备上。原理不复杂,但配置起来有几个坑,我踩过,你直接跳过。
先买台阿里云轻量应用服务器,选Ubuntu 22.04系统,地域选离你家近的,比如华东。安全组规则里必须放行TCP端口,不然白搭。然后SSH登上去,装个frps(服务端)。配置文件就几行:bindPort = 7000auth.token = 你的随机密码
启动后,云服务器就监听7000端口了。
难点在客户端。树莓派上装frpc,配置文件要写清楚:serverAddr = 你的阿里云公网IPserverPort = 7000
然后映射你想要的端口,比如SSH的22,或者下载工具的8080。我映射了三个:SSH、Web管理界面、还有一个小型文件服务。启动frpc后,在阿里云上执行netstat -tlnp,看到7000端口有连接,说明隧道通了。
但这里有个真坑——阿里云的轻量服务器有防火墙,除了安全组,系统自带的ufw也可能拦你。我当初折腾了半小时,发现是ufw没放行7000端口。命令很简单:ufw allow 7000/tcp。另外,frpc的日志里如果显示login to server success,那就稳了。
现在我在公司,用ssh -p 7000 root@阿里云IP,就能直接连回家里的树莓派。注意,这里7000是frp的绑定端口,不是SSH的22。frp会把数据转发到内网机器的22端口。速度嘛,取决于你家上行带宽和阿里云带宽,我家的50M上行,看个1080P的监控画面不卡,但传大文件就算了,1GB能等五分钟。
还有个更实用的场景——微信小程序调试。小程序后台要求HTTPS回调,本地开发环境没有公网域名,我直接在内网跑个Nginx,再用frp映射443端口,配合阿里云的SSL证书,完美解决。那感觉就像给家里的老电脑开了个后门,随时能摸进去。
最后提醒一句,安全别疏忽。frps的token一定要强随机,别用123456。阿里云安全组只放行你常用的端口,其他全关。我见过有人把frp的7000端口暴露到公网,结果被扫描爆破,日志里一堆乱码。加个fail2ban,能挡住大部分恶意尝试。
这套方案成本就每月99元,比买公网IP划算。折腾一次,换来的自由感,值。