找回密码
 注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 38707|回复: 40

win7下IPv6 DNS的问题

[复制链接]
wqxcx 发表于 2010-11-18 22:25:36 | 显示全部楼层 |阅读模式
我是联通ADSL 用的teredo隧道获取的IPv6 修改hosts后网站都可以正常访问
近来添加了一个IPv6的DNS服务器 用nslookup测试 可以解析出v4和v6地址 但是ping的时候 返回的是v4地址 而不是v6 地址
相同的环境下 我用XP ping返回的就是v6地址 怎样才能让win7下默认使用v6地址呢?
相同情况在国外的一个论坛 发现了 没见有人答复
http://www.win7heads.com/network ... esolve-problem.html
满天星 发表于 2010-11-18 23:21:28 | 显示全部楼层
这个问题确实很头疼,当在IPv4网络下使用隧道接入IPv6后最大的问题就是大部分应用程序都直接通过IPv4来通讯,查询时也只查询IPv4的A记录,而不是IPv6的AAAA记录,目前这一块确实相关资料与介绍比较少!
对于纯IPv6网络或者类似各种isatap或dhcpv6以及无状态地址自动配置的主机,可能因为有IPv6的默认网关存在,因此优先使用IPv6,直接发起A记录查询。
而Teredo、vpn等上层协议承载IPv6的隧道貌似不行,可能因为没有IPv6网关,大部分数据都是不查询AAAA记录,而只查询A记录,导致出现此问题。
个人认为这个可能与各个应用程序的具体实现有关系,当然也许和操作系统有关,但目前确实未找到具体的解决办法,需要进一步分析一下……
因为对于DNS服务器来说,是不区分IPv4或IPv6的,只区分查询的是A记录还是AAAA记录,可能各种应用程序在Teredo等接入情况下默认直接选择A记录,而不会查AAAA记录,导致CNAME记录指向的也查询失败,因为对应的CNAME主机是纯IPv6服务器,并没有IPv6的AAAA记录。
改天有时间了将XP下的ping.exe文件拷贝至Win 7,然后在Teredo隧道下验证一下就知道了,今天太晚了,不做验证了,楼主可以自行测试一下……
修改hosts文件后,域名直接绑定至IPv6地址,不触发DNS查询,直接强制使应用程序只能使用IPv6单协议栈,但这种方式确实非常烦人。
回复

使用道具 举报

满天星 发表于 2010-11-18 23:26:31 | 显示全部楼层
可以分别将xp下的ping.exe复制到win7下,改个名字ping_xp.exe
再将win 7下的ping.exe复制到XP下,改个名字ping_win7.exe
然后分别试试各操作系统下,二个命令的处理是否有差别!
确认是操作系统的问题还是英语程序的问题。
回复

使用道具 举报

 楼主| wqxcx 发表于 2010-11-18 23:56:45 | 显示全部楼层
已做了初步测试 XP的ping程序在 win7下 得到的结果依然是 v4地址 同win7自带ping
win7的ping程序 在XP下无法运行(因为我win7是64位 而XP是32位) 不过我推断 ping出的结果应该为V6地址
估计是操作系统问题……
回复

使用道具 举报

 楼主| wqxcx 发表于 2010-11-19 00:01:22 | 显示全部楼层
PS 我就是因为每次访问新的站点都要添加hosts记录太繁琐 而hosts又不支持通配符 才用BIND自己架设了一个DNS服务器 想在本地实现泛解析 测试中 我将 DNS中的A记录删除 只保留AAAA记录 win7就直接报告找不到主机 而XP却完全没问题
按说DNS服务器在本地 不需要走teredo通道啊
回复

使用道具 举报

 楼主| wqxcx 发表于 2010-11-19 00:18:18 | 显示全部楼层
teredo隧道开启和禁用时 测试结果如下:
                                   命令ping                         命令ping -6              命令ping -4
XP隧道开启                   返回v6地址                      返回v6地址               返回v4地址
XP隧道关闭                   返回v4地址                      返回v6地址               返回v4地址
win7隧道开启                返回v4地址                      返回v6地址               返回v4地址
win7隧道关闭                返回v4地址                      报告找不到主机          返回v4地址
回复

使用道具 举报

 楼主| wqxcx 发表于 2010-11-19 00:23:20 | 显示全部楼层
有点抓狂……
刚刚在win7下 show prefixpolicies 发现只剩下 2001::/32了
回复

使用道具 举报

 楼主| wqxcx 发表于 2010-11-19 00:40:10 | 显示全部楼层
reset ipv6并重启后 show prefixpolicies正常了 但是问题依旧
将win7的前缀策略 按照可用的xp进行设置 也无改善……看来不是那么简单的……
回复

使用道具 举报

满天星 发表于 2010-11-19 19:33:29 | 显示全部楼层
俺楼主的测试结果,那么这个问题估计有可能就是Win 7 的某些默认设置需要修改!但好像目前未查找到相关的资料或修改方法。
show prefixpolic貌似也是无效的,我之前已经试过了!
不过你的测试过程中有几个问题:
1.你本地架设bind做dns服务器貌似没啥实际的意义,而且你所说的本地dns服务器其实并不能完全解析,除非你手工将某些域名的域直接在你架设的bind中作配置,否则仍然会通过你架设的bind服务器而再次转到互联网中的域名根服务器获取记录。
2.你通过bind架设的服务器只写AAAA记录,删除A记录时,在Win7下因为默认查询A记录,导致找不到主机,而XP则是查询AAAA记录,所以能直接返回AAAA记录。
3.DNS返回的记录与服务器无关,也与dns服务器是IPv6或IPv4没有关系,只区分A记录或AAAA记录。
4.你在6楼的测试记录中很诡异,win7隧道关闭,然后ping  -6的结果为找不到主机,这个不对,应该是有问题的。不管是否开启Teredo(因为DNS服务器不会区分IPv4或IPv6),只考虑查询的是何种记录。而ping -6默认会查询AAAA记录,除非是你查询的该记录本身确实没有AAAA记录。是否哪里存在错误?

这个问题非常烦人,我这边环境太有限,也是Win 7 X64的系统,但使用Intel Wifi  link  5100agn无线网卡,不支持Wireshark抓包,这个很不爽。装虚拟机搞的XP与2003才能抓包,没在虚拟机搞过Win7 ,所以一直也懒得折腾,没有分析原因。
回复

使用道具 举报

 楼主| wqxcx 发表于 2010-11-20 00:29:10 | 显示全部楼层
本身架设DNS服务器是为了在本地实现某些域名的泛解析 比如 blogspot.com  blogger.com 下面有太多的二级域名 手动添加的话 工作量太大
隧道关闭与开放状态下win7报告的差异是无误的 昨天试过两次 刚刚又试过一次 很诡异
可以找一能够解析v6地址的DNS 测试一下(比如hosts列表页面提供的 #2001:470:20::2 (v6) #74.82.42.42 (v4)) 我感觉这个问题抓包是分析不出来的 只能向微软反映 本人英文水平不过 所以Google了很长时间也没找到类似情况
一会去微软的论坛反映下 看看能不能得到解决 现在对于泛域名解析 我采用的是PAC代理法 即 访问*.blogspot.com时 用www.Google.com:80做代理 在hosts中 定义www.Google.com的v6 地址
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|IPv6BBS ( 京ICP备13024693号 | 京公网安备11010802012238 )

GMT+8, 2024-4-30 22:19 , Processed in 0.025496 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表