折腾了好几年这个“远程访问”的事情,我算是被整怕了。之前我家里弄了个小服务器,跑着几个自己做的小玩意儿,还有个存照片的柜子(NAS)。
本站为89游戏官网游戏攻略分站,89游戏每日更新热门游戏,下载请前往主站地址:www.gm89.me
问题来了,我不可能永远待在家里。出去跑业务或者旅游的时候,总得能随时掏出手机看看里面的东西。可咱普通人谁有钱搞固定公网IP?电信运营商给的那个IP地址,跟小孩儿的脸似的,说变就变。
老办法,让人抓狂
刚开始的时候,我也老老实实地学着别人,搞了一套动态域名解析(DDNS)。
- 我先是注册了一个域名,花了几十块钱。
- 然后,我尝试在路由器里面找有没有自带的DDNS功能。结果发现,自带的那个功能,跟闹着玩儿似的,只支持几个我根本不认识的服务商。
- 没办法,我只能自己在服务器上写脚本。用Python写了一段代码,让它每隔五分钟就去检测一下自己的外网IP是不是变了。
听起来很完美对?屁!这东西就是个定时炸弹。
刚开始跑得挺我也得意洋洋,感觉自己搞定了。结果,一旦我出门超过三天,回来一看,准是歇菜了。要么是路由器偷偷升级重启了,脚本没跑起来;要么是不知道哪个环节抽风了,IP更新了,但是解析那边没生效,或者干脆被墙给挡住了。
大半夜我躺在酒店床上,突然想起来要取点资料,输入地址,进不去。心头火就噌地一下上来了。还得远程想办法连回家里的电脑,先排查是脚本问题还是网络问题。这哪是享受生活,这是给自己找罪受。我需要的不是一个时不时要人去“爱”它、“维护”它、“更新地址”的破玩意儿。
拍脑袋想了个馊主意,结果真好用
我算是想明白了,所有的麻烦都源于一个前提:我必须保证域名解析的A记录,永远指向我家里那个不固定的公网IP。
这不就是给自己找不痛快吗?我能不能反过来搞?
我决定不要这个“爱更新地址”了。我把思路整个儿扭转了一下:既然外面的世界找不到我家里这个“游击队员”,那我就让这个“游击队员”主动跑到外面一个固定的哨所去报到,然后让所有找它的人,都去那个哨所集合。
- 我动手买了一台最便宜的云主机。配置拉到最低,能跑个简单的程序就行,一个月也就几块钱,比我之前折腾域名都省事。这个云主机就是我的“固定哨所”。
- 我开始研究一种叫“内网穿透”的技术。名字听着唬人,说白了就是在我家里的服务器上安装一个小程序。
- 我配置了这个小程序,让它启动后,就立刻建立一条长期的、稳定的通道,直接连到我那个固定的云主机(哨所)上去。
关键来了。这条通道是反向的。就好比我家里的小服务器,伸出了一根永远连接到哨所的电线。无论我家里的外网IP怎么变,只要这根电线不断,它就一直连着。
实践,验证,甩手掌柜模式开启
我把家里想访问的服务,比如那个照片柜子,端口设置通过这个小程序,映射到了云主机上的某个特定端口。
具体操作,我就是对着网上的几个教程,一个一个命令敲进去的。中间也遇到过防火墙没开、端口被占用的鬼问题,我耐着性子一个个排查,不行就重来。
当我最终在云主机上看到连接成功的日志时,我心想成了。
我把我的域名解析,现在直接指向了这个固定的、永远不变的云主机的IP地址。访问者请求这个域名,请求会先到云主机,然后云主机通过那条稳定的通道,把请求转发给我家里的服务器。家里服务器处理完,再原路返回。
我反复测试了好多次,重启路由器,让公网IP变掉,然后立即尝试访问我的服务。结果,一秒延迟都没有,稳如老狗!
以前那种每天要担心脚本有没有死的焦虑感,瞬间就没了。我的家服务器,现在根本不需要知道自己外网IP是多少,也不需要去“爱”那个动态变化的地址并努力更新它。它只需要牢牢抓住那个固定哨所的连接就行了。
这种方式,等于我彻底避开了DDNS那种脆弱的更新机制。我这小破服务器现在就是个低调的“隐形人”,只管工作,不用操心外部世界地址的变化。真香!以后再也不用半夜起来查日志了,真正实现了当甩手掌柜的愿望。
