DNS(Domain Name Server)是一个巨大的分布式数据库,它通过域名服务器提供一个指定域的信息来实现域名的解析,域名服务器负责将域名转换为IP地址。将Internet中的所有域名信息都放在同一台计算机中是不可能的,因此DNS系统采用树形结构,将不同层次域的域名信息分别存储在不同的域名服务器中,最高层为根域服务器。
由于企业办公需要,笔者在局域网内部署了DNS服务器,所有客户机上的DNS服务器地址参数都设置为该服务器的IP地址。并且还在DNS服务器中新建了一个名为"knowsky.com"的域,供企业员工访问内部网站需要。
但经测试,用户可以正常访问企业内部网,但访问Internet上的网站时就会出现问题。笔者将客户机的DNS服务器地址修改为公网DNS服务器的IP地址后,就可访问Internet上的网站,但又不能访问企业内部网站了。然而,为了节省经费,"knowsky.com"域并没有在公网的DNS服务器上进行注册,只能靠企业网内部DNS服务器进行解析,难道没有一个两全其美的办法吗?
分析
DNS(Domain Name Server)是一个巨大的分布式数据库,它通过域名服务器提供一个指定域的信息来实现域名的解析,域名服务器负责将域名转换为IP地址。将Internet中的所有域名信息都放在同一台计算机中是不可能的,因此DNS系统采用树形结构,将不同层次域的域名信息分别存储在不同的域名服务器中,最高层为根域服务器。
如要解析名为knowsky.com的域名,客户机首先要与本地域名服务器联系,如果查不到该域名信息,本地域名服务器会向根域服务器发送一个请求,查询knowsky.com的IP地址,根域服务器发现该域名不属于自己的管辖区,而是属于net下的一个域,它就会通知域名服务器联系net域的域名服务器以获得更多的信息,并发给本地域名服务器一个所有net域名服务器的地址列表。接着本地域名服务器会继续向这些服务器发送解析请求,直到找到knowsky.com域所属的域名服务器并将knowsky.com的IP地址信息返回给客户。
由于笔者在局域网内的DNS服务器中创建了根域和net域,所以当DNS服务器收到不能解析的域名时,会错误地认为自己就是根域服务器,而无法找到Internet中真正的根域服务器,因此就会出现客户机不能使用域名访问网站的问题。
解决办法
首先在DNS服务器中删除根域、net域和knowsky.com域,然后再重新创建一个knowsky.com域,创建这个域是为了让客户机能够正常访问企业内部网站。同时注意除了企业内部网站所必须的域以外,应该尽量少创建域,防止DNS服务器错误解析域名或无法解析。