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

大家好,今天蓝胖子花了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记录类型的域名配置成一样。如下,

Pasted image 20240328150910.png

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

image.png

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

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

https://help.aliyun.com/zh/ecs/user-guide/step-1-create-a-vpc-that-supports-ipv6-addressing?spm=a2c4g.11186623.0.0.341a5048uktqgP#4fbf8a7026p05

ECS 开启ipv6

因为主机默认会有个网卡,我直接去网卡处新增一个ipv6的地址。

Pasted image 20240328160255.png

但默认生成的ipv6还不支持访问公网的能力,如下提示,还需要去交换机处开通公网带宽。

Pasted image 20240328160707.png

开通后的效果如下,

Pasted image 20240328160857.png

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

Pasted image 20240328161417.png

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

域名配置

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

通过dynadot ,我买了一个域名lanpangzi.org

Pasted image 20240328152648.png

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

Pasted image 20240328155241.png
cloudflare 提供了免费版本,这对于我来说,再好不过了。

Pasted image 20240328155143.png

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

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

Pasted image 20240328155541.png

dynadot 的DNS settings处配置NS记录指向 cloudflare 的ns节点 。

Pasted image 20240328154816.png

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

Pasted image 20240328164028.png

如果仅仅是配置了这样一条AAAA的记录类型,不开启 cloudflare 的代理功能,在ipv4用户发出DNS请求去询问www.lanpangzi.org的ip地址时会因为找不到 ipv4的地址而造成请求失败。如下,我进行了测试,

在ECS上运行了一个go程序,监听80端口,并且将其收到的http请求头打印出来,在未开启代理时,在我本地浏览器对该域名进行访问(我本地的机器只支持ipv4),出现域名解析失败的错误。

Pasted image 20240328164547.png

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

Pasted image 20240328164603.png

Pasted image 20240328164708.png
综上,通过 cloudflare 代理http请求,可以透明的实现用户和服务器间ipv4和ipv6请求的转换,这也是我推荐的方式。

最后,整个域名和服务器的购买,我花了100多块,你们说这个钱,蓝胖子花的值不值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/496894.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes K8s的监控系统Prometheus安装使用(一)

简单介绍 Prometheus 是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做…

网络服务练习题

综合练习:请给 openlab 搭建 web 网站 网站需求: 1. 基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 2. 给该公司创建三个子界面分别显示学生信息,教学资料 和缴费网站,基于, www.openlab.c…

【Linux 驱动基础】Linux platform平台设备驱动

# 前置知识 总线驱动模型简介: 总线是处理器与一个或者多个设备之间的通道,在设备模型中,所有的设备都是通过总线相连,当然也包括虚拟的 platform 平台总线。 总线驱动模型中有三要素: 1. 总线 /*** struct bus_ty…

C语言书籍——B/陷阱之处(2)

文章参考于文献:《C陷阱与缺陷》[美]Andrew Koening 🌈个人主页:慢了半拍 🔥 创作专栏:《史上最强算法分析》 | 《无味生》 |《史上最强C语言讲解》 | 《史上最强C练习解析》 🏆我的格言:一切只…

Obsidian插件-高亮块(Admonition)

在插件市场里面搜索Admonition并安装插件,就可以使用高亮块了。 添加高亮块 用法稍微有一些不同。按照下面的格式,输入Markdown就可以创建一个高亮块。 内容内容内容输入*ad-*会出现相应的类型可以选择

Dubbo管理控制台

1.将资料中的dubbo-admin-2.6.0.war文件复制到tomcat的webapps目录下 2.启动tomcat,修改WEB-INF下的dubbo.properties文件 #如果Zookeeper是安装在虚拟机上的那么注册中心的地址需要修改为虚拟机的ip地址 dubbo.registry.addresszookeeper://192.168.100.110:2181 dubbo.admin…

对象存储服务MinIO快速入门

对象存储服务MinIO快速入门 MinIO简介开箱使用快速入门封装MinIO为starter1 创建模块heima-file-starter2 配置类3 封装操作minIO类4 对外加入自动配置5 其他微服务使用 MinIO简介 官网文档 开箱使用 docker run -p 9000:9000 --name minio -d --restartalways -e "MINIO…

ocr之opencv配合paddleocr提高识别率

背景1:在这篇文章编写之前使用到的工具并不是opencv,而是java原有的工具BufferedImage。但因为在使用过程中会频繁切图,放大,模糊,所以导致的jvm内存使用量巨大,分秒中都在以百兆的速度累加内存空间。这种情…

WIFI驱动移植实验: openssl库的移植(wpa_supplicant 依赖库)

一. 简介 前面实现了WIFI驱动的移植,而连接某个WIFI热点上就需要用到 wpa_supplicant 工具,所以,本文开始为 移植 wpa_supplicant 工具做准备。 wpa_supplicant 依赖于 openssl库 与 libnl库,因此,需要移植一下open…

鸿蒙hdc使用指导

简介 hdc(HarmonyOS Device Connector)是HarmonyOS为开发人员提供的用于调试的命令行工具,通过该工具可以在windows/linux/mac系统上与真实设备或者模拟器进行交互。 环境准备 hdc工具通过HarmonyOS SDK获取,存放于SDK的toolch…

蓝桥杯练习题总结(三)线性dp题(摆花、数字三角形加强版)

目录 一、摆花 思路一: 确定状态: 初始化: 思路二: 确定状态: 初始化: 循环遍历: 状态转移方程: 二、数字三角形加强版 一、摆花 题目描述 小明的花店新开张,为了吸…

VBA技术资料MF134:单值匹配查找

我给VBA的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套,分为初级、中级、高级三大部分,教程是对VBA的系统讲解&#…

【消息队列开发】 实现 MqClientTests 类——测试客户端

文章目录 🍃前言🌳所需属性🌴BeforeEach🌲AfterEach🎍API测试⭕总结 🍃前言 本次开发任务 测试客户端接口 🌳所需属性 所需要一共三个属性 BrokerServer:服务器 ConnectionFa…

C++进阶之路---C++11新特性 | lambda表达式

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 前言:简介lambda 在C中,lambda表达式是一种匿名函数的方式,它可以用来解决以下问题&a…

免费|Python|【需求响应】一种新的需求响应机制DR-VCG研究

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序对应文章《Contract Design for Energy Demand Response》,电力系统需求响应(DR)用来调节用户对电能的需求,即在预测的需求高于电能供应时,希…

TTS 文本转语音模型综合简述

本文参考文献: [1] Kaur N, Singh P. Conventional and contemporary approaches used in text ot speech synthesis: A review[J]. Artificial Intelligence Review, 2023, 56(7): 5837-5880. [2] TTS | 一文了解语音合成经典论文/最新语音合成论文篇【20240111更新…

使用certbot为网站启用https

1. 安装certbot客户端 cd /usr/local/bin wget https://dl.eff.org/certbot-auto chmod ax ./certbot-auto 2. 创建目录和配置nginx用于验证域名 mkdir -p /data/www/letsencryptserver {listen 80;server_name ~^(?<subdomain>.).ninvfeng.com;location /.well-known…

大数据之scala

为什么学习scala spark是新一代内存级大数据计算框架&#xff0c;是大数据的重要内容 spark就是使用scala编写的&#xff0c;因此为了更好的学习spark&#xff0c;需要掌握scala这门语言 spark的兴起&#xff0c;带动scala语言的发展 scala发展历史 联邦理工学院的马丁 奥德…

spring boot3自定义注解+拦截器+Redis实现高并发接口限流

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途 目录 写在前面 内容简介 实现思路 实现步骤 1.自定义限流注解 2.编写限流拦截器 3.注册拦截器 4.接口限流测试 写在前…

http和https之间的区别和优势

HTTP&#xff08;超文本传输协议&#xff09;和HTTPS&#xff08;安全超文本传输协议&#xff09;是两种在互联网通信中应用广泛的协议&#xff0c;它们在数据传输、安全性、加密等方面有着明显的区别和优势。下面将详细介绍HTTP和HTTPS之间的区别和各自的优势。 区别和优势 1…