Linux中使用Bind提供域名解析服务,部署从服务器主服务器!

DNS域名解析服务
相较于由数字构成的IP地址,域名更容易被理解和记忆,所以我们通常更习惯通过域名的方式来访问网络中的资源。但是,网络中的计算机之间只能基于IP地址来相互识别对方的身份,而且要想在互联网中传输数据,也必须基于外网的IP地址来完成。

为了降低用户访问网络资源的门槛,DNS(Domain Name System,域名系统)技术应运而生。这是一项用于管理和解析域名与IP地址对应关系的技术,简单来说,就是能够接受用户输入的域名或IP地址,然后自动查找与之匹配(或者说具有映射关系)的IP地址或域名,即将域名解析为IP地址(正向解析),或将IP地址解析为域名(反向解析)。

鉴于互联网中的域名和IP地址对应关系数据库太过庞大,DNS域名解析服务采用了类似目录树的层次结构来记录域名与IP地址之间的对应关系,从而形成了一个分布式的数据库系统,如图所示。
在这里插入图片描述
域名后缀一般分为国际域名和国内域名。原则上来讲,域名后缀都有严格的定义,但在实际使用时可以不必严格遵守。目前最常见的域名后缀有.com(商业组织)、.org(非营利组织)、.gov(政府部门)、.net(网络服务商)、.edu(教研机构)、.pub(公共大众)、.cn(中国国家顶级域名)等。

DNS技术作为互联网基础设施中重要的一环,为了为网民提供不间断、稳定且快速的域名查询服务,保证互联网的正常运转,提供了下面三种类型的服务器。

主服务器:在特定区域内具有唯一性,负责维护该区域内的域名与IP地址之间的对应关系。

从服务器:从主服务器中获得域名与IP地址的对应关系并进行维护,以防主服务器宕机等情况。

缓存服务器:通过向其他域名解析服务器查询获得域名与IP地址的对应关系,并将经常查询的域名信息保存到服务器本地,以此来提高重复查询时的效率。

简单来说,主服务器是用于管理域名和IP地址对应关系的真正服务器,从服务器帮助主服务器“打下手”,分散部署在各个国家、省市或地区,以便让用户就近查询域名,从而减轻主服务器的负载压力。缓存服务器不太常用,一般部署在企业内网的网关位置,用于加速用户的域名查询请求。

DNS域名解析服务采用分布式的数据结构来存放海量的“区域数据”信息,在执行用户发起的域名查询请求时,具有递归查询和迭代查询两种方式。所谓递归查询,是指DNS服务器在收到用户发起的请求时,必须向用户返回一个准确的查询结果。如果DNS服务器本地没有存储与之对应的信息,则该服务器需要询问其他服务器,并将返回的查询结果提交给用户。而迭代查询则是指,DNS服务器在收到用户发起的请求时,并不直接回复查询结果,而是告诉另一台DNS服务器的地址,用户再向这台DNS服务器提交请求,这样依次反复,直到返回查询结果。

由此可见,当用户向就近的一台DNS服务器发起对某个域名的查询请求之后(这里以www.linux.com为例),其查询流程大致如图所示。
在这里插入图片描述
13台根DNS服务器的具体信息
在这里插入图片描述
安装Bind服务程序
BIND(Berkeley Internet Name Domain,伯克利因特网名称域)服务是全球范围内使用最广泛、最安全可靠且高效的域名解析服务程序。DNS域名解析服务作为互联网基础设施服务,其责任之重可想而知,因此建议大家在生产环境中安装部署bind服务程序时加上chroot(俗称牢笼机制)扩展包,以便有效地限制bind服务程序仅能对自身的配置文件进行操作,以确保整个服务器的安全。

bind服务程序的配置并不简单,因为要想为用户提供健全的DNS查询服务,要在本地保存相关的域名数据库,而如果把所有域名和IP地址的对应关系都写入到某个配置文件中,估计要有上千万条的参数,这样既不利于程序的执行效率,也不方便日后的修改和维护。因此在bind服务程序中有下面这三个比较关键的文件。

主配置文件(/etc/named.conf):只有58行,而且在去除注释信息和空行之后,实际有效的参数仅有30行左右,这些参数用来定义bind服务程序的运行。
区域配置文件(/etc/named.rfc1912.zones):用来保存域名和IP地址对应关系的所在位置。类似于图书的目录,对应着每个域和相应IP地址所在的具体位置,当需要查看或修改时,可根据这个位置找到相关文件。
数据配置文件目录(/var/named):该目录用来保存域名和IP地址真实对应关系的数据配置文件。

bind服务程序名称为named,在部署bind服务之前要先修改bind服务程序的主配置文件/etc/named.conf,使得服务器上的所有IP地址均可提供DNS域名解析服务,以及允许所有人对本服务器发送DNS查询请求。

vim /etc/named.conf               #在11行和17行,地址均改为any
...
listen-on port 53 {
    any; };    #服务器上的所有IP地址均可提供DNS域名解析服务。原始值为127.0.01
...
allow-query {
    any; };          #允许所有人对本服务器发送DNS查询请求。原始值为localhost
...

域名解析为IP地址的正向解析参数和将IP地址解析为域名的反向解析参数分别如下图所示

正向解析
在这里插入图片描述
反向解析
在这里插入图片描述
如果遇到启动bind服务程序失败的情况,可以执行以下命令

named-checkconf命令:检查bind服务程序主配置文件/etc/named.conf 中语法或参数的错误。
named-checkzone命令:检查bind服务程序数据配置文件/var/named/xxxx中语法或参数的错误。

正反向解析实验
在DNS域名解析服务中,正向解析是指根据域名(主机名)查找到对应的IP地址。也就是说,当用户输入了一个域名后,bind服务程序会自动进行查找,并将匹配到的IP地址返给用户。这也是最常用的DNS工作模式。

第1步:编辑区域配置文件(/etc/named.rfc1912.zones)。

区域配置文件用来保存域名和IP地址对应关系的所在位置。在这个文件中,定义了域名与IP地址解析规则保存的文件位置以及服务类型等内容,而没有包含具体的域名、IP地址对应关系等信息。服务类型有三种,分别为hint(根区域)、master(主区域)、slave(辅助区域),其中常用的master和slave指的就是主服务器和从服务器。

vim /etc/named.rfc1912.zones
zone "linux.com" IN {
                #正向解析参数
type master;                           #服务类型为主服务器
file "linux.com.zone";            #域名与IP地址解析规则保存的文件位置(/var/named/linux.com.zone)
allow-update {
   none;};                  #允许哪些客户机动态更新该解析信息(这里不允许任何人)
};
zone "10.168.192.in-addr.arpa" IN {
       #反向解析参数,表示192.168.10.0./24网段的反向解析区域
type master;
file "192.168.10.arpa";
};

第2步:编辑数据配置文件(var/named/xxxx)。(文件名在编辑区域配置文件时已经自定义)

从/var/named目录中复制一份正向解析的模板文件(named.localhost),反向解析的模板文件(named.loopback)。然后把域名和IP地址的对应数据填写数据配置文件中并保存。在用cp命令复制时一定要加上-a参数,保留原始文件的所有者、所属组、权限属性等信息,这里的权限至关重要!以便让bind服务程序顺利读取文件内容。
注意域名最后一个“.”,在输入网址时通常为了方便而省略,但在做dns配置时不能省略掉

cd /var/named/
cp -a named.localhost linux.com.zone
cp -a named.loopback 192.168.10.arpa
vim linux.com.zone                                               #编辑正向解析数据配置文件
$TTL 1D                                                               #生存周期为1天
@       IN SOA linux.com. root.linux.com. (                 #授权信息开始(Start Of Authority) 域名 域名管理员邮箱(邮箱的@符号用.代替)
 ;  serial     #更新序列号(该序列号作为slave与master更新的依据,一般利用日期来设定)
                                                     1D ;  refresh    #更新时间(命令slave多久进行一次主动更新)
                                                     1H ;  retry      #重试延时(当到了refresh时间但slave无法连接master时重试连接的时间间隔)
                                                     1W ;  expire     #失效时间(当slave一直无法连接上master,则经过expire的时间后命令)
                                                     3H);  minimum    #无效解析记录的缓存时间(没有指定生存期的数据,可以保存在数据库中的时间和TTLNS ns.linux.com.                                         #域名服务器记录(Name Server,NS后面接的一定是主机名称)
ns      IN A 192.168.10.10                                            #地址记录(A表示正向解析的标记,格式 [hostname] IN A [IP]IN MX 10 mail.linux.com.                                 #邮箱交换记录(MX与Mail Server有关,用途是邮件转发,MX后的数值越小越优先,后面的hostname必须有一条A记录)
mail    IN A    192.168.10.10    
www     IN A    192.168.10.10    
bbs     IN A    192.168.10.20    
vim 192.168.10.arpa                                                   #编辑反向解析数据配置文件
$TTL 1D                
@       IN SOA linux.com. root.linux.com.(
 ;  serial
                                                    1D ;  refresh
                                                    1H ;  retry
                                                    1W ;  expire
                                                    3H);  minimum    
        NS    ns.linux.com.    
ns      A     192.168.10.10    
     PTR   ns.linux.com.                                      #PTR为指针记录,仅用于反向解析(格式: [IP] IN PTR [主机名称]PTR   mail.linux.com.    
     PTR   www.linux.com.    
     PTR   bbs.linux.com
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值