我在内网搭了一个BIND服务,用来解析内网的一些域名。
但为了怕机器当机,影响同事上网,于是又在他们的机器上设了8.8.8.8为备用DNS。
但是我发现解析顺序并不总是先主DNS,经常解析不了内网域名,但nslookup查看主DNS解析是正常的。



   问题原因:出现此现象是因为 Windows XP DNS 客户端服务 (Dnscache) 时在决定其使用的 TCP/IP 属性中配置的 DNS 服务器的顺序遵循一种特定的算法。如果 DNS 服务器列表重新设定优先级,Windows XP DNS 客户端服务将按定期的时间间隔重置服务器的优先级。默认情况下,服务器优先级重置每隔 15 分钟。

   如果首DNS没有在一秒中之内响应,那么15分钟内,Windows会一直访问备用DNS。


   解决方法:

1.单击 开始、 单击 运行,键入 regedit,然后单击 确定。

2.找到并单击下面的项在注册表中:

   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters

3.在 编辑 菜单上指向 新建,然后单击 $ REG_DWORD。

4.键入 ServerPriorityTimeLimit,然后按 ENTER 键。

5.在 编辑 菜单上单击 修改

6.键入 0,然后 单击确定


注意   ServerPriorityTimeLimit 注册表设置中仅为 0 的值更改默认行为。 所有其他值会导致默认行为。  必须重新启动 Windows XP,更改才能生效。


Win7好像没有使用这种算法?


bat脚本:



@echo off

echo ------------------------------------------------------

rem //-----设置dns开始

rem 设置变量

rem //可以根据你的需要更改

set Dns1=192.168.1.3

set Dns2=8.8.8.8

set Dns3=202.96.134.133

rem //以上依次为首选DNS、备用DNS

echo 正在进行IP设置,请稍等

rem //可以根据你的需要更改

set Nic=本地连接

echo. 首选DNS = %Dns1%

netsh interface ip set dns name=%Nic% source=static addr=%Dns1% register=PRIMARY >nul

echo. 备用DNS = %Dns2%

netsh interface ip add dns name=%Nic% addr=%Dns2% index=2 >nul

echo. 备用DNS = %Dns3%

netsh interface ip add dns name=%Nic% addr=%Dns3% index=3 >nul

set Nic="本地连接 2"

netsh interface ip set dns name=%Nic% source=static addr=%Dns1% register=PRIMARY >nul

netsh interface ip add dns name=%Nic% addr=%Dns2% index=2 >nul

netsh interface ip add dns name=%Nic% addr=%Dns3% index=3 >nul

echo 正在进行IP设置,请稍等

set Nic="本地连接 3"

netsh interface ip set dns name=%Nic% source=static addr=%Dns1% register=PRIMARY >nul

netsh interface ip add dns name=%Nic% addr=%Dns2% index=2 >nul

netsh interface ip add dns name=%Nic% addr=%Dns3% index=3 >nul

echo 正在进行IP设置,请稍等

set Nic="本地连接 4"

netsh interface ip set dns name=%Nic% source=static addr=%Dns1% register=PRIMARY >nul

netsh interface ip add dns name=%Nic% addr=%Dns2% index=2 >nul

netsh interface ip add dns name=%Nic% addr=%Dns3% index=3 >nul

rem //-----设置dns结束

rem //-----修改注册表开始

echo. 修改注册表

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters" /v  ServerPriorityTimeLimit /t reg_dword /d 0

rem //-----修改注册表结束

echo ------------------------------------------------------

echo IP设置完成!XP重启电脑后生效!按任意键退出!

pause >nul



资料:http://support.microsoft.com/default.aspx?scid=kb;en-us;320760