IPv6环境下路由器支持域名登录
问题描述:
在IPv6 的环境下,路由器设备默认为桥接模式,域名登录存在访问不了的情况。
分析:
原来的IPv4环境:
浏览器进行IPv4+DNS解析 -----》 符合特定的域名,进行拦截回复----》DNS解析出地址,进行页面访问
现在IPv6+IPv4的环境:
浏览器进行DNS解析,则会分成如下4类
序号 |
IP |
DNS协议 |
|
1 |
IPv4 |
A(请求IPv4地址) |
|
2 |
IPv4 |
AAAA(请求IPv6地址) |
|
3 |
IPv6 |
A(请求IPv4地址) |
|
4 |
IPv6 |
AAAA(请求IPv6地址) |
如下为一个典型的访问过程,此台PC采用无线连接路由器,浏览器先是发出了3,再发出4,最后发出了2;纯IPv4的1,未发出。
针对每一种情况的处理策略上方案可不同,由于当前设备桥接模式下对IPv6的支持度一般,因此按如下进行:
序号 |
IP |
DNS协议 |
处理策略 |
1 |
IPv4 |
A(请求IPv4地址) |
拦截回复 |
2 |
IPv4 |
AAAA(请求IPv6地址) |
丢弃 |
3 |
IPv6 |
A(请求IPv4地址) |
拦截回复 |
4 |
IPv6 |
AAAA(请求IPv6地址) |
丢弃 |
按上面3-》4-》2的处理方式,这个完整的过程,仍需求12秒,虽然情况3已经做了优先的回复处理。具体报文如附件:
如果对于情况4,采用IPv6+A的回复方式,这种情况在有的设备会认为回复不合法,不断的进行请求,导致解析不了域名,因此选择丢弃是比较合理的。
参考报文如附件:
对于情况2,如果采用IPv4+A进行回复,可能会出现同上面情况4回复IPv6+A一样的结果:个别特殊的设备认为DNS回复不合法,一直进行请求,导致阻塞。
如下情况,浏览器一直没有发A的请求,但最终也能访问页面,大概率是因为没有回复,所以就采用了缓存中的地址,进行了登录。
参考报文如下:
代码处理过程
有线eth865x.c
interrupt_isr->interrupt_dsr_rx->is_skb_dns_packet 做判断
无线8192cd_rx.c
rtl_netif_rx->gothrough_brsrc->is_skb_dns_packet 做判断
再到统一的封装层wrapper.c
wrapper_que_retrieve->wrapper_up->is_dns_packet做判断
ether_input->bridge_input->apclient_dns_redirct做处理
DNS报文拦截
无线连接:这种情况比较好处理,由无线驱动转发至有线驱动报文出去,中间会经过bridge
有线连接:
桥接模式下:
所有的网口都被划到同一vlan中,以加速数据的转发
情况1:IPv4的报文,通过配置SW的ACL规则,可以导入到CPU进行处理
情况2:IPv6的报文,目前没有可行的配置方案进行处理。
路由模式下:
由于存在路由转发,所有报文都会进行处理。
修改后的结果
IPv6的环境下,AP模式下:
无线登录域名进行访问, 延迟在10秒左右,时间如上分析,取决于手机的浏览器、系统返回的具体时间。
有线登录域名进行访问,可能存在访问不了情况(大概率),因为router.cmdc.com的域名会被解析为公网的IP,可能是IPv4,也可能是IPv6。
IPv6的环境下,路由模式下:
略
后续的优化方案
WEB服务器支持IPv6,无论是在有线桥接模式下,或是AP模式下,下面客户端是通过有线或无线连接,都满足如下处理策略:
序号 |
IP |
DNS协议 |
处理策略 |
1 |
IPv4 |
A(请求IPv4地址) |
拦截回复:ipv4+A |
2 |
IPv4 |
AAAA(请求IPv6地址) |
拦截回复:ipv4+AAAA |
3 |
IPv6 |
A(请求IPv4地址) |
拦截回复:ipv6+A |
4 |
IPv6 |
AAAA(请求IPv6地址) |
拦截回复:IPv6+AAAA |
IPv6环境下路由器支持域名登录相关推荐
- 【MySQL】在centos7 纯IPv6环境下,安装mysql5.7
参考链接:https://mirrors6.tuna.tsinghua.edu.cn/help/mysql/ 服务器环境: Centos7 纯IPv6环境(不能与IPv4互通) 按照 https:// ...
- 内网环境下微信扫码登录小结
一.需求: 网站需要接入微信扫码登录,但此网站仅能在内网环境下访问,仅网站服务器可以连接微信外网 二.遇到的问题: 1.图片需要联网: 参考网页:微信网页扫码登录 按照上述网站上的指南接入,在可访问外 ...
- Mac环境下mysql安装以及登录
先安装Django,这个简单,命令行进入Django文件夹,执行 sudo python setup.py install 搞定! 安装Django 接下来就开始安装折磨我的mysql 下载地址:h ...
- 同一路由器下两台电脑ping不通_复杂网络环境下路由器配置问题导致业务故障处理案例分享...
导语 网络中的互联设备趋于复杂化,不同的网络环境引用了不同的网络技术,在发生网络变更后会出现一些比较奇怪的网络问题.本次简单分享一个单位网络搬迁后出现对外应用服务器业务无法访问的案例,通过一切外部表象 ...
- vue-cli 搭建的项目处理不同环境下请求不同域名的问题
使用 vue-cli 开发项目过程中, 根据开发环境和正式环境不同, 我们往往需要请求不同域名下的后台接口, 这时候, 该怎么去设置, 达到同一种写法可以根据环境不同而自动切换请求域名呢? 本文将会介 ...
- linux环境下企业基于域名访问的web于电子邮件服务器 论文,基于Linux平台的企业邮件服务器搭建...
我失骄杨君失柳,杨柳轻飏直上重霄九.得道多助,失道寡助.身后有余忘缩手,眼前无路想回头.鸟宿池边树,僧敲月下门.想当年,金戈铁马,气吞万里如虎. 本文由418133804贡献 pdf文档可能在WAP端 ...
- linux centos6设置ipv6,CentOS纯IPv6环境下设置更新源
1. CentOS下修改DNS配置文件,设置为北邮的IPv6 DNS服务器 : [root@localhost ~]# cat /etc/resolv.conf nameserver 2001:da8 ...
- glew java_使用GLEW在win环境下创建支持高版本OpenGL 上下文
BOOL Cgl::CreateMultiSample(HWND hwnd, BOOL bCreateZBuffer)/*by ZhouZhuo 2014.06.23 凹凸纹理 启动多采样抗锯齿 */ ...
- CentOs环境下PHP支持PDO_MYSQL
一.下载相应tgz包: http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz 二.安装开始 解压# tar zxvf PDO_MYSQL-1.0.2.tgz # c ...
最新文章
- 设计一个矩形类rectangle_万字长文带你捋清六种设计模式的设计原则(建议收藏)...
- 关于shared library的描述
- ORA-00257: archiver error
- linux编译安装zabbix,Linux安装zabbix--CentOS7.3
- 取得Servlet文件的絕對路徑;文件讀寫操作
- c# WinForm开发 DataGridView控件的各种操作总结(单元格操作,属性设置)
- QT 子窗体 最大化 界面显示不对
- IA-32 Architecture: the function of segment regitster(CS DS SS ES)
- java中已定义类型car_Java 8 习惯用语(8):Java 知道您的类型
- python两数相加有进退位_Leetcode_两数相加_python
- 一分钟学会看k线图_1分钟学会看K线请笑纳70种经典K线组合形态,绝对干货,轻松低买高卖!...
- c++ float转double_萌新求教//c语言float和double哪个算得快?
- python绘制函数曲线x2sin(x2-x-2)_下面哪几个选项中的语句能够完成用fplot语句来绘制函数y=x^3+2*x^2+sin(x)在区间[-5,5]上的图形。...
- Exchange Server 2013安装部署初体验
- 【结课报告】游戏中的知识产权
- Mac如何用Boot Camp安装Windows 11?告诉你如何安装 能不能安装!
- 【深度学习框架-torch】torch.norm函数详解用法
- java weka 分类_Weka开发[48]——用Weka文本分类
- 20190404-亥姆霍兹方程、表面等离极化激元
- 蓝桥杯真题——第39级台阶