问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

IPv6用户如何访问IPv4服务器:两种实用解决方案

创作时间:
作者:
@小白创作中心

IPv6用户如何访问IPv4服务器:两种实用解决方案

引用
CSDN
1.
https://blog.csdn.net/qq_34675369/article/details/137118569

随着IPv6的普及,如何让IPv6用户也能访问IPv4服务器成为了一个重要问题。本文将介绍两种解决方案:一是配置Linux服务器支持IPv6;二是通过网络代理厂商(如Cloudflare)进行协议转换。

IPv4和IPv6的协议栈不同,这意味着,其对应的IP包的封装和解析不同,那么只支持IPv4的机器就无法直接与IPv6的服务器进行通信。但目前已经有越来越多人使用IPv6进行通信,如果仅仅让服务器支持IPv4,这无疑会损失一大部分用户,特别是针对于海外业务。

如何让服务器便捷支持IPv4和IPv6都能同时进行访问,就成了我们需要思考的问题。这里给出几个靠谱方案来解决此类问题。

首先要知道一个HTTP网络请求的流程,我们获取到网站域名后通过DNS协议向DNS服务商请求网站的IP地址,接着才开始向这个IP发送真正的HTTP请求。

在向DNS服务商发出请求过程中,如果用户客户端只支持IPv6,那么它会去DNS服务器查询域名的AAAA记录,如果用户只支持IPv4,那么会去DNS服务器查询A记录

AAAA类型的DNS记录里配置的是域名对应的IPv6地址,A类型记录里则是配置域名的IPv4地址。

Linux服务器配置IPv6地址

目前,云服务厂商创建的服务器实例,默认是不分配IPv6的,我们可以通过配置,让其拥有一个IPv6公网IP,接着配置一条AAAA类型的DNS记录,指向这个IP,那么IPv6的用户就可以通过域名访问到服务器了。

我们可以将AAAA记录的域名 和 A记录类型的域名配置成一样。如下,

假设,我们有个lanpangzi.org的域名,配置其子域名为www.lanpangzi.org,并且这个子域名需要同时有IPv4和IPv6的地址,我们就可以对其分别配置A类型和AAAA类型的DNS记录,其中content是对应的公网IP。

这样无论用户是用那种IP协议,都能找到www.lanpangzi.org的对应IP协议的IP地址。

只要得到了域名背后正确的IP地址,那么用户就能正常访问到服务器了。

📢📢📢 但让Linux开启IPv6的支持,还是比较繁琐,无论是在厂商侧设置公网IPv6还是本地Linux服务器需要改动配置都比较复杂,所以推荐使用第二种方式

通过网络代理厂商透明进行协议转换

其实,既然IPv6的用户直接访问IPv4的服务器行不通,那么我们可以加个中间层来转发用户IPv6请求,如下所示,代理商与用户是通过IPv6协议,而与服务器则是通过IPv4。

注意下,用户的请求无论是DNS请求,还是HTTP请求,都应该先通过代理商,DNS请求后代理商返回自己的服务器节点IP,用户再向服务器节点IP发出HTTP请求时,再由该节点对HTTP请求进行转发。

考察了市面上比较主流的网络代理商后,选择Cloudflare,接下来,演示下如何通过Cloudflare来实现请求代理。

ECS 开启IPv6

因为主机默认会有个网卡,直接去网卡处新增一个IPv6的地址。但默认生成的IPv6还不支持访问公网的能力,需要去交换机处开通公网带宽。

接着再配置下实例的安全组,配置成运行任何IPv6的地址访问,因为默认IPv6的包是进不来的。

这下才完成了服务器ECS的配置,我们目前的ECS实例已经拥有了一个公网IP了。

域名配置

接着,为IPv6公网IP配置一个域名lanpangzi.org,来作为应用程序的域名,用户应该通过www.lanpangzi.org这个域名来访问应用服务

通过Dynadot,购买了一个域名lanpangzi.org

接着,在Cloudflare上进行了账号注册,添加自己的域名

Cloudflare提供了免费版本,这对于个人或小型项目来说,再好不过了。

然后在Cloudflare界面配置对域名的解析,需要在域名注册商Dynadot那里注册NS记录,来将lanpangzi.org的域名解析交由Cloudflare。NS记录的节点是在Cloudflare配置域名时告诉给开发的。

NS类型的DNS记录,其作用是指明特定域名应该由哪台服务器去解析,这里是将lanpangzi.org的域名解析交给了Cloudflare自己的服务器节点。

在Dynadot的DNS settings处配置NS记录指向Cloudflare的ns节点。

接着,就是在Cloudflare上对子域名www进行配置,注意www.lanpangzi.org只配置了AAAA记录类型也就是IPv6的地址。

如果仅仅是配置了这样一条AAAA的记录类型,不开启Cloudflare的代理功能,在IPv4用户发出DNS请求去询问www.lanpangzi.org的IP地址时会因为找不到IPv4的地址而造成请求失败。如下,在ECS上运行了一个Go程序,监听80端口,并且将其收到的HTTP请求头打印出来,在未开启代理时,在本地浏览器对该域名进行访问(本地的机器只支持IPv4),出现域名解析失败的错误。

在开启代理后,则HTTP请求正常,且请求头中有Cloudflare加的一些自定义头部。

综上,通过Cloudflare代理HTTP请求,可以透明的实现用户和服务器间IPv4和IPv6请求的转换,这也是推荐的方式。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号