目录
一.了解DNS服务
1.认识域名空间
2.了解DNS服务的分类
Ⅰ.主DNS服务器
Ⅱ.辅助DNS服务器
Ⅲ.转发DNS服务器
Ⅳ.唯高速缓存DNS服务器
3.掌握DNS查询模式
Ⅰ.递归查询
Ⅱ.转寄查询(又称迭代查询)
4.掌握域名解析过程
Ⅰ.DNS域名解析的工作原理
Ⅱ.正向解析和反向解析
二.安装DNS服务(IP地址192.168.10.1)
1 .安装BIND软件包(实现DNS服务器的开放源码软件)
2.DNS服务的启动,停止和重启,加入开机自启动
三.掌握BIND配置文件
1.认识全局配置文件
2.认识主配置文件
1.Zone区域声明
2.跟区域文件/var/named/named.ca
3.缓存DNS服务器的配置
四.配置主DNS服务器实例
1.案例环境及需求
2.配置过程
Ⅰ.配置全局配置文件/etc/named.conf文件
Ⅱ.配置主配置文件
Ⅲ.修改bind的区域配置文件
Ⅳ.设置防火墙放行,设置主配置文件和区域文件的属组为named
Ⅴ.重启DNS服务,并加入开机自启
五.配置DNS客户端
1.配置Windows客户端
2.配置Linux客户端(ip地址192.168.10.2)
六.使用nslookup测序DNS
1.nslookup命令<前提是客户端与服务端通信畅通>
2.dig命令
3.host命令
DNS(Domain Name Service,域名解析服务)是Internet/Intarnet中最基本也是非常重要的一项服务,他提供了网络访问域中域名和IP地址地相互转化
DNS是一个分布式数据库,命名系统采用层次的逻辑结构,如同一棵倒置的树。这个逻辑的树形结构称为域名空间。由于DNS划分了域名空间,所以各机构可以使用自己的域名空间创建DNS信息,如图
DNS树的每个节点代表一一个域, 通过这些节点,对整个域名空间进行划分,成为一一个层次结构。域名空间的每个域的名字通过域名进行表示。域名通常由一个完全正( FullyQualified Domain Name, FQDN )标识。FQDN能准确表示出其相对于DNS域树根的位置,也就是节点到DNS树根地完整表述方式,从节点到树根采用反向书写,并将每个节点用"."分隔一个DNS域可以包括主机和其他域(子域),每个机构都拥有名称空间地某一部分的授权,负责该部分名称空间的管理和换份,并用它来命名DNS域和计算机。例如:163为com域的子域,其表示方法为163.com,而WWW为163域的Web主机,可以使用www.163.com表示
Ⅰ.主DNS服务器
主DNS服务器( Master或Primary)负责维护所管辖域的域名服务信息。它从域管理员构造的本地磁盘文件中加载域信息,该文件(区文件)包含着该服务器具有管理权的一部分域结构的最精确信息。配置主域服务器需要一整套的配置文件,包括主配置文件(/etc/named.conf )、正向域的区文件、反向域的区文件、高速缓存初始化文件(/var/named/named.ca)和回送文件(/var/named/named.local)
Ⅱ.辅助DNS服务器
辅助DNS服务器(Slave或Secondary )用于分担主DNS服务器的查询负载。区文件是从主服务器中转移出来的,并作为本地磁盘文件存储在辅助服务器中。这种转移称为“区文件转移”。在辅助DNS服务器中有一个所有域信息的完整复制, 可以有权威地回客对该过中查询请求。配置辅助DNS服务器不需要生成本地区文件,因为可以从主服务器下载该区文件,所以只需配置主配置文件、高速缓存文件和回送文件就可以了。
Ⅲ.转发DNS服务器
转发DNS服务器( Forwarder Name Server )可以向其他DNS转发解析请求。在DNS服务器收到客户端的解析请求后,它首先会尝试从其本地数据库中查找;若未能找到,则需要向其他指定的DNS服务器转发解析请求;其他DNS服务器完成解析后会返回解析结果,转发DNS服务器将该解析结果缓存在自己的DNS缓存中,并向客户端返回解析结果。在缓存期内,如果客户端请求解析相同的名称,则转发DNS服务器会立即回应客户端;否则,将会再次发生转发解析的过程。
目前网络中所有的DNS服务器均被配置为转发DNS服务器,向指定的其他DNS服务器或根域服务器转发自已无法完成的解析请求。
Ⅳ.唯高速缓存DNS服务器
供本地网络上的客户机用来进行域名转换。它通过查询其他DNS服务器并将获得的信息存放在它的高速缓存中,为客户机查询信息提供服务。唯高速缓存DNS服务器( Caching-nonly DNS server)不是权威性的服务器,因为它提供的所有信息都是间接信息。
Ⅰ.递归查询
在收到DNS工作站的查询请求后,DNS服务器在自己的缓存或区域数据库中查找。如果DNS服务器本地没有存储查询的DNS信息,那么,该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
Ⅱ.转寄查询(又称迭代查询)
在收到DNS工作站的查询请求后,如果在DNS服务器中没有查到所需数据,该DNS服务器便会告诉DNS工作站另外-台DNS服务器的IP地址,然后,再由DNS工作站自行向此DNS服务器查询,以此类推,直到查到所需数据为止。如果到最后一台DNS服务器都没有查到所需数据,则通知DNS工作站查询失败。
“转寄” 的意思就是,若在某地查不到,该地就会告诉你其他地方的地址,让你转到其他地方去查。 一般在DNS服务器之间的查询请求便属于转寄查询( DNS服务器也可以充当DNS工作站的角色)。
如图:
假设客户机使用电信ADSL(Asymmetric Digital SubscriberLine,非对称数字用户线路)接入Internet,电信为其分配的DNS服务地址为210.111.110.10,域名解析如下:
1.客户端向本地DNS服务器210.111.110.10直接查询www.163.com的域名
2.本地DNS无法解析此域名,它先向根域服务器发出请求,查询.com的DNS地址
3.根域DNS管理.com,.net,.org等顶级域名的地址解析,他收到请求后,把解析结果返回给本地DNS。
4.本地DNS服务器210.111.110.10得到查询结果后,接着向管理.com的域的DNS服务器发出进一步的查询请求,要求得到163.com的DNS地址
5..com域把解析结果返回给本地DNS服务器210.111.110.10
6.本地DNS服务器210.111.110.10得到查询结果后,接着向管理163.com域的DNS服务器发出查询具体主机IP地址的请求(WWW),要求得到满足要求的主机IP地址。
7.163.com把解析结果返回给了本地DNS服务器210.111.110.10
8.本地DNS服务器得到了最终的查询结果,他把这个结果返回给客户端,从而使客户端能够和远程主机通信。
正向解析:正向解析是指域名到IP地址的解析过程
反向解析:反向解析是从IP地址到域名的解析过程。反向解析的作用:服务器的身份验证
在linux下架设DNS服务器通常使用BIND(Berkeley Internet Name Domain)程序来实现,守护进程是named
[root@localhost ~]# rpm -qa | grep bind
[root@localhost ~]# yum -y install bind bind-chroot
[root@localhost ~]# rpm -qa | grep bind
[root@localhost ~]# systemctl restart named
[root@localhost ~]# systemctl enable named
[root@localhost ~]# cat /etc/named.conf\
options {
listen-on port 53 { 127.0.0.1; }; //指定BIND侦听的DNS查询请求的本机IP地址及端口
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";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localhost; }; //指定接收DNS查询请求的客户端
recursion yes;dnssec-enable yes;
dnssec-validation yes; //改为no可以忽略SElinux影响managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
include "/etc/crypto-policies/back-ends/bind.config";
};//以下用于指定BIND服务的日志参数
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};zone "." IN { //用于指定根服务器的配置信息,一般不能改动
type hint;
file "named.ca";
};include "/etc/named.rfc1912.zones"; //指定主配置文件按,一定要根据实际修改
include "/etc/named.root.key";
- directory:用于指定named守护进程的工作目录,各区域正反向搜索解析文件和DNS根服务器地址列表文件(named.ca)应放在该配置项指定的目录中。
- allow-query{}:与allow-query{localhost;}功能相同。另外,还可以使用地址匹配符来表达允许的主机。例如,any可匹配所有的IP地址,none不匹配任何的IP地址,localhost匹配本地主机使用的所有IP地址,localnets匹配本地主机相连的网络中所有主机。例如:仅允许127.0.0.1和192.168.1.0/24网段的主机查询该DNS服务器,则命令为:allow-query {127.0.0.1;192.168.1.0/24};
- listen-on:设置named守护进程监听的IP地址和监听端口。若未指定,默认监听DNS服务器所有的IP地址的53号端口。若要设置DNS服务器监听192.168.1.2这个IP地址,端口使用标准的5353端口,则配置命令:listen-on port 5353 {192.168.1.2};
- forwarders{}:用于定义DNS转发器。在设置了转发器后,所有非本域的和在缓存中无法找到的域名查询,可由指定的DNS转发器来完成解析工作并做缓存。foward用于指定转发方式,仅在forwarders转发器列表不为空时有效,其用法为“foward first l only;”。forward first为默认方式,DNS服务器会将用户的域名查询请求先转发给forwarders设置的转发器,由转发器来完成域名的解析工作,若指定的转发器无法完成解析或无响应,则再由DNS服务器自身来完成域名的解析。若设置为“forward only;”则DNS服务器仅将用户的域名查询请求转发给转发器,若指定的转发器无法完成域名解析或无响应,DNS服务器自身也不会试着对其进行域名解析。例如,某地区的DNS服务器为61.128.192.68和61.128.128.68,若要将其设置 options{ forwarders {61.128.192.68;61.128.129.68;}; forward first; }
[root@localhost ~]# cat /etc/named.rfc1912.zones
zone "localhost.localdomain" IN {
type master; //主要区域
file "named.localhost"; //指定正向查询区域配置文件
allow-update { none; };
};......../省略/
zone "1.0.0.127.in-addr.arpa" IN { //反向解析区域
type master; //指定反向解析区域配置文件
file "named.loopback";
allow-update { none; };
};1.Zone区域声明
(1)主域名服务器的正向解析区域声明为(样本文件为named.localhost)
zone "区域名称" IN {
type master; //主要区域
file "实现正向解析的区域文件名"; //指定正向查询区域配置文件
allow-update { none; };
};(2)从域名服务器的正向解析区域声明格式为
zone "区域名称" IN { //反向解析区域
type slave; //指定反向解析区域配置文件
file "实现正向解析的区域文件名";masters {主域名服务器的IP地址;}
};2.跟区域文件/var/named/named.ca
包含了Internet的定义域名服务器的名字和资质。利用该文件可以让DNS服务器找到根DNS服务器,并初始化DNS的缓冲区。当DNS服务器街道客户端主机的查询请求时,如果在Cache中找不到相应的数据,就会通过跟服务器进行逐级查询
缓存域名服务器配置很简单,不需要区域文件,只需要配置好/etc/named.conf就可以了。一般电信的DNS都是缓存域名服务器。重要的是配置好以下两项内容。
(1):用“forward only”命令指明这个服务器是缓存域名服务器
(2):用"forwarders {转发dns请求到哪个服务器IP;};"的命令格式设置转发dns请求到哪个服务器
某校园网要架设一台DNS服务器负责long.com域的域名解析工作。DNS服务器的FQDN为dns.long.com,IP地址为192.168.10.1.要求为以下域名实现正反域名解析服务。
dns.long.com 192.168.10.1
mail.long.com 192.168.10.2
slave.long.com 192.168.10.3
www.long.com 192.168.10.4
ftp.long.com 192.168.10.5
另外为www.long.com设置别名为web.long.com
配置过程包括全局配置文件,主配置文件和正反区域解析文件的配置
Ⅰ.配置全局配置文件/etc/named.conf文件
第一步:把options选项中的侦听IP(127.0.0.1)改为any
第二步:把dnssec-vaildation yes 改为 no
第三步:把允许网段allow-query 后面的localhost改为any。
Ⅱ.配置主配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
添加以下内容:
zone "long.com" IN{
type master;
file "long.com.zone";
allow-update { none; };
}
zone "10.168.192.in-addr.arpa" IN{
type=master;
file "192.168.10.zone";
allow-update { none; };
}Ⅲ.修改bind的区域配置文件
①创建long.com.zone正向区域文件
正向区域文件位于/var/named目录下,为编辑方便可先将样本文件named.localhost复制到long.com.zone,再对long.com.zone编辑修改
②创建192.168.10.zone反向区域文件
反向区域文件位于/var/named目录下,为编辑方便可先将样本文件named.loopback复制到192.168.10.zone,再对192.168.10.zone编辑修改
Ⅳ.设置防火墙放行,设置主配置文件和区域文件的属组为named
Ⅴ.重启DNS服务,并加入开机自启
DNS客户端的配置非常简单,假设本地首选DNS服务器的IP地址为192.168.10.1,备用DNS的服务器IP地址为192.168.10.2,则DNS客户端设置如下。
1.配置Windows客户端
打开"Internet协议(TCP/IP)"属性对话框,输入以下DNS服务器的IP地址即可
2.配置Linux客户端(ip地址192.168.10.2)
在linux系统中修改/etc/resolv.conf文件来设置DNS客户端
BIND软件包提供了三个DNS测试工具,nslookup,dig和host。
1.nslookup命令<前提是客户端与服务端通信畅通>
2.dig命令
3.host命令
//正向查询主机IP地址
[root@localhost~]#host www.long.com
//反向查询IP地址对应的域名
[root@localhost~]#host 192.168.10.3
//查询不同类型的资源记录配置,-t参数后可以为SOA,MX,CNAME,A,PTR等
[root@localhost~]#host -t NS long.com
//列出整个long.com域的信息
[root@localhost~]#host -l long.com
//列出与指定主机资源记录相关的详细信息
[root@localhost~]#host -a web.long.com