利用cloudflare让ipv4与ipv6互通

随着ipv4紧缺,不少地区已经逐步收回公网ipv4,好在现在家庭网络都有ipv6,出门在外还是可以用ipv6访问到家里设备,但现在大部分公司/公共wifi却没有启用ipv6,只有ipv4,而ipv4和ipv6网络本身不能互通,这就导致自己在这些地方不能访问家里设备,要么用内网穿透等方式,要么用移动网络(4g/5g情况下都有v6),使用起来就不是很方便,这里就用cloudflare(简称cf)免费cdn实现ipv4和ipv6网络互通,在公司也能访问家里设备。

这里本质上是用了cf的cdn,有条件的童鞋也可以用其他支持非标准端口的cdn,这里用cf只是它家的cdn免费而已。

提醒:此方法只能使用http/https协议,非http协议还是去用内网穿透吧,或者自己搭建隧道服务器。

一、添加域名到cf

登录cf(https://dash.cloudflare.com/),点击右上角添加站点,输入自己需要添加的域名。

选择免费计划。

如果有dns记录可以此时导入,点击继续。

此时会提示需要修改dns服务器,需要去域名对应的注册商修改域名dns服务器。

我这里域名是腾讯的,就去腾讯域名控制台找到修改dns服务器,填入刚刚cf名称服务器提交即可,其他服务商修改方法大同小异,一般十几分钟就可以生效,此时就可以使用cf来管理域名。

注:cf一定要让域名在它那解析才能用它的cdn,建议用一个备用域名,比如自己平时用a.com,添加b.com到cf,这样平时用a.com直接连接,在没有ipv6环境下再用b.com走cf。

二、添加解析并启用cdn

cf进入到dns设置,点击右上角添加记录,类型选择AAAA,填入自己设备ipv6地址,开启代理(这里就是指开启cdn)

这里建议用ddns,免得ip变动连不上,ddns教程请看上一篇文章《部署ddns-go并配置推送,轻松访问家里nas》,或者用cname解析到原本域名上也可以。

三、修改对应服务端口

cf的cdn有端口限制,并不是所有的端口都可用,需要自行把对于服务端口修改成受支持的端口,docker容器只需要修改映射端口,其他服务若是不好修改那就用nginx反代即可。

HTTP透明端口转发:
80
8080
8880
2052
2082
2086
2095

HTTPS隧道端口转发:
443
2053
2083
2087
2096
8443

HTTP/HTTPS端口隧道转发,但以下端口禁用CDN缓存:
2052
2053
2082
2083
2086
2087
2095
2096
8880
8443

有童鞋肯定也好奇,如果服务太多端口全占完怎么办,岂不是之后的服务不能用的?nginx端口复用了解一下,比如1.a.com:2082访问qBittorrent;2.b.com:2082访问jellyfin,这两个域名同时指向同一个ip,只需要前面用nginx或者其他程序做端口复用就行了,具体有机会再出一期。

此时就已经成功部署,通过ping可以看到ip地址和实际地址不一致,因为cdn存在,所以访问的是cdn地址。

禁用电脑ipv6测试一下,看到还是cdn的地址。

浏览器输入域名:端口即可访问,这里测试下行就是家宽的上行,已经可以跑满绝大部分家庭宽带的上行了(这速度还不够那当我没说),测试发现上传不行那也没法,毕竟就这速度(免费还要啥自行车)。

四、其他

1、限于cf速度,高峰期速度并不理想,但是个人来看1080p没问题,建议搭配自选ip使用(以后再出一期)。

2、延迟问题,cf服务器都在国外,延迟高无解,但是自己用速度行就可以了,想要低延迟得加钱。

3、滥用封号问题,不是一天几个t流量,倒是不会被封号。

4、cdn还有一个功能就是保护源站,可以有效防止ddos等攻击。

THE END