Administrator
发布于 2025-01-27 / 4 阅读
0

CloudFlare解决家庭网络80和443端口封禁问题

参考:

动态ip之痛

宽带运营商的选择!

广电与移动运营商几乎无法申请公网ip。

联通和电信运营商申请则容易很多,直接电话联系客服开通即可。

然后家庭网络申请到的公网IP都为动态公网ip在一定的触发条件下公网ip会变动,有可能是48小时自动变ip,或者是你重启电脑,重启路由器就变ip。一般ip变动的值都是最后一部分,例如xxx.xxx.xxx.123,这个公网ip后面的123不是固定的,会在0-255之间变动。

所以为了解决需要不停更新ip地址的问题,我们需要购买域名,然后使用域名解析将当前动态公网ip联系到域名。

最后通过DDNS技术,来自动将域名的解析记录修改为新分配的公网ip。

但是逻辑上使我们能在公网上访问我们的服务器并非如此简单,如下图所示:

家用的路由器并不提供应用功能,路由器使用DHCP技术(即自动为连接该路由器的设备分发局域网ip地址),是这些连接路由器的设备提供应用功能。

那么设备1只能访问到设备2,还是无法使用到局域网内设备提供的应用服务。

但是一般tp-link路由器提供虚拟服务器技术,可以将公网ip端口与局域网ip:端口进行映射。

既可以获得一张类似这样的表:

外部port

内部port

ip地址

8080

80

192.168.1.2

那么我们就可以通过115.192.2.3:8080来访问设备3(192.168.1.2)创建的网页。

使用端口访问之痛

所有运营商都会封锁80,8080,443等敏感端口,就是为了防止家宽建站。

你需要在你的域名后面加个端口号,例如http://yourdomain.com:2233,这样才能够正常访问。

这样既不美观,而且具有一定的不安全性。

即使进行了域名的备案,我们还是无法使用80和443端口来访问!!!!!

我们需要通过其他手段去掉域名后面的端口号,这样即使我使用非80或443端口建站,直接输入域名也能正常访问网站,无需再手动输入端口,达到和80端口443端口网站一样的访问效果。

有两种解决方案:

  • cdn

    • 有些cdn的回源可以设置自定义端口,用cdn可以解决去掉端口号的问题,这个方法同时适用于域名未备案的网站(使用香港cdn),缺点就是不能直接回源,非境内cdn会对速度有一定影响

  • 隐形url解析(本文并没有使用和提及具体用法)

Cloudflare设置任意回源端口

首先,除了常用的 80 和 443 两个标准端口,Cloudflare还支持11个其它端口。Cloudflare总共支持HTTP端口7个,HTTPS端口6个, 分别是:

HTTP协议

  • 80

  • 8080

  • 8880

  • 2052

  • 2082

  • 2086

  • 2095

HTTPS协议

  • 443

  • 2053

  • 2083

  • 2087

  • 2096

  • 8443

那么如果使用cloudflare的dns服务(域名解析服务),除上述端口外的其他端口将无法访问到。即无法访问到a.com:8888。

dns服务如下图。

对于CDN来说,回源域名和端口与访问的不同,这是非常正常的需求。功能强大的Cloudflare当然也支持任意回源端口,这是回源源规则(Origin Rules)的工作。通过回源规则,我们轻松的实现了不用写代码也能使用上后端服务器上的任意一个可用端口,这对于运行在NAT VPS上的服务非常有用。

通过回溯功能我们可以就可以通过访问a.com,来得到a.com:8090的应用服务(即访问a.com,回溯规则会访问a.com:8090并将get到的页面返回给a.com)