双网卡双线路DNS解析分析

在企业网络维护过程中我们经常会遇到这样或那样的奇怪问题,而很多问题需要有深厚的理论知识才能解决。而随着网络的飞速发展越来越多的中小企业开始尝试通过多条线路来保证网络的畅通,一方面双网卡下的双线接入可以保证我们的速度有所提升,彻底解决网通与电信双网交叉访问问题;另一方面双线接入保证企业网络即使有一条线路出现问题另外一条也可以马上接管工作,从而保证企业网络畅通无阻,为企业外网接入提供冗余功能。今天我们也主要讨论下在双网卡双线路接入下的问题。
  一,认知盲区解惑之DNS解析:
  在实际工作中我们可能会产生以下疑问——当我们使用双网卡双线路时本地数据如何转发呢?究竟是通过哪个网卡向外传输又或者说域名解析工作该交给哪个网卡来完成呢?今天笔者就从实际出发从各位网络管理员的认知盲区下手为各位解惑双网卡下DNS解析的问题。
  二,网络环境介绍:
  直接在一台双网卡的计算机进行测试和操作,该机器安装了两个10M/100M自适应网卡,一个是无线网卡,另外一个是有线网卡。两个网卡分别连接两条不同的线路。网卡1是有线网卡获得的网络参数为——ip地址192.168.0.199,子网掩玛255.255.255.0,网关地址是192.168.0.1,而网卡2是无线网卡获得的是ip地址192.168.1.113,子网掩玛255.255.255.0,网关地址是192.168.1.1。
  使用ipconfig /all查看两个网卡的DNS信息可以看到网卡1的DNS地址就是192.168.0.1,网卡2的DNS地址是192.168.1.1,当然这两个地址实际上对应的是两台路由器,各自路由器又对应外网接入。这样就形成了一个两网卡两线路的测试环境。
  三,测试1——双网卡下DNS解析:
  那么现在我就要向各位读者提出问题了,在这种连接方式下两个网卡分别连接两个网段,而这两个网段又分别提供了外网接入和数据路由功能的话,在实际使用过程中DNS是参照哪个网卡呢?答案无外乎三种——按照网卡1的DNS进行解析,按照网卡2的DNS解析,从哪个网卡传输就用哪个网卡的DNS进行解析。
  我们在本机执行nslookup sohu.com针对此地址进行DNS解析操作,从结果可以看出搜狐的IP地址被成功解析出来,解析过程中使用的DNS服务器是192.168.1.1,也就是说解析时采用了网卡2上的DNS服务器地址来完成域名到IP的转换工作。
  四,测试2——单网卡下DNS解析:
  接下来我们将网卡2关闭禁用,再次执行nslookup sohu.com后可以看到IP地址还是被成功解析出来,这次使用的DNS服务器地址为192.168.0.1与网卡1的DNS服务器地址相符。
  五,测试3——再次连接双网卡下DNS解析:
  我们重新将网卡2开启并顺利连接之前的网络,再次执行nslookup sohu.com后可以看到IP地址还是被成功解析出来,这次使用的DNS服务器地址为211.103.158.182。
  登录网卡1对应的路由器地址(192.168.0.1)查看其获得的DNS是202.106.195.68,与上面的地址不相符。
  登录网卡2对应的路由器地址(192.168.1.1)查看其获得的DNS是211.103.158.182,与上面的地址相符。
  经过比较和分析在再次启用网卡2后本地计算机执行域名解析工作又交给了网卡2对应的DNS服务器地址。
  六,测试4——关闭有线网卡后再次开启下DNS解析
  那么是不是本机进行DNS解析时会使用最近一次活跃的网卡呢?我们再次尝试将有线网卡——网卡禁用再开启,如果DNS解析时会使用最近一次活跃的网卡,那么这时本机的DNS地址应该变成网卡1的,但是事实证明这个假想是错误的,再次执行nslookup sohu.com后可以看到IP地址还是被成功解析出来,这次使用的DNS服务器地址还是之前的211.103.158.182,此地址依然是网卡2对应的DNS服务器地址。
  七,总结:
  从上面多个测试我们得出了以下结论——当我们有一个网卡启用而其他网卡禁用或断开时访问外网DNS解析交给该活动网卡中设置的DNS服务器地址;当有两个网卡都处于启用状态时系统会根据规则自动选择一个网卡的DNS服务器地址来解析,如何选择与两个网卡哪个先关闭哪个先开启是没有任何关系的。那么系统自动选择的规则是什么呢?

 

 

  我们继续这个话题为各位从认知盲区解惑双网卡双线路DNS解析。
  一,测试结论的一点思考:
  从结论上看不管我们如何插拔网线和禁用启用网卡,当本机连接两个网卡时系统总是以网卡2的DNS服务器地址作为传输解析使用。
  (1)本地连接次序决定优先级?
  那么这个优先级是以什么规则来决定判断的呢?从本地网络状况处查询可知网卡1对应的是本地连接1,网卡2对应的是本地连接2,这也说明本地系统在选择DNS服务器地址时并不是根据本地连接次序来判断其优先级的。
  (2)有线无线有别决定优先级?
  那么是否无线网卡的优先级就一定比有线网卡的高呢?结论也不是肯定的,笔者还针对了其他几个机器进行了测试,发现有的机器有线网卡优先级总是比无线网卡的高,因此这个结论也被否决。
  (3)IP地址决定优先级?
  从实际参数查询可以看出网卡1是192.168.0.1,网卡2是192.168.1.1,那么是不是IP地址越大优先级越高呢?经过测试发现事实也不是这样的,优先级与IP地址的具体数值无关。
  二,系统自身DNS服务器地址竞争规则:
  经过反复比较和查询资料笔者最终发现了系统自身DNS服务器地址竞争规则,那就是从注册表中要答案。
  第一步:我们通过regedit命令进入注册表编辑器,然后找到[HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Tcpip/Parameters/Interfaces/这个键值。
  第二步:在该键值下我们可以看到有很多字符键值,每个字符键值都包含32个数值。(如图1)
  第三步:当我们查看第一个时就会发现实际上他对应的就是网卡2,里面的IP地址是192.168.1.1。
  第四步:同时在其下的dhcp name server(DNS)中也能够看到DNS服务器地址211.103.158.182,202.106.0.20的身影。
  第五步:反观网卡1对应的键值却要排名靠后很多,DNS地址,IP地址等信息也都在该键值里写得清清楚楚。
  由此我们可以得出系统自身DNS服务器地址竞争规则是按照注册表中各个网卡的顺序来排列的,排名靠前的网卡DNS地址优先考虑,排名靠后的网卡DNS地址不予考虑。
  三,总结:
  至此我们就彻底弄清楚了双网卡双线路时DNS服务器的选取规则,以后在进行具体设置和故障排查过程中我们也要牢记这点,如果非要让其他网卡的DNS优先考虑的话就要通过编辑注册表的方式来解决了,可以把DNS对应的网卡在注册表中位置调整得靠前。

 

转自http://www.233.com/cisco/zhonghe/20081101/105158457.html

作者:Bonker
出处:http://www.cnblogs.com/Bonker
QQ:519841366
       
本页版权归作者和博客园所有,欢迎转载,但未经作者同意必须保留此段声明, 且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利
上一篇:JSON 反序列化 Long 变 Integer 或 Double 问题


下一篇:《正则表达式经典实例(第2版)》——2.6 匹配完整单词