本帖最后由 CQxxk 于 2019-8-15 20:41 编辑
背景2017年中共某公司 某公司印发《推进互联网协议第六版(IPv6)规模部署行动计划》,计划中指出用5到10年时间,形成下一代互联网自主技术体系和产业生态,建成全球最大规模的IPv6商业应用网络,实现下一代互联网在经济社会各领域深度融合应用,成为全球下一代互联网发展的重要主导力量,因此IPv6改造是当前的热门话题。 IPv6改造是一个漫长的过程,通常我们的门户网站都会包含一些外链网站,门户网站完成改造以后,如果门户网站中包含的外链没有完成改造,我们访问门户网站时其中包含的外链访问就会失败,出现网站显示异常,如图片无法打开,视频无法播放等问题,这就是IPv6改造过程中令人头疼的天窗问题。 解决方案利用某公司负载均衡设备,可以轻松解决天窗问题。 简单来说,客户端对主站发起访问,主站服务器返回带有外链的页面,负载均衡设备替换页面上的外链,客户端收到页面后,发起对修改后外链的AAAA请求到负载均衡,负载回给客户端对应虚拟服务的IP地址。由负载均衡向DNS服务器请求外链的A记录并访问外链网站,并将结果转发给客户端,最终实现IPv6客户端可以通过AD代理访问到IPv4的外链资源。 负载均衡修改外链方式有两种,一种是域名方案,一种路径方案。 路径方式:通过修改URI路径方式代理外链。 域名方式:通过修改域名方式代理外链。如我们访问的news.baidu.com包含外链 www.b.com,外链会被修改为www--b--com.proxy.baidu.com。 两种方案都通过IPro脚本实现,本文演示域名方案。 实验拓扑
本次改造实验通过改造news.baidu.com给大家演示,因此拓扑上呈现的主站节点是互联网的服务器IP,但对实验没有影响。 实验步骤
1、 查看IPv6客户端配置,客户端的DNS服务器指向AD设备: 2、 新建节点池,本次节点池通过PC ping得到:106.120.159.43,通常大型网站都有CDN环境,因此每次得到的IP 可能会不一样,根据各自环境修改节点IP 即可。 3、 修改IPro脚本,在【应用负载】-【iPro】导入最新的脚本,切记每次测试前线确认是否有最新的脚本。当前脚本只需要根据改造的网站修改对应的【DOMAIN】和【AD_HOSTS】字段值即可。 4、 新建虚拟服务,并关联上述的iPro脚本 5、 配置DNS代理,服务器列表为IPv4的DNS服务器,可以正常解析外链。 同时配置内网DNS记录,将*.proxy.baidu.com和news.baidu.com的AAAA记录,指向虚拟服务IP。
此处DNS代理实现的功能,也可以通过智能DNS实现,额外注意的是需要在域名提供商那边做NS记录将 *.proxy.根域名 的解析指向AD。 结果验证
1、 先在虚拟服务里面去掉iPro脚本,打开news.baidu.com,可以看到网页很多模块无法显示 2、 启用iPro脚本之后,页面正常打开: 3、 可以看到页面的外链已经被替换,且可以正常访问,通过修改外链,代理访问的方式解决了天窗问题: 注意事项 1、 域名方案需要额外增加“*.proxy.根域名”格式的子域名解析为AD的虚拟服务IP 2、 域名方案适用于客户的网站通过域名方式访问,如果网站通过IP访问需要使用路径方案,本次不做讲解 3、 AD需要同时有IPv6和IPv4的外网链路 |