由于企业办公需要,笔者在局域网内部署了dns服务器,所有客户机上的dns服务器地址参数都设置为该服务器的ip地址。并且还在dns服务器中新建了一个名为“rtj.net”的域,供企业员工访问内部网站需要。
但经测试,用户可以正常访问企业内部网,但访问inte.net上的网站时就会出现问题。笔者将客户机的dns服务器地址修改为公网dns服务器的ip地址后,就可访问inte.net上的网站,但又不能访问企业内部网站了。然而,为了节省经费,“rtj.net”域并没有在公网的dns服务器上进行注册,只能靠企业网内部dns服务器进行解析,难道没有一个两全其美的办法吗?
分析
dns(domain name server)是一个巨大的分布式数据库,它通过域名服务器提供一个指定域的信息来实现域名的解析,域名服务器负责将域名转换为ip地址。将inte.net中的所有域名信息都放在同一台计算机中是不可能的,因此dns系统采用树形结构,将不同层次域的域名信息分别存储在不同的域名服务器中,最高层为根域服务器。
如要解析名为www.fyssz.net的域名,客户机首先要与本地域名服务器联系,如果查不到该域名信息,本地域名服务器会向根域服务器发送一个请求,查询www.fyssz.net的ip地址,根域服务器发现该域名不属于自己的管辖区,而是属.net下的一个域,它就会通知域名服务器联.net域的域名服务器以获得更多的信息,并发给本地域名服务器一个所.net域名服务器的地址列表。接着本地域名服务器会继续向这些服务器发送解析请求,直到找到fyssz.net域所属的域名服务器并将www.fyssz.net的ip地址信息返回给客户。
由于笔者在局域网内的dns服务器中创建了根域.net域,所以当dns服务器收到不能解析的域名时,会错误地认为自己就是根域服务器,而无法找到inte.net中真正的根域服务器,因此就会出现客户机不能使用域名访问网站的问题。
解决办法
首先在dns服务器中删除根域.net域和rtj.net域,然后再重新创建一个rtj.net域,创建这个域是为了让客户机能够正常访问企业内部网站。同时注意除了企业内部网站所必须的域以外,应该尽量少创建域,防止dns服务器错误解析域名或无法解析。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器