dns

DNS:域名解析服务器。基于BIND。分布式数据库,上级仅知道其直接下级,下级只知道根的位置。

主机名:www.baidu.com
域名:baidu.com
FQDN:www.baidu.com.,加上点

组织域:.com  .org  .net  .cc
国家域:.cn  .tw  .hk  
反向域:

/etc/hosts:最早的hostname对应ip的文件
/etc/resolv.conf:运营商的dns服务器ip记录
/etc/nsswitch.conf:这个文件是来决定先使用hosts还是resolv的设置

hosts:  file dns
#代表先用hosts再用运营商的

两种查询方式
  递归:只发出一次请求,一级一级的查找,一级一级的返回。主机指定的DNS必须可以为主机递归。
  迭代:发出多次请求,第一级挨个去查找,最后一级直接返回。根不为任何人递归,迭代方式。

两种解析方式
  正向:FQDN->ip     www.baidu.com ->ip:202.108.22.5
  反向:ip->FQDN     202.108.22.5->www.baidu.com

工作内容
  接受本地客户端查询请求(递归)
  接受外部客户端查询请求权威答案
    肯定答案:TTL
    否定答案:TTL
  接受外部客户端查询请求非权威答案

工作模式
  主DNS服务器:数据修改
  从DNS服务器:请求数据同步
  缓存DNS服务器:
  转发器:

区域传送类型
  完全区域传送:axfr
  增量区域传送:ixfr
区域类型
  主区域:master
  从区域:slave,负责从主dns同步数据库,并提供查询
  提示区域:hint,当服务器不知道某个主机名在哪的时候就得去找根,hint就是根的地址zone
  转发区域:forward,也就是缓存DNS服务器

  

资源记录格式
DOMAIN  [TTL]  IN  RRtype  RRvalue
DOAMIN:待查数据,FQDN,记得加上后面的点
TTL:客户端查询到记录后的有效时间
IN:固定关键词
★RRtype:资源记录类型,下面有写
RRvalue:对应的值

例:
www.abc.com.    IN  A   1.1.1.1
1.1.1.1     IN  PTR  www.abc.com.

正向区域资源记录类型
SOA(start of authority):起始授权记录,就是管理这个域的重要参数,放在首行
格式  ZONENAME  TTL  IN  SOA  MASTERFQDN  ADMINISTRATOR_MAILBOX (
                serialnumber  
                refresh
                retry
                expire
                nagativeTTL  )
  MASTERFQDN:该区域内主DNS名称
  ADMINISTRATOR_MAILBOX:管理员的邮箱,邮箱格式:admin@abc.com写成admin.abc.com
  serialnumber:代表数据库的新旧,判断是否需要下载。通常使用日期,大小不能超过2^32,也就是4294967296
  refresh:跟新频率,每个多长时间slave去向master请求数据
  retry:当更新时由于某些原因导致失败,尝试更新时间,如果更新成功,时间会恢复成refresh
  expire:如果一直更新失败,达到这个时间,就不会在更新了,等待管理员处理
  nagativeTTL:如果这个数据的zone文件中,RR记录没有标明有效时间,就以这个时间为主。

  时间单位:M(分钟),H(小时),D(天),W(周),默认为秒
    refresh>=retry*2
    refresh+retry<expire
    expire>=retry*10
    expire>=7天  
例   
abc.com.  600  IN  SOA  ns.abc.com.  admin.abc.com  (
                  1
                  1H
                  5M
                  1W
                  1D  )
NS(name server):ZONE NAME->FQDN  权威DNS服务器

  abc.com.  IN  NS  ns.abc.com.
  ns.abc.com.  IN  A  1.1.1.1
MX(mail exchanger):ZONE NAME->FQDN  邮件服务器,当有邮件发送给到这个区域时,直接转发到这个邮件服务器上

邮件服务器定义格式。有一个优先级,防止邮件服务器挂掉之后邮件无法接收。范围是0-99,数值越低越优先。而且必须对应A记录存在
  
ZONENAME  TTL  IN  MX  PRI  VALUE

  abc.com.  600  IN  MX  10  mail.abc.com.
  mail.abc.com.  600  IN  A  1.1.1.1
  
A(address):FQDN->ipv4  从主机名到ipv4
AAAA(address):FQDN->ipv6  从主机名到ipv6
PTR(pointer):ip->FQDN  从ip到主机名
CNAME(canonical name):FQDN1->FQDN2  2的别名是1,多用在ip常变化的场景

 

向区域资源记录类型
反解ip要把ip倒着写并且加上.in-addr.arpa.,要加上点

  1.168.192.in-addr.arpa.  IN  SOA..........
  1.1.168.192.in-addr.arpa.  IN  PTR  www.a.com.

 

 

 

host 主机名:解析这个地址
  -a:显示这个主机的详细信息

nslookup 主机名:解析这个地址
nslookup:不加任何参数,可以进入特殊的查询模式
  set type=any:列出所有的信息正解方面配置文件
  set type=mx:列出邮件服务器信息
dig 主机名:解析这个地址
dig 主机名 @DNSserver:用指定的dns服务器解析这个地址
dig +trace 主机名:从根开始解析这个地址
dig -t type 主机名:指定数据类型解析
    a 主机名:正解
    ns 域名:域名解析
dig -x 主机名:查询反向解析  

 

 

 

 

 

 

 

 

BIND
  /etc/named.conf:主配置文件
  /etc/sysconfig/named:是否启动chroot及额外的参数,这个文件控制
  /etc/rndc.key:密钥文件
  /etc/rndc.conf:配置文件
  /var/named/:区域数据文件,数据库文件默认路径
  /var/run/named/:程序启动后默认放置pid的位置
  /etc/rc.d/init.d/named:服务脚本,service named configtest检查语法错误

[root@localhost ~]# yum list installed | grep ^bind
bind.x86_64                          #主程序
bind-chroot.x86_64                   #把bind程序关在家里
bind-libs.x86_64                       #库文件
bind-utils.x86_64                      #客户端查找主机名的相关命令

 缓存DNS服务器

1.dns缓存服务器,只把客户端的请求丢给上层服务器,上层服务器返回结果后,将对应关系缓存下来。
2.设置之前,需要关掉selinux,放开防火墙相应端口。
3.缓存器只需要设置下面这些就可以,之后systemctl start named开启,之后测试就行了
4.启动是成功还是失败可以看下/var/log/message文件

由于只是缓存器,所以不需要数据库文件,更改这一个文件就可以了。

[root@localhost ~]# cat /etc/named.conf
#默认情况下这个文件会读取/etc/named.rfc1912.zones区域文件
options {
	listen-on port 53 { any; };   #在哪个地址上监听端口
	listen-on-v6 port 53 { ::1; };    #ipv6监听端口
	directory 	"/var/named";    #数据库路径
	dump-file 	"/var/named/data/cache_dump.db";    #一些统计信息
	statistics-file "/var/named/data/named_stats.txt";
	memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { any; };    #为哪些地址提供查询
	recursion yes;     #将自己视为客户端的一种查询方式
        forward only;    #只把客户端的查询交给上层
	forwarders {      #上层DNS有哪些,可以写多个,分号结尾
		8.8.8.8;
};

 MasterDNS服务器

1.架设这种服务器需要授权,也就是说也就是自个内网可以使用
2.主配置文件仍然是/etc/named.conf  
3.每一个正反解文件都需要一个文件,这个文件名需要与/etc/named.conf相关项匹配
4.dns不能查询时会想根请求
5.一个文件对应一个zoon解析
6.邮件资源记录不要忘记加上优先级
7.启动是否成功在/var/log/message文件中查看
8.涉及到的四个文件是
  /etc/named.conf   
  /var/named/正解文件     
  /var/named/反解文件   
  /var/named/named.ca

先要修改主文件配置 

[root@localhost named]# cat /etc/named.conf
options {
	listen-on port 53 { any; };
	listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
	memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { any; };    
	recursion yes;      #这上面一段都是一样的,需要把forward only去掉
	allow-transfer	{ none;  };   #是否允许其他服务器下载数据库,还没配置slave。所以不允许
};
zone "." IN {                    #这个就是不知道怎么做时候去找根
	type hint;
	file "named.ca";       #这个文件bind有提供,就在/var/named/named.ca
};
zone "a.com" IN {              #要正解的区域
	type master;
	file "named.a.com";    #这个文件需要等会新建,名字需要匹配
};
zone "0.168.192.in-addr.arpa" IN {     #反解区域,名字格式固定
	type master;
	file "named.192.168.0";      #这个文件名也需要匹配
};

 之后编辑对应的正解文件

[root@localhost named]# cat /var/named/named.a.com
$TTL 600          #这一行是设定默认的TTL值
@	IN SOA	dns1.a.com.	1.qq.com. (
					1
					3H
					15M
					1W
					1D
)
#固定格式,@代表由主文件传过来的域也就是a.com.
@	IN	NS	dns1.a.com.   #NS记录
dns1.a.com.	IN	A	192.168.0.104   #NS的A记录
@	IN	MX	1	mail.a.com.       #MX记录,邮件服务器前一定要加上优先级
www.a.com.	IN	A	192.168.0.105      #这些就是相对应的A记录
aaa.a.com.	IN	CNAME	www.a.com.
ftp  IN	A	192.168.0.106    #写成这样会自动补成ftp.a.com.

 编辑反解文件

[root@localhost named]# cat /var/named/named.192.168.0
$TTL 600     #默认TTL
@	IN	SOA	dns1.a.com	2697466566.qq.com. (
					1
					3H
					15M
					1W
					1D
)
@	IN	NS	dns1.a.com.    #@就是0.169.192.in-arrd.arpa
104	IN	PTR	dns1.a.com.    #这样写会补成104.0.168.192.in-addr.arpa.
105	IN 	PTR	www.a.com.
105	IN	PTR	aaa.a.com.
106	IN	PTR	ftp.a.om.

 SlaveDNS服务器

1.注意事项同上
2.slave服务器不需要编写数据库文件,它的文件从master传过来
3.master主配置文件/etc/named.conf需要配置相关选项
4.master数据库文件/var/named/name.正反解文件 需要配置相关选项
5.涉及到的4个文件分别是
      master的   /etc/named.conf
      master的   /var/named/正解文件
      master的   /var/named/反解文件
      slave的     /etc/named.conf

master的主配置文件

[root@localhost ~]# cat /etc/named.conf
options {
	listen-on port 53 { any; };
	listen-on-v6 port 53 { ::1; };
	directory 	"/var/named";
	dump-file 	"/var/named/data/cache_dump.db";
	statistics-file "/var/named/data/named_stats.txt";
	memstatistics-file "/var/named/data/named_mem_stats.txt";
	allow-query     { any; };
	recursion yes;
	allow-transfer	{ none;  };
};
zone "." IN {
	type hint;
	file "named.ca";
};                                            #这上面都一样
zone "a.com" IN {
	type master;
	file "named.a.com";
	allow-transfer { 192.168.0.104;  };   #允许讲这个区域的数据库传送给谁
};
zone "0.168.192.in-addr.arpa" IN {
	type master;
	file "named.192.168.0";
	allow-transfer { 192.168.0.104;  };    #同上
};

 master的正解文件

[root@localhost ~]# cat /var/named/named.a.com
$TTL 600
@	IN SOA	dns1.a.com.	2697466566.qq.com. (
					1
					3H
					15M
					1W
					1D
)
@	IN	NS	dns1.a.com.
dns1.a.com.	IN	A	192.168.0.105
@	IN	NS	dns2.a.com.                  #增加一个NS记录及正向解析
dns2.a.com.	IN	A	192.168.0.104

@	IN	MX	1	mail.a.com.
www.a.com.	IN	A	192.168.0.200
aaa.a.com.	IN	CNAME	www.a.com.

ftp	IN	A	192.168.0.201

 master的反解文件

[root@localhost ~]# cat /var/named/named.192.168.0
$TTL 600
@	IN	SOA	dns1.a.com	2697466566.qq.com. (
					1
					3H
					15M
					1W
					1D
)
@	IN	NS	dns1.a.com.
@	IN	NS	dns2.a.com.      #增加一个NS记录及反向解析
105	IN	PTR	dns1.a.com.
104	IN 	PTR	dns2.a.com.
200	IN	PTR	aaa.a.com.
201	IN	PTR	ftp.a.om.

slave的主配置文件

[root@localhost ~]# cat /etc/named.conf
options {
        listen-on port 53 { any; };
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";
        dump-file       "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-query     { any; };
        recursion yes;
        allow-transfer  { none;  };
};
zone "." IN {
	type hint;
	file "named.ca";
};                                       #这上面都是一样的
zone "a.com" IN  {
	type slave;
	file "slaves/named.a.com";              #在/var/named下有slaves的文件夹
                                               #对应填写接收数据的文件名
	masters   { 192.168.0.105;  };         #这个地方需要填写master 的地址
};
zone "0.168.192.in-addr.arpa" IN {
	type slave;
	file "slaves/named.192.168.0";    #同上
	masters { 192.168.0.105;  };            #填写master地址
};
        

 

VIEW  负载均衡  

 

posted @ 2018-05-13 22:01  ForLivetoLearn  阅读(332)  评论(0编辑  收藏  举报