DNS域名服务 BIND (上)——BIND相关软件包 DNS测试

来源:互联网 发布:java main执行 编辑:程序博客网 时间:2024/05/21 11:07

转载请标明:http://write.blog.csdn.net/postedit/6993461

DNS,最早于1983年由保罗·莫卡派乔斯(Paul Mockapetris)发明。汉语叫域名系统(英语:Domain Name System,缩写DNS)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。DNS 使用TCP和UDP端口53
当我们在浏览器的地址栏里敲入地址:www.163.com访问网易网站的时候,事实上www.163.com最终会被解析成218.60.31.75这个IP地址,而我们的浏览去访问这个IP地址,就可以登录网易的网站了。DNS是一个分布于全球各个角落的分布式数据库系统,类似于我们生活中的114电话查询系统。    
下图简要说明了DNS的工作原理。





BIND,(Berkeley Internet Name Domain)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。20世纪80年代,柏克利加州大学计算机系统研究小组的四个研究生Douglas B Terry、Mark Painter、David W. Riggle和周松年(Songnian Zhou)一同编写了BIND的第一个版本,并随4.3BSD发布。

查看bind版本 named -v

[root@localhost Packages]# named -vBIND 9.7.0-P2-RedHat-9.7.0-5.P2.el6


FQDN(Full Qualified Domain Name),完全合格域名,它由主机名(Host Name)和域名(Domain Name)组成。如果一台主机的主机名为hostname,域名为example.com,那么这个主机的完全合格域名就是hostname.example.com。尽管有些主机的主机名相同,但由于它们的域名不同,所以它们的完全合格域名也是不同的。

DNS的管理是分层的,每一层主机只需要记录下一 层的主机的名称即可。比如“.cn"管理着”.com.cn" , ".net.cn" ,".org.cn", ".edu.cn"等主机,而“.edu.cn"管理着”.neu.edu.cn" , " .pku.edu.cn"等主机,以此类推。

DNS查询流程

以客户端查询abc.edu.cn主机为例,其查询流程如下:

  1. 客户端首先检查本机的/etc/hosts 文件,查询是否有对应记录。
  2. 如果没有对应记录,则向DNS服务器A查询。如果没有记录,则DNS服务器向根服务器查询。
  3. 根服务器判断被查询的主机属于“.c n"主机管辖,于是通知A去“.c n" 查询。
  4. DNS域名服务器A查询".cn",后者判断被查询的主机属于".edu.cn"主机管辖,于是通知A去".edu.cn"查询。
  5. DNS域名服务器A查询".edu.cn",后者查找到域名对应的IP记录,于是将结果告知A。
  6. DNS域名服务器A得到了域名对应的IP,并且将IP和域名的对应关系存放在缓存中,同时将对应关系告诉客户端。A中的缓存数据将维持一段时间(即TTL值),在这段时间内,如果有任何主机向A查询abc.edu.cn的IP,A直接从缓存中将结果返回给发起请求的主机。
由于DNS的缓存和分层结构,所以当一个域名启用之后,可能需要一段时间(2天??)左右的时间才能正确启动——因为缓存更新及DNS数据同步需要一定时间。

缓存的工作原理

DNS 服务器采用递归或迭代来处理客户端查询时,它们将发现并获得大量有关 DNS 命名空间的重要信息。然后这些信息由服务器缓存。

缓存为 DNS 解析流行名称的后续查询提供了加速性能的方法,同时大大减少了网络上与 DNS 相关的查询通信量。

当 DNS 服务器代表客户端进行递归查询时,它们将暂时缓存资源记录 (RR)。缓存的 RR 包含从 DNS 服务器获得的信息,对于在进行迭代查询以便搜索和充分应答代表客户端所执行的递归查询过程中所获知的 DNS 域名而言,此信息具有绝对的权威性。稍后,当其他客户端发出新的查询,请求与缓存的 RR 匹配的 RR 信息时,DNS 服务器可以使用缓存的 RR 信息来应答它们。

当信息缓存时,生存时间 (TTL) 值适用于所有缓存的 RR。只要缓存 RR 的 TTL 没有到期,DNS 服务器就可继续缓存并再次使用 RR 来应答与这些 RR 相匹配的客户端提出的查询。将大部分区域配置中 RR 所用的缓存 TTL 值指定为“最小的(默认)TTL”,它被设置为用于区域的起始授权机构 (SOA) 资源记录。在默认情况下,最小的 TTL 为 3,600 秒(1 小时),但是可以进行调整,也就是说如果需要可以在每个 RR 上分别设置各自的缓存 TTL。


BIND相关软件包

bind    BIND主程序bind-utils    客户端搜索主机名的相关命令bind-libs      BIND相关的库文件bind-chroot 将BIND设定文件和程序限制在虚拟根目录下caching-nameserver  使BIND仅作为缓存服务器的软件包,CHROOT技术,又叫虚拟根目录技术,是对付黑客利用漏洞入侵BIND系统的一种手段。(在RHEL6中,没有此RPM包了,bind-chroot软件包中已经包含了缓存服务器所需的必要文件)
补充挂载光盘
mount -t iso9660 /home/xxxx.iso /mnt/cdrom 


用rmp -Uvh *.rpm (-U选项,包存在则升级, 不存在则安装)
方式将所需要的包安装好,将BIND服务设定为开机自启动。chkconfig --level 2345 named on手动启动BIND服务:service named start现用nslookup查询是否好用:[root@localhost Packages]# nslookup www.neu.edu.cnServer:         192.168.0.1Address:        192.168.0.1#53
[root@localhost Packages]# nslookup www.neu.edu.cn 192.168.0.1Server:         192.168.0.1Address:        192.168.0.1#53www.neu.edu.cn  canonical name = w.cdn.neu.edu.cn.Name:   w.cdn.neu.edu.cnAddress: 202.118.1.7
DNS测试命令

1.host命令

host命令可以查看服务器上的域所对应的主机信息。常用用法:
host    [域名] [服务器IP]host   -l [域名] [服务器IP]host    -a [域名] [服务器IP]
[root@localhost Packages]# host www.sina.com 192.168.0.1Using domain server:Name: 192.168.0.1Address: 192.168.0.1#53Aliases:www.sina.com is an alias for us.sina.com.cn.us.sina.com.cn is an alias for news.sina.com.cn.news.sina.com.cn is an alias for jupiter.sina.com.cn.jupiter.sina.com.cn is an alias for cernetnews.sina.com.cn.cernetnews.sina.com.cn has address 121.194.0.210cernetnews.sina.com.cn has address 121.194.0.203cernetnews.sina.com.cn has address 121.194.0.205cernetnews.sina.com.cn has address 121.194.0.206cernetnews.sina.com.cn has address 121.194.0.207cernetnews.sina.com.cn has address 121.194.0.208cernetnews.sina.com.cn has address 121.194.0.209

2.nslookup命令

nslookup命令有两种模式:交互模式和非交互模式。在交互模式下(直接输入nslookup,不加其它参数),用户可以输入一些指令来查询多个主机或域名;非交互模式用来查询指定的一个主机或域名的信息。通常可以用非交互模式来测试自己的DNS服务器设定。nslookup用法如下:
nslookup [域名] [服务器IP]

3. dig 命令

 dig 命令执行DNS搜索,显示从受请求的域名服务器返回的答复。 dig 将尝试/etc/resolv.conf中列举的任何服务器。当未指定任何命令行参数时或选项时, dig 将对“.”
(根)执行NS(Name Server缩写)查询。
常用语法格式:
dig [@server] [name] [type]
上述语法,若指定了server,则到指定server处解析,若没指定,则到/etc/resolv.conf中列举的域名服务器进行解析
[root@localhost Packages]# cat /etc/resolv.conf; generated by /sbin/dhclient-scriptsearch localdomainnameserver 192.168.0.1

补充:
  • /etc/resolv.conf:DNS服务器地址设置
  • /etc/hosts:存放常用主机的IP地址与主机名称的数据,即一个简单的DNS数据库。基本格式为:
IP 主机域名 主机别名
[root@localhost Packages]# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
[root@localhost named]# hostnamelocalhost.localdomain


  • /etc/services:记录主机提供的网络服务项目、端口号及使用的传输层协议。只有基于xinetd 服务的端口号才是在/etc/services中修改的,如telnet;独立于管理服务的端口号修改如ssh,http,ftp需要在各自对应的文件中修改

BIND配置文件

BIND主要有三类配置文件:BIND的主配置文件、正/反解记录清单文件和正/反解记录文件
  • BIND的主配置文件(/var/named/chroot/etc/named.conf)中有BIND的全局设置;
  • 正/反解记录清单文件(/var/named//chroot/etc/named.rfc1912.zones,实际上,在主配置文件named.conf指定了正/反解记录清单文件的位置。)列举了本机解析记录文件的位置/类型/性质;
  • 正/反解记录文件(/var/named/chroot/var/named目录下)记录了具体的IP/域名的对应关系。

BIND的主配置文件

通常包括三方面内容:
  1. Option 段
  2. Loging段
  3. view段
[root@localhost Packages]# cat -n /var/named/chroot/etc/named.conf
     1  //     2  // named.conf     3  //     4  // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS     5  // server as a caching only nameserver (as a localhost DNS resolver only).     6  //     7  // See /usr/share/doc/bind*/sample/ for example named configuration files.     8  //     9    10  options {//Option 段    11          listen-on port 53 { 127.0.0.1; };//表示BIND将在53端口监听,并且监听的IP为127.0.0.1,可添加监听的其它IP地址,用分号隔开,
若需要对所有IP进行监听,则修改为// listen-on port 53 { any; };    12          listen-on-v6 port 53 { ::1; };//在IPv6环境下的监听端口为53    13          directory       "/var/named";//工作目录设定,由于安装了bind-chroot,其实际工作目录为/var/named/chroot/var/named/    14          dump-file       "/var/named/data/cache_dump.db";//缓存转储位置    15          statistics-file "/var/named/data/named_stats.txt";//记录统计信息的文件    16          memstatistics-file "/var/named/data/named_mem_stats.txt";//记录内存使用的统计信息    17          allow-query     { localhost; };//允许查询的主机,默认只允许本机查询
若需要允许所有客户机查询,则修改为// allow-query { any; };    18          recursion yes;//允许递归查询    19    20          dnssec-enable yes;    21          dnssec-validation yes;    22          dnssec-lookaside auto;    23    24          /* Path to ISC DLV key */    25          bindkeys-file "/etc/named.iscdlv.key";    26  };    27    28  logging {//Loging段    29          channel default_debug {    30                  file "data/named.run";//记录了一些named的信息,如监听/解析记录等。它的位置在/var/named/chroot/var/named/data下。    31                  severity dynamic;    32          };    33  };    34    35  zone "." IN {    36          type hint;//type只有3种参数:hint/master/slave.只有"."对应的type为hint,其它zone的类型只能为master或slave,即DNS主机和DNS从机。    37          file "named.ca";//指定了解析文件的位置,解析文件中记录着域名与IP的对应关系。它的位置在/var/named/chroot/var/named/data下。    38  };    39    40  include "/etc/named.rfc1912.zones";//解析文件列表的位置
实际上,还可以增加view段。view是解析文件的一个集合,有了view,就可以对不同网络进行不的管理策略。比如对内网和外网主机采用不同的策略,让它们查询到的解析记录不一样。


[查看“named.ca”的内容,可以找到全球13台根域服务器的主机名与IP地址]
   cat -n /var/named/chroot/var/named/named.ca 
部分内容如下:
27  ;; ADDITIONAL SECTION:    28  A.ROOT-SERVERS.NET.     3600000 IN      A       198.41.0.4    29  A.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:503:ba3e::2:30    30  B.ROOT-SERVERS.NET.     3600000 IN      A       192.228.79.201    31  C.ROOT-SERVERS.NET.     3600000 IN      A       192.33.4.12    32  D.ROOT-SERVERS.NET.     3600000 IN      A       128.8.10.90    33  E.ROOT-SERVERS.NET.     3600000 IN      A       192.203.230.10    34  F.ROOT-SERVERS.NET.     3600000 IN      A       192.5.5.241    35  F.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:500:2f::f    36  G.ROOT-SERVERS.NET.     3600000 IN      A       192.112.36.4    37  H.ROOT-SERVERS.NET.     3600000 IN      A       128.63.2.53    38  H.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:500:1::803f:235    39  I.ROOT-SERVERS.NET.     3600000 IN      A       192.36.148.17    40  J.ROOT-SERVERS.NET.     3600000 IN      A       192.58.128.30    41  J.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:503:c27::2:30    42  K.ROOT-SERVERS.NET.     3600000 IN      A       193.0.14.129    43  K.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:7fd::1    44  L.ROOT-SERVERS.NET.     3600000 IN      A       199.7.83.42    45  M.ROOT-SERVERS.NET.     3600000 IN      A       202.12.27.33    46  M.ROOT-SERVERS.NET.     3600000 IN      AAAA    2001:dc3::35

正/反向解析及申请

正向解析,就是将域名翻译为IP地址——用户访问一个完全合格域名时,DNS服务器就做了一次正向解析;
反向解析,就是将IP地址翻译为完全合格域名。
通常所说的申请受权,一般指申请正向解析授权。
那么,什么时候需要申请反向解析授权呢?在因特网上有不计其数的垃圾邮件,而多数邮件服务器有反垃圾功能,其中,检查邮件的IP反解记录就是一个有效手段。如果架设了一个邮件服务器A,但是若其它邮件服务器无法查到A的反解记录,那么 服务器A发出的邮件将视为垃圾邮件而被拒收。所以,如果架设邮件服务器,并且经常需要与国外的邮件主机通信,那么反解记录是必需的。正/反向解析的工作,可以由ISP的DNS服务器去做,也可通过申请从ISP那里得到授权,然后由自己架设的服务器完成正/反向解析。

什么是IP反向解析?DNS服务器里有两个区域,即“正向查找区域”和“反向查找区域”,反向查找区域即是这里所说的IP反向解析,其作用就是通过查询IP地址的PTR记录来获取该IP地址指向的域名,要成功得到域名就必需要有该IP地址的PTR记录。

  IP反向解析如何应用到邮件系统中来拦截垃圾邮件?请看这样一个例子:

  小刘到A公司拜访,他递上一张名片,名片上写着他来自“华夏俱乐部”和电话号码等信息,A公司觉得应该对小刘的来历做个简单调查,于是打电话到他名片上的电话号码所属电信局进行查实,如果电信局告诉A公司其电话号码不属于“华夏俱乐部”,则A公司将拒绝小刘的拜访,如果其电话号码的确属于“华夏俱乐部”,A公司可能接受小刘的拜访,然后A公司想要进一步查实,于是就打电话到“华夏俱乐部”所属注册机构查询,如果得到的答复确认该俱乐部确有此电话号码,那么A公司认为小刘身份是真实的,于是接受小刘的拜访,否则仍将拒绝。

  这个例子中,小刘好比是我们的邮件服务器,A公司是对方邮件服务器,“华夏俱乐部”就是我们邮件服务器与对方邮件服务器通信时所使用的HELO域名(不是邮件地址@后的域名),名片上的电话号码就是我们邮件服务器出口的公网IP地址。A公 司对小刘进行调查的过程就相当于一个反向解析验证过程。由此看出,反向解析验证其实是对方服务器在进行的,而如果我们没有做反向解析,那么对方服务器的反向解析验证就会失败,这样对方服务器就会以我们是不明发送方而拒收我们发往的邮件,这也就是我们排除其它原因后(如被对方列入黑名单、没有MX记录、使用的是动态IP地址等等)在未做反向解析时无法向很多邮件服务器(例如sina.com、homail.com)成功发信的原因。

  那么我们应当如何顺利做好反向解析?首先要有固定公网IP 地址、可用域名(最好不要被其它服务所用),例如您有yy.com的域名,您可以要求您的域名注册商为您添加一个 mail.yy.com的域名

  并将其A记录指向您的SMTP服务器出口公网IP地址,如:114.XXX.XXX.XXX,接着请与您的固定IP所属ISP联系要求为您的IP反向解析至mail.yy.com。完成后别忘了将您的SMTP服务器的HELO域名改为mail.yy.com,这样才可以达到目的。

  另:

  1、做好反向解析后发往sina.com的信件有可能会被转至“不明邮件夹”中,此时请您与sina.com联系,要求为您解决该问题。

  2、查看反向解析是否成功,可用如下命令:nslookup IP地址,从返回的信息中您可以看到反向解析的结果。

  3、一定要有固定公网IP地址以及真实可用域名。同时要注意反向解析的域名的A记录一定要指向该IP.

  4、对于有多个固定公网IP地址的,只要做主要出口IP的反向解析即可,不管您有多少SMTP服务器,只要是通过该IP连接至外网就将这些SMTP服务器的HELO域名改成IP反向解析之域名即可。

正/反解记录清单文件(/var/named//chroot/etc/named.rfc1912.zones,实际上,在主配置文件named.conf指定了正/反解记录清单文件的位置。)列举了本机解析记录文件的位置/类型/性质

[root@localhost chroot]# cat -n  etc/named.rfc1912.zones     1  // named.rfc1912.zones:     2  //     3  // Provided by Red Hat caching-nameserver package     4  //     5  // ISC BIND named zone configuration for zones recommended by     6  // RFC 1912 section 4.1 : localhost TLDs and address zones     7  // and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt     8  // (c)2007 R W Franks     9  //    10  // See /usr/share/doc/bind*/sample/ for example named configuration files.    11  //    12    13  zone "localhost.localdomain" IN {//正向解析的zone定义    14          type master;    15          file "named.localhost";//指定了解析文件的位置,解析文件中记录着域名与IP的对应关系。它的位置在/var/named/chroot/var/named/data下。    16          allow-update { none; };//是否可以更新对应的zone文件    17  };    18    19  zone "localhost" IN {//正向解析的zone定义    20          type master;    21          file "named.localhost";    22          allow-update { none; };//是否可以更新对应的zone文件    23  };    24    25  zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {    26          type master;    27          file "named.loopback";    28          allow-update { none; };    29  };    30    31  zone "1.0.0.127.in-addr.arpa" IN {//反向解析的zone定义,对应的IP为127.0.0.1,注意,这里是反过来写,并且最后要加上“.in-addr.arpa”以告诉named这是一个反解zone定义。    32          type master;    33          file "named.loopback";    34          allow-update { none; };//是否可以更新对应的zone文件    35  };    36    37  zone "0.in-addr.arpa" IN {//反向解析的zone定义    38          type master;    39          file "named.empty";    40          allow-update { none; };    41  };    42




正/反解记录文件(/var/named/chroot/var/named目录下)记录了具体的IP/域名的对应关系,正/反解记录文件也是zone文件

正向解析文件

[root@localhost named]# cat -n named.localhost     1  $TTL 1D ;缓存时间     2  @       IN SOA  @ rname.invalid. ( ;SOA是Start Of Authority 的缩写     3                                          0       ; serial 序号 如果master上的zone文件序号比slave上的大,那么数据就会同步。     4                                          1D      ; refresh 刷新Slave的时间     5                                          1H      ; retry Slave更新失败后多久再进行一次更新     6                                          1W      ; expire 失败多少次后不再尝试更新,一周     7                                          3H )    ; minimum 缓存时间,如果没有设定$TTL 这个值就可当作$TTL     8          NS      @  ;就是zone中定义的域名,如localhost.localdomain和localhost
   ;NS(Name Server)缩写,NS @ 表示该zone的查询将提交给主机localhost.localdomain     9          A       127.0.0.1 ;A是正向解析的符号,后面紧跟着IP,表示localhost.localdomain对应的IP为127.0.0.1.    10          AAAA    ::1
补充一些正向解析文件和反向解析文件都有的zone文件。


反解记录和正解记录不同的地方就是PTR参数。PTR是Pointer的缩写,格式为:
IP地址 IN PTR 主机名
转载请标明:http://write.blog.csdn.net/postedit/6993461
原创粉丝点击