DNS服务-bind的配制

向马哥致敬!!

DNS查询过程,比如访问www.test.com
1.客户机查询www.test.com
2.查询首选DNS服务器,Linux下/etc/resolv.conf, Windows下是网络设置中的
3.首选DNS服务器中没有test.com域的授权记录,将请求传递给“.”根域DNS服务器
4."."根域传递给"com"域,"com"域传递给"test.com"域,迭代查询
5."test.com"域存在记录,就将对应的IP就返回给首选DNS服务器
6.客户机的首选DNS服务器将www.test.com的IP 地址发送给客户机。
7.域名解析成功后,客户机将http请求发送给Web服务器。
8.Web服务器响应客户机的访问请求,客户机便可以访问目标主机。

L验证:
dig +trace www.sopans.com
在这里插入图片描述

区域(zone)和域(domain):

	mageedu.com域:
		FQDN-->IP
		  正向解析库; 区域
		IP-->FQDN
		  反向解析库; 区域

区域数据库文件:

资源记录:Resource Record,简称rr;
记录类型有:A,AAAA,PTR,SOA,NS,CNAME,MX

**SOA**:start of Authority,起始授权记录;一个区域解析库有且只有一个SOA记录,而且只能有一个SOA记录,而且必须放在第一条;
**NS**:Name Service,域名服务记录; 一个区域解析库可以有多个NS记录;其中一个为主的;
**A**:Adress,地址记录,FQDN-->IPV4;
**AAAA**:地址记录,FQDN-->IPV6;
**CNAME**:Canonical Name,别名记录;
**PTR**:pointer ,IP-->FQDN
**MX**: Mail eXchanger, 邮件交换器;
    优先级:0-99,数字越小优先级越高;

资源记录的定义格式:

语法:  nane  [TTL]  IN  RR_TPYE  value

SOA:

name :当前区域的名字;例如"magedu.ocm.",或者"2.3.4.in-addr.arpa.";
vlaue: 有多部分组成
    (1)当前区域名称(也可以用主DNS服务器名称);
    (2)当前区域管理员的邮箱地址;但地址中不能使用@符号,一般使用点号来替代;
    (3)(主从服务协调属性的定义以及否定答案的TTL)
    例如:
       maedu.com.	86400	IN		SOA	magedu.com.	admin.maedu.com.(
       						2020021301	;serial序列号
       						2H					;refresh刷新时长2hours
       						10M					;retry重试时长10minites
       						1W					;expire过期时长1week
       						1D					;nagative answer ttl否定答案的TTL 1day
       		)

NS:

name:当前区域的区域名称
value:当前区域的某DNS服务器的名字,例如:ns.magaedu.com.;
   注意: 一个区域可以有多个NS记录;
   例如:
   		magedu.com.	86400	IN		NS	ns1.magedu.com.
   		magedu.com.	86400	IN		NS	ns2.magedu.com.

MX:

name:当前区域的区域名称
value:当前区域某邮件交换器的主机名;
  注意:MX记录可以有多个;但每个记录的value之前应该有一个数字表示其优先级;
  例如:
  		magedu.com.		IN	MX	10	mx1.magedu.com.
  		magedu.com.		IN 	MX 	20	mx2.magedu.com.

A:

name:某FQDN,例如:www.magedu.com.
value:某IPV4地址;
例如:
	www.magedu.com.		IN		A		1.1.1.1
	www.magedu.com.		IN		A		1.1.1.2
										IN		A		1.1.1.3
	bbs.magedu.com.		IN		A		1.1.1.4

AAAA:

name:FQDN
value:IPV6

PTR:

name:IP地址,有特定格式,IP反过来写,而且加特定后缀;例如1.2.3.4的记录应该记录为4.3.2.1.in-addr.arpa;
value:FQDN
例如:
	4.3.2.1.addr.arpa.	IN		PTR		www.magedu.com.

CNAME:

name:FQDN格式的别名;
value:FQDN格式的正式名字;
例如:
	web.magedu.com.	IN		CNAME www.magedu.com.

注意:
(1)TTL可以从全局继承;
(2)@表示当前区域的名称;
(3)相邻的两条记录其name相同时,后面的可以省略;
(4)对于正向区域来说,MX,NS等类型的记录的value为一个FQDN,此FQDN应该有一个A记录``

bind的安装:

必备包:
	bind-libs:被bind和bind-utils包中的程序共同用到的库文件;
	bind-utils:bind客户端程序集,例如:dlg,host,nslookup等;
	
	bind: 提供的dns server程序,以及几个常用的测试程序;
	bind-chroot:选装,让named运行于Jail模式下,安全应用.
	#yum  install -y bind

bind:

主配置文件:/etc/named.conf
  或包含进来其它文件;
  		/etc/named.iscdlv.key
  		/etc/named.rfc1912.zones
  		/etc/named.root.key
  	解析库文件:
  			/va/named/目录下:
  			一般名字为:ZONE_NAME.zone
  		注意:(1)一台DNS服务器可同时为多个区域提供解析;
  				(2)必须要有根区域解析库文件:named.ca;
  				(3)还应该有两个区域解析库文件:localhost和127.0.0.1的正反向解析库;
  						正向:named.lcoalhost
  						反向:named.loopback
  			rndc:remote name domain controller  953/tcp,但默认监听于127.0.0.1地址,因此仅允许本地使用;
  			bind程序安装完成之后,默认即可做缓存名称服务器使用;如果没有专门负责解析的区域,直接即可启动服务;
  			centos6:service named start
  			centos7:systemctl start named.service
  	主配置文件格式:
  		全局配置段:
  			options {...}
  		日志配置段:
  			logging{...}
  		区域配置段:
  			zone{...}
  				那些由本机负责解析的区域,或转发的区域;
  		缓存名称服务器的配置:
  			监听能与外部主机通信的持址;
  				listen-on port 53;
  				listen-on port 53 { 172.16.3.5; } ;     		注:尾部有;号{}内两端有空格
  		建议测试学习时不使用sec
  		 		dnssec-enable no;
  		 		dnssec-validation no;
  		 		dnssec-lookaside no;
		关闭仅允许本地查询:
		 		// allow-query { localhost; };

  		 检查配置文件的语法:
  		 #named-checkconf [/etc/named.conf]
  		 测试工具:dig host nslookup
  		 #dig [-t RR_TYPE] name [@server] [query options]
  		 用于测试dns系统,因此其不会查询hosts文件;
  		 查询选项:
  		 		+[no]trace: 跟踪解析过程;
  		 		+[no]recurse:进行递归解析;
  		注意:反向解析测试
  			#dig -x IP
  		模拟完全区域传送:
  		  #dig -t  axfr DOMAIN [@server]
  rndc:named服务控制命令
  		 #rndc -h
  		 #rndc status
  		 #rndc flush ;清空缓存,默认为2hours		  	

配置解析一个正向区域:

A.手动创建配置文件及区域文件:

(1)定义区域
		在主配置文件中或主配置文件中实现;
				zone "ZONE_NAME" IN {
					type {master|slave|hint|forward};
					file "ZONE"}

在这里插入图片描述

(2).配置区域文件(这里是系统自带的哦):

⑴编辑/var/named/named.loopback文件(如果是新建的文件要修改其相关属性):
 [root@localhost ~]# vim /var/named/named.loopback
 $TTL 1D@       IN SOA  @ rname.invalid. (

                                    0       ; serial
                                    1D      ; refresh
                                    1H      ; retry
                                    1W      ; expire
                                    3H )    ; minimum
    NS      @
    A       127.0.0.1
    AAAA    ::1
    PTR     localhost.
    ⑵编辑/var/named/named.localhost文件(如果是新建的文件要修改其相关属性):
     [root@localhost ~]# vim /var/named/named.localhost
     $TTL 1D
     @       IN SOA  @ rname.invalid. (
                                    0       ; serial
                                    1D      ; refresh
                                    1H      ; retry
                                    1W      ; expire
                                    3H )    ; minimum
    NS      @
    A       127.0.0.1
    AAAA    ::1
    ⑶编辑/var/named/xiaoma.com.zone文件(手动创建):

在这里插入图片描述

	(4).修改named.conf属性:
	1.[root@localhost named]# chown root:named 
	/var/named/xiaoma.com.zone
	2.[root@localhost named]# chmod 640 /var/named/xiaoma.com.zone
	3.[root@localhost etc]# chown root:named /etc/named.conf
	4.[root@localhost etc]# chmod --reference=/etc/named.conf.origin /etc/named.conf(1)-->注意:这个(1)和(2)是一样的.
	
	手动测试:[root@localhost etc]# named-checkconf

**B直接修改修改配置文件:named.conf:
(1)修改配置文件:named.conf:
注意:

这里只是把注释的内容贴出来了:
// listen-on port 53 { 127.0.0.1; };
// listen-on-v6 port 53 { ::1; };
// allow-query { localhost; };
// dnssec-enable yes;
// dnssec-validation yes;
// dnssec-lookaside auto;
// bindkeys-file “/etc/named.iscdlv.key”;
// managed-keys-directory “/var/named/dynamic”;
//include “/etc/named.root.key”;
2).修改区域文件/etc/named.rfc1912.zones:
在文章尾部添加:
[root@localhost named]# vim /etc/named.rfc1912.zones
zone “xiaoma.com” {
type master;
file “xiaoma.com.zone”;
};
3)编辑/var/named/xiaoma.com.zone文件(手动创建):
在这里插入图片描述

4).修改其属性:
[root@localhost named]# chmod 640 /var/named/xiaoma.com.zone
[root@localhost named]# chown root:named /var/named/xiaoma.com.zone
[root@localhost named]# named-checkconf
[root@localhost named]# named-checkzone “xiaoma.com” /var/named/xiaoma.com.zone
5).启动服务/重新加载服务:
1.[root@localhost named]# named -u named
2.[root@localhost named]# service named reload
3.[root@localhost named]# killall -1 named

配置反向解析:

1).定义区域文件/etc/named.rfc1912.zones:
[root@localhost ~]# vim /etc/named.rfc1912.zones
zone “17.16.172.in-addr.arpa”{
type master;
file “172.16.17.zone”;
};
2).创建区域文件172.16.17.zone:
复制文件保持属组及权限:
[root@localhost named]# cp -p xiaoma.com.zone 172.16.17.zone
3).编辑区域文件172.16.17.zone:
在这里插入图片描述

区域传送的 主从复制

A.配置正向主从服务的实现:

1).主服务器配置 /var/named/xiaoma.com.zone:
在这里插入图片描述

(1)确保区域数据文件中为每个从服务器配置NS记录,并且在正向区域文件需要每个从服务器的NS记录的主机名配置一个A记录,且此A记录后面的地址为真正的从IP地正址;
注意:时间要同步; ntpdate;

2).主服务器配置 重新加载区域文件:
1.[root@host1 ~]# service named reload
2.Reloading named: [ OK ]
3).测试主从服务器是否能通信:

3).从服务器配置 /etc/named.conf:
01.注意:
02.这里只是把注释的内容贴出来了:
03.// listen-on port 53 { 127.0.0.1; };
04.// listen-on-v6 port 53 { ::1; };
05.// allow-query { localhost; };
06.// dnssec-enable yes;
07.// dnssec-validation yes;
08.// dnssec-lookaside auto;
09.// bindkeys-file “/etc/named.iscdlv.key”;
10.// managed-keys-directory “/var/named/dynamic”;
11.//include “/etc/named.root.key”;
4).从服务器配置 vim /etc/named.rfc1912.zones:
在这里插入图片描述 也可以在named.conf中配制定义区域:

zone "ZONE_NAME" IN {
	type slave;
	file "slaves/ZONE_NAME.zone";
	masters { MASTER_IP; };
	};
	 注意:大括号后的;号和大括号两边的空格;

5).从服务器配置 启动并查看端口53是否启动:
1.[root@host2 ~]# named -u named
2.[root@host2 ~]# ss tunl
6).从服务器配置查看/var/named/slaves/xiaoma.com.zone是否以同步:
在这里插入图片描述***

注:$ORIGIN参数后根的是默认补全参数.后面的单名默认添加补全所带参数;

7).从服务器配置 测试解析:
在这里插入图片描述

8).主服务器配置 重新加载并修改序列号:
I.添加一条记录并修改序列号:
在这里插入图片描述

II.重新加载:
1.[root@host1 ~]# service named reload
2.Reloading named: [ OK ]

9).从服务器 查看是否同步:
在这里插入图片描述

10).其它解析:
1.[root@host2 ~]# dig -t NS xiaoma.com @172.16.17.100
2.[root@host2 ~]# dig -t MX xiaoma.com @172.16.17.100
3.[root@host2 ~]# dig -t CNAME pop.xiaoma.com @172.16.17.100
4.[root@host2 ~]# dig -t CNAME ftp.xiaoma.com @172.16.17.100
接上(1.配置正向主从服务的实现)

配置反向主从服务的实现:

1).从服务器配置 vim /etc/named.rfc1912.zones :
在这里插入图片描述

2).从服务器 测试语法并重新加载:
1.[root@host2 ~]# named-checkconf
2.[root@host2 ~]# service named reload
3.Reloading named: [ OK ]
3).从服务器 查看日志:
在这里插入图片描述

4).从服务器 查看同步文件:
在这里插入图片描述

5).将主服务器的记录添加至反向记录:
我们在主服务器(/var/named/172.16.17.zone)里面加一条NS记录,告诉主服务器有一个从服务器.(ns2、img以及从服务器的记录).
在这里插入图片描述

6).启动服务并重新加载:
7).主服务器 查看日志:
在这里插入图片描述

8).从服务器 查看同步:
在这里插入图片描述

.区域传送的安全控制:

注意:我们都知道默认在未设置安全控制的情况下,DNS服务器的区域传送是传送所有服务器的,那么我们应该如何防范别人同步你的服务器的数据呢?

1).主服务器配置 vim /etc/named.rfc1912.zones :
在这里插入图片描述

2).主服务器配置 测试语法/重加载:
1.[root@host1 ~]# named-checkconf
2.[root@host1 ~]# service named reload
3.Reloading named: [ OK ]
4.[root@host1 ~]#
3).主服务器 测试区域传送:
在这里插入图片描述

4).从服务器 测试区域传送:
在这里插入图片描述

6).从服务器的安全控制 vim /etc/named.rfc1912.zones:
在这里插入图片描述

7).从服务器 测试语法/重加载
[root@host2 ~]# named-checkconf
[root@host2 ~]# service named reload
Reloading named:
8).从服务器 测试:

如何实现 子域授权、请求转发及ACL?

1.远程管理BIND的工具:

简单介绍:
rndc: Remote Name Domain Controller
rndc: 密钥rnc: 持有一半密钥,保存于rndc的配置文件中;
BIND:持有一半密钥,保存于主配置文件中;

常用选项:
reload : 重读
reload zone : 重加区域文件
reconfig: 重读配置文件并加载新增的区域;
querylog: 关闭或开启查询日志;
flush: 清空服务器的缓存;
flushname name: 清空指定名称相关的缓存;
trace: 打开debug,debug有级别的概念,每执行一次提升一次级别;
trace LEVEL: 指定deb②ug的级别;

如果rndc无法正常工作,可尝试使用rndc-confgen 生成/etc/rndc.conf配置文件,并将配置文件中的后半部分复制到BIND的主配置文件中并按指示启用即可.
如: # rndc-confgen -r /dev/urandom > /etc/rndc.conf
#service named reload

1).首先主服务器上生成rndc的密钥:
I.生成密钥:
1.[root@host1 ~]# rndc-confgen -r /dev/urandom > /etc/rndc.conf
II.密钥介绍:
在这里插入图片描述

2).在主服务器 将/etc/rndc.conf属于BIND的复制到/etc/named.conf
在这里插入图片描述
3).在主服务器上 查看状态:
在这里插入图片描述
4).再主服务器上查看端口:
1.[root@host1 ~]# ss -tunl
5).从服务器上生成密钥:
与主服务器的步骤一样:1)-2)-3)-4)-5) 这里就不贴图了哈.
6). 例子:
①第一次开启,执行第二次关闭:rndc querylog
在这里插入图片描述
接上:
在这里插入图片描述
②停止rndc:
1.[root@host2 ~]# rndc stop
2.[root@host2 ~]# ps aux | grep named
3.root 26370 1.0 0.1 103252 828 pts/0 S+ 20:45 0:00 grep named
4.[root@host2 ~]# named -u named
③trace的使用:
01.[root@host2 ~]# rndc trace
02.[root@host2 ~]# rndc trace 执行三次
03.[root@host2 ~]# rndc trace
04.[root@host2 ~]# rndc status
05.version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
06.CPUs found: 2
07.worker threads: 2
08.number of zones: 21
09.debug level: 3 符合上面的三次.
10.xfers running: 0
11.xfers deferred: 0
12.soa queries in progress: 0
13.query logging is OFF
14.recursive clients: 0/0/1000
15.tcp clients: 0/100
16.server is up and running
17.[root@host2 ~]# rndc trace 0 (指定级别)
18.[root@host2 ~]# rndc status
19.version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6
20.CPUs found: 2
21.worker threads: 2
22.number of zones: 21
23.debug level: 0 0级别
24.xfers running: 0
25.xfers deferred: 0
26.soa queries in progress: 0
27.query logging is OFF
28.recursive clients: 0/0/1000
29.tcp clients: 0/100
30.server is up and running
31.[root@host2 ~]#

2.BIND子域授权的实现(主要将正向的,反向的很麻烦):
子域名和委派的区别?
子域文件在父域文件中
委派有独立的区域文件

子域授权:

正向解析区域授权子域的方法:  先在named.conf中增加新的子区域,再在(或新建)正向区域文件中添加:
	ops.magedu.com.		IN		NS	ns1.ops.magedu.com.
	ops.magedu.com.		IN		NS	ns2.ops.magedu.com.
	ns1.ops.magedu.com. IN		A		IP.AD.DR.ESS
	ns2.ops.magedu.com.	IN		A		IP.AD.DR.ESS

定义转发

注意:被转发的服务器必须允许为当前服务做递归;默认是允许为所有的服务器递归的.
(1)区域转发:仅转发对某特定区域的解析要求;

zone "ZONE_NAME" IN {
	type forward;
	forward (first|only);
	forwardders { SEVER_IP;};
	};
	first:首先发转发;转发器不响应时自行去叠代查询;
	only:只转发;

(2)全局转发:凡本地没有通过ZONE定义的区域查询请求,通通转给某转发器;

在named.conf的options中添加:
options {
	forward (first|only);
	forwardders { SEVER_IP;};
	......
	};

acl:访问控制列表;把一个或多个地址归并一个命名的集合,随后通过此名称即可对此集合内的所有主机实现统一调用;

acl acl_name {
		ip;
		net/prelen;
		};
		bind有四个内置的acl
			none:没有一个主机;
			any:任意主机;
			local:本机;
			localnet:本机所在的IP所属的网络;

访问控制命令:
allow-query {}; 允许查询的主机;白名单;
allow-transfer {}; 允许向哪些主机做区域传送;默认为向所有主机;应该配置仅允许从服务器;
allow-recursion {}; 允许哪些主机向当前DNS服务器发起递归查询请求;
allow-update {};DDNS,允许动态更新区域数据库文件中内容;

bind view设定细节:

  • master
    修改 /etc/named.conf ,內容類似如下:
    acl “lan” { 10.1.2.0/24; };

options { directory { “/var/named”; }; };

view “internal” {
match-clients { !10.1.2.5; lan; }; // 這裡排除 slave 的另一位址
zone “.” IN {
type hint;
file “named.root”;
};
zone “my.domain” IN {
type master;
file “my.domain.int”;
allow-transfer { 10.1.2.4; }; //允許 slave 的 primay 位址
};
};

view “external” {
match-clients { any; };
recursion no;
zone “.” IN {
type hint;
file “named.root”;
};
zone “my.domain” IN {
type master;
file “my.domain.ext”;
allow-transfer { 10.1.2.5; }; //允許 slave 的 alias 位址
};
};

  • slave
    修改 /etc/named.conf ,內容類似如下:

acl “lan” { 10.1.2.0/24; };

options { directory { “/var/named”; }; };

view “internal” {
match-clients { lan; };
zone “.” IN {
type hint;
file “named.root”;
};
zone “my.domain” IN {
type slaver;
file “slave.my.domain.int”;
masters { 10.1.2.3; };
transfer-source 10.1.2.4; // 指定 primay 位址
};
};
view “external” {
match-clients { any; };
recursion no;
zone “.” IN {
type hint;
file “named.root”;
};
zone “my.domain” IN {
type master;
file “slave.my.domain.ext”;
masters { 10.1.2.3; };
transfer-source 10.1.2.5; // 指定 alias 位址
};
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值