日期:2008-08-02  浏览次数:21002 次

前段时间,不断有好事者询问NT下DNS的负载均衡和泛域名解析问题。现在做以下简单探讨:

(一)负载均衡:

1)就是在DNS中为一个主机名对应上若干个不同的IP地址,如此,在应答DNS查询时,DNS SERVER对每个查询将按DNS文件


中主机记录的IP地址顺序给出不同的解析结果,将客户端的访问引导到不同的机器上去,避免所有客户访问同一台机器。
如下例:
.........
@ IN A 192.168.1.2
IN MX 10 mail
mail IN A 192.168.1.2

WWW IN A 192.168.1.3
WWW IN A 192.168.1.5
WWW IN A 192.168.1.4
........
........
上面的文件里,WWW这个主机名对应了若干个不同的IP地址,当该DNS SERVER接到第一个客户端的名字查询时(查询
WWW),将给出192.168.1.3的查询结果;接到第二个客户端机器的WWW名字查询时,就按照域名记录的顺序给出
192.168.1.5的查询结果,依此类推,直至最后一个记录;然后从头再来,又从192.168.1.3开始返回查询结果。

2)实现的方法:

NT4.0,MS DNS SERVER,SP4 安装完毕;打开注册表编辑器,在
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters中,添加一个新的值:RoundRobin
类型:Dword
设定值:1(按照微软文档的说法是非零的数值)。如果设置为0,则意味着停止DNS的负载均衡式的查询,DNS SERVER在接
受查询时将总是返回接近其记录文件顶端的那个记录(在上面的例子里就是192.168.1.3)。

好了,然后仿照上面的例子,改动你的DNS记录,为一个主机名对应若干个不同的IP地址,重新启动服务。现在ping你设定
的主机名(在本地机上即可),你将发现每次得到的IP地址是不同的。

(二)泛域名解析:

1)这可能是目前在NT中无法完满解决的问题,至少使用微软的DNS SERVER无法完满解决。在INTERNET的新闻组中讨论这个
问题的也有,但最后的答案大多是否定的。NT目前能够解决的泛域名解析基本上只用于MX记录。MX记录即mail exchanger
记录,主要解决信件投递时的寻址问题,看下面的例子:
zone.domian.com
............
............
domain.com IN MX 10 mail
*.domain.com IN MX 10 s-mail-server
@ IN A 192.168.1.2
mail IN A 192.168.1.2
s-mail-server IN A 192.168.1.10
sample1 IN A 192.168.1.20
............
............

根据上面的文件记录,当有xxx@domain.com的信件需要处理时,中转信件的SMTP SERVER将把该邮件转发到mail这台机器
上;现在又有一封xxx@sample1.domain.com的信需要处理,SMTP SERVER通过DNS查询得知sample1.domain.com的IP地址是
192.168.1.20,但是该主机下面并无对应的MX记录,此时DNS SERVER获知文件中存在MX的泛域名记录,就把该记录返回给
查询者(SMTP SERVER),于是xxx@sample1.domain.com这封信被转发至s-mail-server这台机器。这种泛域名解析使发往
domain.com这个域中所有主机的邮件均有归宿。

2)实现方法:
NT4.0,MS DNS SERVER,SP4 安装完毕;打开注册表编辑器,进入
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\DNS\Parameters
添加新值:LooseWildcarding
类型:Dword
设定值:1(非零数值); 设置为0意味着禁止泛域名解析功能。