这个是我用了周六一个上午的时间总结出的我在学习DNS期间的心得与体会,特与大家分享,也以此答谢冷风和游魂站长的厚爱。把他献给和我一样的linux菜鸟们! DNS学习心得 徐俊晖(OICQ:19054300 linux菜鸟) DSN即domain name server也叫域名服务器,他是域名和IP地址相互转换的一种服务器。对于初学者来说是一个很难理解的问题。本人在DNS的学习中深有体会,百受折磨。特把自己在学习DNS中的心得奉献给哪些linux菜鸟们。 域名服务(DNS)是Internet的核心,没有DNS,人们使用Internet将会非常困难,对于服务器管理员来说,理解DNS运行方法和掌握把Red Hat Linux系统配置为DNS服务器的方法非常重要。你或许已经知道Internet使用协议(IP)。换句话说,在Internet上的所有计算机都有唯一的IP地址,并且来自和去往每个计算机的全部通信都要使用IP进行传输。与此类似的是公共电话网。每个电话都有自己唯一的电话号码。要打电话必须知道对方的电话号码。同样,为了在Internet上为了进行能够交流,需要IP地址。但是人们一般讨厌记忆特别大的数字。因此有必要实现更简单的交流方法。DNS填补了这个空白。 使用DNS一定要明白你是否需要DNS。或者把你的服务器配置为远程ISP的DNS服务器的客户端。下面将介绍如何将一台服务器配置为DNS客户端简单点说如何让你的服务器能够上网。这里需要的文件是一个叫解析器的配置文件。 Ⅰ DNS客户端的配置 一./etc/resolv.conf 配置这个文件非常简单,你可以在进行服务器安装过程中进行设置,或者当你远程的ISP的DNS不可用的时候需要手工改变这个文件。 # Default domain domain xxx.com # Default search list search xxx.com # First name server nameserver 202.97.224.68 # Second name server nameserver 211.99.24.85 这个文件以#为注释行,不被系统所解释,其中nameserver一般设置两个,通常可以支持三个名字服务器。当然可以把nameserver设置为在任意Internet上的域名服务器的IP地址。不过为了减少在域名解析中使用的时间,应该使用最近的名字服务器IP地址,另外不要在解析器配置文件中未经许可使用别人的域名服务器IP地址。如果你的解析器加重了别人域名服务器的负担,会被认为是无礼并会吃官司。 二.当然也可以在/etc/hosts文件硬编码一个或多哥主机名的IP地址。该文件的形式为: IP address hostname shot-cut hostname 例如: 210.76.63.163 heb.col.com.cn heb 127.0.0.1 localhost localhost 这样当远程的DNS服务器不可以使用的时候,解析器能用该文件来解析地址。另外如果网络较小那么不想运行本地的DNS就可以使用此文件来进行解析地址。不过当远程的DNS服务器和/etc/hosts都可以使用的时候解析器必须知道该按照什么样的顺序进行处理DNS查询这样我们就涉及到了另外的一个文件/etc/host.conf 三:/etc/host.conf order hosts,bind 如果/etc/hosts.conf文件有order命令行的话,解析器首先使用/etc/hosts文件为查询提供服务,并且如果这个文件中没有能被使用的入口,那么就使用在/etc/resolv.conf文件中规定的bind或者DNS服务器。如果你有大量的用户,可以使用本地的DNS服务器而不是利用/etc/hosts文件提高DNS有关性能,这是因为对每个DNS请求进行/etc/hosts文件读取非常的浪费时间。一旦设置了上面的几个文件你就可以ping互联网上的任意一台主机了。当然在此之前你的服务器安装应该正确的,起码网卡的安装要正确。检验网卡的安装是否正确可以ping自己的IP地址。但是运行自己的DNS服务器对管理非常有益。例如,如果拥有一个或者多个Internet域,就可以增加、删除或者修改DNS记录,下面我将把如何设置本地DNS服务器的心得告诉给大家。 Ⅱ 本地服务器如何配置DNS。 在一些比较普遍的DNS服务器上我们只涉及主DNS服务器,所以在这里我们只介绍主DNS服务器的配置方法,当然我们可以随着要求的提高学习如何配置从DNS服务器,使用DNS服务器平衡负载。这里只是简单的介绍一下。 一:主DNS服务器配置方法介绍。 如果在进行服务器的安装过程中选择了完全安装那么DNS就已经在你的服务器上安家了,当然如果在安装服务器的时候疏忽了DNS那么也不用着急,我们可以从光盘中找到DNS的安装软件包,通过FTP把他长传到你的服务器上。他的包名称为(6.2)bind-8.2-6.i386.rpm 采用如下安装方法rpm –ivh bind-8.2.6-2.i386.rpm BIND软件带有3个程序;/usr/sbin/named(名字服务器),/usr/sbin/named-zxfer(名字服务器的附带程序),/usr/sbin/ndc(控制名字服务器的程序),和/usr/doc/bind-8.1-2/named-booot-conf.pl(把旧配置文件改变成新格式的perl脚本附件).理解DNS的配置基础。BIND域名服务器named的主要配置文件为/etc/named.conf.在DNS启动的时候他会读取该文件来决定如何进行工作的。 // 、#和/*是用来进行注释的。 我们常用的配置是: options { directory path_name; }; 当然还有好多其他的选项,由于本人水平有限就不提供给大家了,我们只讨论最常用的方法。 这个选项很重要。通常是用于指定服务器的工作目录,服务器工作目录是保存全部域或区域特有文件的地方。 通常是(注意一定要用绝对路径否则会被认为是服务器启动的当前目录) options { directory “/var/named”; }; zone区域声明。除了选项声明之外 ,在任何的named.conf上都必须有区域声明。通常有三种声明类型。 1. 主要区域声明 zone “” { type master; file “db.”; } 这里名字服务器配置为主名字服务器。File后面是用来指定区域特有的配置文件名,他必须在指定路径/var/named下。 2. 从域名服务器 我们可以把一台服务器配置成从域名服务器。这样当主域名服务器出现故障的时候从域名服务器可以担当起主服务器的职责。他就象UPS一样。 zone “xujh.com” { type slave; masters {210.76.62.223;}; file “db.xujh.com”; }; 这里xujh.com被设置为从服务器。主服务器用IP地址表示。这样从服务器就会从主服务器地址联系更新他的区域拷贝。 3.高速缓存DNS服务器。 Zone “.”{ Type hint; File “named.ca”; }; 从技术的角度讲,所有的DNS服务器都是使用高速缓存的服务器。这样可以加速访问的速度。也就是当客户进行DNS查询时可以直接从缓存中取出IP地址反馈给客户。 以上是三种服务器的类型,也就是在/etc/named.conf配置文件中我们经常使用的类型。当然我们通常使用的是第一种和第三种。例如,如下是一个主DNS服务器的配置文件。 /etc/named.conf options { directory “/var/named”; }; zone “.”{ type hint; file “named.ca”; }; zone “0.0.127.in-addr.arpa”{ type master; file “named.local”; }; zone “”{ type master; file “db.”; }; zone “63.76.210.in-addr.arpa”{ type master; file “db.210.76.62.223”; }; 在上面的例子中你会发现一个区域为zone “0.0.127.in-addr.arpa”和zone “63.76.162.in-addr.arpa” 不要惊奇,刚才忘了介绍。因为在前面我们已经提到了DNS是域名和IP地址之间的相互转换,所以如果当我们知道一个主机的IP地址的时候想获得这台机器的主机名那么我们就用到了上面的两个区域文件,他们通常被称为是反向DNS解析也就是IP到域名的转换。要注意的是特殊的区域名字(0.0.127)是对本机localhost 的解析。反向解析要求的是把网络数字反向DNS区域。 下面我们将介绍/var/named下的区域文件的配置方法。 对于上面的例子来说,服务器的/var/named下应该具备的文件是 named.ca、named.local、db.、db.210.76.62.223 我们拿db.区域文件来讲解区域文件的配置 db. @ IN SOA . root..{ 2001031818; serial 28800;refresh 14400;retry 3600000;expire 86400 ;default_ttl } @ IN NS 5 http://www.. IN MX mail.. http://www.. IN A 210.76.62.223 mail.. IN A 210.76.62.223 ftp.. CNAME http://www.. SOA:为授权的开始记录用来表示区域的启动。第一栏是名字栏。该栏总是被设置为@,并且在相同的文件中别的资源记录不能重复。被用来指定当前的名字服务器的主机名,root.是用来为区域指定系统管理员的电子信箱地址也可以用root@.来指定。注意后面的点一定不要省略。serial是该区域文件的版本号。通常使用YYYYMMMMDDNNNN 格式的数字,也表明此文件最后修改的时间。要注意的是每次的修改一定要改变此号码,这样才能被服务器所认为已经修改了这个配置文件,本人在这个地方受了很多的折磨。Refresh和从名字服务器有关系,即要多长时间从名字服务器需要和主名字服务器联系然后比较是否需要更新从名字服务器信息。Retry表示由于外部的问题,从名字服务器重新传输一个失败的区域前要等待的时间.expire是从名字服务器使用区域数据有效期的上限值。Minimum是指在区域文件中没有指定寿命的资源记录上寿命(TTL的强制最低限度)所以每个区域文件必须只有1个SOA记录。 @ IN NS http://www..用来指明该www.是该区域文件的名字服务器,可以指定多个NS记录。实际上应该有两个NS记录一个为主一个为从。MX记录是该区域文件的邮件交换,用来指定为域的SMTP邮件服务器的主机名。5这个数值称为preference只有在存在一个或者多个邮件服务器的时候才起作用。也叫优先级。CNAME:规范命名记录,指定规范主机名的别名也就是ftp.和www.是同一个主机的意思。 一般情况下named.ca和named.local不用设置。这里不做介绍了。让我们来看看反向解析的配置文件吧。我们用db.210.76.62.223为例子。 @ IN . root.. { 2147836550;serial 28800;refresh 14400;retry 3600000;expire 86400;default_ttl } @ IN NS http://www.. 223 IN PTR http://www.. 这里我们主要介绍PTR,他是域名指针记录用来把主机名翻译为IP地址。也就是反向域名服务。 三:从/辅DNS服务器配置。 配置这样的服务器很简单。唯一需要修改的就是/etc/named.co比如我有两台服务器,其中一个是www.(主)另外的是www.webstage.com(从),那么我应该做的是在从服务器上在/etc/named.conf中创建类似以下的区域声明: zone “webstage.com”{ type slave; file “db.webstage.com”; }; 因为他是从名字服务器所以我们并不用手工建立db.webstage.com我们可以利用 named-xfer –z db.webstage.com –f db.webstage.com \ -s 0 http://www. -z 选项用来说明区域命名,-f选项用来指定区域文件名,-s选项用来指定信息当前存在的名字服务器。这样我们就创建了db.webstage.com了,我们把他拷贝到webstage.com的/var/named中我们就做完了从DNS服务器的配置了。 四:使用DNS服务器平衡负载 这种想法是在多哥同类服务器中共享负载。他也叫循环域名服务。比如有两台服务器。www1.(192.168.0.1)和www2.(192.168.0.2),并且想使用循环DNS方法在两个服务器上平衡www.的负载那么。就可以在区域文件中增加如下两行: www1 IN A 192.168.0.1 www2 IN A 192.168.0.2 www IN A www1 www IN A www2 这样如果我们ping http://www.的话我们可以看到192.168.0.1停止之后我们在ping http://www.我们会发现192.168.0.2了,但是这种方法虽然很好但是如果我们这两台服务器中有一台出了故障那么他们并不知道这些所以会出现有的人可以浏览到网站而其他的人无法浏览网站。 五.DNS的控制 DNS的控制很简单。在/etc/rc.d/init.d/named中可以进行控制当然我们可以创建一个叫SXXnamed的符号连接 Ln –s /etc/rc.d/named S55named 或者我们可以利用ndc start命令 重载DNS命令为:ndc reload不要忘记把SOA记录中的序列号进行修改。 终止DNS ndc stop 查看服务器的统计ndc stats 六.测试DNS服务器 nslookup 如果把你的服务器配置为主NDS服务器了,并且在/etc/resolv.conf中first nameserver已经写入了你的主服务器的IP那么这里会出现 nslookup >210.76.62.223 >www. 您成功了吗! |
|