Linux的bind服务

2022/2/8 7:14:16

本文主要是介绍Linux的bind服务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

以下的讲解是bind服务结合chroot之后

1、配置主配置文件

首先我们需要配置主配置文件,主配置文件可以将/etc/named.conf 这个文件复制到/var/named/chroot/etc目录下,这个文件我们需要修改的地方就是修改下面两个红线的地方。

第一个红线代表服务器上哪些地址在监听53号端口,第二个红线代表允许哪些地址可以进行地址查询。

2、然后配置进行区域的添加

区域的添加可以直接在主配置文件上进行,也可以使用include,然后在另一个文件上面进行,在主配置文件的底部就有一个include的文件专门给我们去添加区域。如下图红线上方的文件。

3、添加区域的语法

(1)正向主区域的添加:

zone "区域名" {

type master;

file "区域文件名";

allow-transfer { [网段|单个IP|域名|any]|none; }; //指定哪些主机可以接受来自该server的区域信息的传送

allow-update { [网段|单个IP|域名|any|none]; };  //指定了允许哪些主机提交该区域的动态DNS更新。默认是拒绝来自所有主机的更新。

};

(2)逆向主区域的添加

zone "区域名.in-addr.arpa" {

type master;

file "区域文件名";

allow-transfer { [网段|单个IP|域名|any|none]; }; //指定哪些主机可以接受来自该server的区域信息的传送

allow-update { [网段|单个IP|域名|any|none]; };  //指定了允许哪些主机提交该区域的动态DNS更新。默认是拒绝来自所有主机的更新。

};

(2)辅助区域的添加:

zone "区域名" {

type slave;

file  "slaves\区域文件名" 

masters { IP地址1;IP地址2;....IP地址n; }; //主服务器的IP地址

allow-transfer { [网段|单个IP|域名|any|none]; }; //指定哪些主机可以接受来自该server的区域信息的传送
allow-update-forwarding { [网段|单个IP|域名|any|none]; }; //指定哪些主机可以通过该从DNS服务器去进行主DNS服务器的DNS记录资源的更新

};

(3)转发区域的添加:

部分转发

zone "区域名" {

type forward;

forwarders { IP地址1;IP地址2;....IP地址n; };

forward 【first|only】;

};

其中first代表先转发给其他DNS服务器,不行的话再自己来,only代表只转发给其他服务器,自己不做任何操作。

(4)全部转发:

也可以直接在主配置文件上输入:forwarders { IP地址1;IP地址2; };这样就代表不管是什么查询都直接转发给别的DNS服务器。

下面的图片是正反主区域的两个例子:

下面两个是对应着上图的正反辅助区域的例子

 

 

4、区域文件的语法

区域文件的存储位置在/var/named/chroot/var/named,相关配置在主配置文件中定义。

首先区域文件的名字一定和主配置文件中定义的区域文件名相同,比如file xxx ,那么在var/named中创建的区域文件名也要叫xxx。

我们可以直接将/var/named/chroot/var/named目录中的其他区域文件模板复制过来然后直接使用即可,比如named.localhost文件。

下面是一个正向区域的区域文件

第一行的TTL代表的是该记录在客户机上存活的时间,也就是在缓存中存在的时间,改图的存活时间是一天,D是天,H是小时,W是星期。

第二行要改的地方只有SOA的后面,后面要跟上两个域名,第一个是本区域的域名,第二个是管理的邮箱号,但是邮箱号的@被切换为了“.” ,

第三行是序列号,用于主从服务器进行数据的更新的,从服务器会从主服务器上下载区域文件,然后当设定的时间到后会去比对它们的序列号值,当主服务器上的序列号比较大的时候,就要从主服务器上进行相关数据的下载。

第四行代表多久进行一次比对和数据的刷新

第五行代表如果比对或者数据的刷新失败的话,过多久再试一次

第六行代表如果从服务器和主服务器彻底失去联系后,它的数据还能有效多久

第七行代表的是无效解析的缓存时间

PS!!!:注意区域文件里面出现的域名的尾部都要以"."结尾。

其中的IN我们可以将它看作是一个固定格式,其实这个东西不写也可以,但是就是好看

IN  NS my.fuck.com. :这一行是无论正向区域文件还是反向区域文件都要添加的一行,这一行书写了改区域内的域名服务器的域名,而NS代表着这个my.fuck.com这个主机是一个域名服务器。

 my.fuck.com.  IN  A  192.168.1.11 :这一行的最左边是域名,IN是固定格式,A代表着该资源的类型,标识这条记录是记录着一个IPv4的主机正向域名,最右边是它对应的IP地址。如果想要添加正向记录按这个格式添加就可以了。

别名记录的添加:AA.fuck.com IN  CNAME  BB.fuck.com ,最左边的是域名,IN是固定格式,CNAME是资源类型,标识该记录是别名记录,BB.fuck.com是AA.fuck.com的真实域名记录,而AA.fuck.com只是一个别名。

5、主从区域传送

1、在主服务器主配置文件的区域信息中添加allow-transfer { 允许的主机的IP  };

2、在从服务器上安装BIND服务,然后将基础环境部署完成

3、在从服务器上的主配置文件中加入辅助区域(语法如下:)

zone "区域名" {

type slave;

file  "slaves\区域文件名" 

masters { IP地址1;IP地址2;....IP地址n; }; //主服务器的IP地址

allow-transfer { [网段|单个IP|域名|any]; }; //指定哪些主机可以接受来自该server的区域信息的传送
allow-update-forwarding { [网段|单个IP|域名|any]; }; //指定哪些主机可以通过该从DNS服务器去进行主DNS服务器的DNS记录资源的更新

};

4、当1,2,3步骤都做了之后,我们还要注意/var/named/chroot/var/named/slaves目录对于named用户来说是否有写的权限,因为named用户需要将主服务器上获取到的区域文件放在slaves目录中,如果没有服务虽然会起来,但是slaves目录中是没有任何东西。如果权限都有之后,且主服务器的相关配置以及生效,我们只要重启从服务器上的bind服务,就可以看到对应的区域文件了。

6、根据IP地址区分DNS解析

这里使用view语法和zone语法结合,先来看一个例子:

我们在外面使用view "view名" {  } 将所有的zone包括在里面,注意外面我把根域的zone也包括在里面了,这是view的语法规定,所有的zone都要在view里面。然后看例子中的

match-clients { 【网段|单个IP|any|none】 };这条语句的作用是当查询者的IP是花括号里面的IP的时候,就使用该view中的区域文件,如果不满足,那么要么使用其他view的区域文件,要么就不使用任何的区域文件。如果该语句没有加,那么默认是允许所有人都使用该view中的区域文件。

match-destinations { address_match_list } ;

match-recursive-only { yes_or_no } ;

上面是其他两个限制语句match-destinations 代表我根据查询者要查询的目标来区分和限制,match-recursive-only表示我要根据用户是否要求进行递归查询来区分和限制。

 我们可以根据不同的区域的客户IP,然后准备两份DNS区域文件,通过我们精心设计区域文件中的内容,可以让客户根据域名解析到离自己更近的服务器,这样可以加强客户的使用体验。



这篇关于Linux的bind服务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程