电脑之家 - 专业计算机基础知识与电脑技术学习网站
分类导航

电脑知识|网络技术|电脑硬件|组装电脑|软件教程|

服务器之家 - 电脑之家 - 电脑知识 - 花了 100 块大洋搞懂 IPv6 的用户如何访问 IPv4 服务器

花了 100 块大洋搞懂 IPv6 的用户如何访问 IPv4 服务器

2024-03-29 15:00蓝胖子的编程梦 电脑知识

今天蓝胖子花了100多块搞懂了 ipv6的用户如何访问ipv4 服务器,将收获与大家分享下。ipv4和ipv6的协议栈不同,这意味着,其对应的ip包的封装和解析不同,那么只支持ipv4的机器就无法直接与ipv6的服务器进行通信。

大家好,今天蓝胖子花了100多块搞懂了 ipv6的用户如何访问ipv4 服务器,将收获与大家分享下。

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记录类型的域名配置成一样。如下:

花了 100 块大洋搞懂 IPv6 的用户如何访问 IPv4 服务器图片

假设,我有个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请求进行转发。

花了 100 块大洋搞懂 IPv6 的用户如何访问 IPv4 服务器图片

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

因为我本地的计算还是只支持ipv4,所以我将linux服务器配置成ipv6,演示下ipv4的机器如何访问只支持ipv6的服务器。原理是一致的,都是靠网络代理商转发请求。关于云服务商的服务器如何开启ipv6,我以阿里云为例,其官方文档在下方

延伸 · 阅读

精彩推荐