先说结论:升级失败了,但在升级过程中,我也找到了别的途径来满足我最初的需求。

一个服务器迁移带来的一系列问题

现在作为一个程序员,谁还没有一个云服务器了(也就刚买了两年的我说到)。

但当你真正去使用这个云服务器做一些好玩的事情的时候,你会发现处处都是坑。

本文旨在分享一个普通人角度下获取公网 IP 的尝试,并非严谨的教程文,请悉知。

高昂的云服务器续费和升级

我现在使用的域名指向的是我一年前购买腾讯云服务器赠送的公网 IP,使用挺方便,我也正常走完了备案流程开启了服务器的 443 端口和 80 端口,但就这一年的体验来说并不算特别好,因为当时买的丐版套餐,带宽只有可怜的 10M,换算成我们平时使用的速率,也就是 1.25MB/s ,再加上 frp 内网穿透导致的宽带打折……,我也查了升级 20M (2.5 MB/s)的价格后,一年要多交 11000 元(跟云服务配置一起捆绑销售)。

现在,甚至仅仅是续费这个10M的公网云服务器的价格,都已经比刚开始我购买时要高得多。

刚刚购买时3年才500多块钱,现在仅仅是续费已经是一年一千多了

个人申请固定 IP 的可能性

换个思路,云服务器我看中的不就是他的公网 IP 吗,那我干脆直接去弄个公网 IP 不就行了,至于性能比它强的设备,树莓派4、Nas、电脑、甚至装了 Termux 的安卓手机都是可以胜任的。

这个五一,我提前跟老家县城的宽带公司进行了多次沟通,了解到他们现在有一个优惠政策,可以让我用 2900元/年的价格享受到上下行同为 200M 的宽带,还送我固定 IP 地址,这不比云服务器香多了?

于是我就安排了出行计划,正好趁这次回老家的机会把我服务器上边的服务也迁移掉。

宽带公司提供的公网 IP 的问题

五一当天,我用老家店里的营业执照申请了安装,师傅当天就上门了,速度非常到位。等宽带师傅装好新的光纤后,我测试了一下网络情况,公网 IP 确实是给我了,但运营商屏蔽了所有的常用端口和协议:80、443、ICMP( ping 协议)。

本来以为这就是小问题,像云服务器一样正常走一下备案流程就可以正常开放了。但我没想到这反倒成了最难处理的一环。

安装师傅和宽带办理业务员的业务熟练度问题

首先,安装师傅知道我这个公网IP没有办法 ping 通肯定是有问题的,我也当场给他演示了 443 端口跟 80 端口不通,但他表示:我就是个扯网线的,我不懂,你可以联系业务员。然后他就走了。

之后,我电话联系给我办理宽带的业务员,她表示她也不懂我在说什么,但她在他们公司的系统操作都是正确的,所以我这边应该没有问题的,她甚至希望我赶紧交钱;我又好气又好笑地让她自己问他们宽带安装师傅装好了没,有没有问题,她们之间沟通完之后表示给我往上反映。

接着,我先后收到了他们的技术专员、技术总监、区技术员的电话,他们问了各种情况后统一表示:对啊,你这个肯定有问题啊,但我也不知道什么问题,就挂掉了。

我这个时候真的生气了,我直接跟业务员说,这是你们公司的问题,不要把问题抛给我。她表示她继续向上反映。

终于,一盆冷水泼下

当天下午三点左右,我终于接到一个靠谱的人打来的电话,他是市宽带公司的业务专员,他说现在宽带公司统一都是把这些端口(80、443、8080 等)和协议给屏蔽掉的,个人宽带账号是无法使用这些的,我问那我备案呢,他说备案也不行,你这个套餐不支持这个,需要再升级到 3500元/年的 10M 带宽,我当时还怀疑我听错了,我确认到:“10M?上下行 1.25MB/s 的那种吗?”,他说对。

那确定了这些问题之后,我通过简单的端口测试发现他们关于公网 IP 的常用端口的屏蔽所言非虚,因为除了这些端口外,其他非常用端口都是可以正常使用的。这种情况在普通家用宽带也适用。

那就继续用家用宽带吧,在一瓶可乐的贿赂下,宽带小哥把拨号放到了我自己的路由器上,动态 IP 到手~。IP 变动也没什么,我们早就有成熟的解决方案了不是嘛。

用 Cloudflare 实现 DDNS

DDNS(Dynamic Domain Name Server,动态域名解析服务),也就是通过一个固定域名来动态指向不同的 IP 。

我这里使用的是 Cloudflare,所以就在 github 里搜索了一下 “Cloudflare ddns” 关键字,找到了一个适合自己的部署方式。
DdnsOnCloudFlare

自动 DDNS 更新日志

用 CloudFlare 绕过网站 80 和 443 端口

搞定了这个域名解析之后,还有另一个棘手的问题:网站端口 80 跟 443。

一个成熟的网站自然不能让用户访问的时候还得自己输入一个奇奇怪怪的端口吧。

比如 sspai.com,看起来很正常,也很好记。

但是 sspai.com:28934 ,看起来就很奇怪了,用户也很难记住这个数字。

好在 Cloudflare 有另一个杀手锏:端口回源转发。

端口回源设置

通过这个特性,当用户访问我们域名的 443 或 80 端口时,Cloudflare 可以帮我们把 443 端口转写成我们自定义的端口(例如 3000 )再发往我们的指定服务。这样就可以完美解决 443 端口被运营商屏蔽的问题了。

可靠性?

其实到了这一步,除了解决问题的愉悦之外,这样的稳定性和安全性也要打上一个大大的问号。

前文提到的宽带公司的业务员有在沟通中提到:“理论上来讲,虽然(家庭宽带)屏蔽了常用关键端口,但其他端口你还是可以正常用的,但这个使用是没有经过我们公司的正式许可的,只是说你暂时可以使用这些端口。”

我也追问:“那我应该找谁去做这个报备呢?”

回:“信息局,具体我也不清楚,你可以自己去网上了解一下。”

总的来讲,宽带公司在任何时候屏蔽我的任何端口,都是理所当然的。

至于我所使用的网站域名,我自然早就在阿里云做了实名备案,但现在这种家用宽带的动态 IP 是没法做备案的,也只好作罢。

Cloudflare 端口回源的功能菜单上也明明晃晃地标上了 “beta” 字样,同样预示着它的不稳定和不可预测。

这就非常头疼了。

其他可能性

那我就彻底与 443 端口说再见了吗?

俗话说:人不能在一棵树上吊死。我自然也咨询了另外两家宽带公司的业务员,其中一家直接已读不回。至于另一家……

与 XX 公司沟通始末

初到 XX 公司营业厅的时候,店门是关着的。我顶着烈日拨通了店门口的手机号。

“啊?办宽带?我还在吃饭,马上回来,你等我两分钟。”

回来的是一名非常年轻的店长,他打开环形锁,踢开店里的躺椅,随口问我想办什么宽带。

我说出了我的诉求,他立即知道我是想办理固定公网IP,专业性跟店内环境形成鲜明地对比。

我也提了一下 443 等敏感端口的事情。

他说:“啊,这个需要做备案的,你如果需要的话,营业执照跟身份证复印件提供一下,我帮你走流程,走完就能开通了。”

什么叫专业!啊!?什么 TMD 叫专业。

至此,Plan B 也找到了。

作者说

种种原因,我自然不太好暴露我办理宽带的城市和接触的业务员所在公司;也希望大家不要深究这一点。

我之所以要这样折腾一番,主要是受够了云服务商的吃相太过难堪,他们在一开始以极低的价格把云服务器卖给你,还送你公网 IP,非常香;之后你的云计算服务、网站也已经慢慢走上正轨,但当你购买的两年或一年的云服务器到期需要续费的时候,割韭菜的时候就到了,你会发现续费价格是你当初购买服务器的价格的十倍以上!

你不得不重新购买入门套餐、重新迁移所有的服务到新的服务器上。当然,所有依赖你之前公网 IP 的服务也要修改 IP 地址,你最好有自己的固定域名,否则又是另一场灾难。

诚然,商业化的团队跟大公司自然承担的起云服务的续费价格,土豪朋友就更不用说了;而且云服务器不单单只是提供一个公网 IP,他们会为你的云计算提供一整套的云服务器和配套安全服务,从种种意义上来说,它的存在也解决了不少人和团队的痛点。

但假如你跟我一样,只是一个卑微的小极客,只是想做一些好玩的东西方便自己或者大家使用,且不想每过几年就被云服务商割韭菜,那本文算是一个不成熟的解决方案之一吧。

至少这一套流程走下来,网站是跑起来了,服务也通过一般端口正常映射出去了不是嘛。

而且你只是借用了家庭宽带的网络,都不需要额外费用的。

再不济我还有 PlanB 。