域名系统DNS服务

   日期:2024-12-26    作者:mal20121212 移动:http://oml01z.riyuangf.com/mobile/quote/33510.html

域名系统DNS服务

当前TCP/IP网络中的设备之间进行通信,是利用和依赖于IP地址实现的.但数字形式的IP地址是很难记忆的.当网络设备众多,想要记住每个设备的IP地址,可以说是"不可能完成的任务".那么如何解决这一难题呢?我们可以给每个网络设备起一个友好的名称,如:www.kobe.org,这种由文字组成的名称,显而易见更要容易记忆.但是计算机不会理解这种名称的,我们可以利用一种名字解析服务将名称转化成(解析)成IP地址.从而我们就可以利用名称来直接访问网络中设备了,除此之外还有一个重要功能,利用名称解析服务可以实现主机和IP的解耦,即:当主机IP变化时,只需要修改名称服务即可,用户仍可以通过原有的名称进行访问而不受影响.
实现此服务的方法是多样的.如下面所述:
本地名称解析配置文件:hosts

 
 
  • 根域
  • 一级(顶级)域名:Top Level Domain:tld
    三类:组织域,国家域(.cn,.ca,.hk,.tw),反向域
    com,edu,mil,gov,net,org,int,arpa
  • 二级域名:magedu.com
  • 三级域名:study.magedu.com
  • 最多可达到127级域名
  • 递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机.此查询的源和目标保持不变,为了查询结果只需要发起一次查询
  • 迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止.此查询的源不变,但查询的目标不断变化,查询结果一般需要发起多次查询
    范例:whois 查询域名信息
 
 

Name Server,域内负责解析本域内的名称的DNS服务器
IPv4的根服务器:全球共13个负责解析根域的DNS服务器,美国10个,荷兰1个,瑞典1个,日本1个
IPv6的根服务器:全球共25个,中国1主3从,美国1主2从

  • FQDN --> IP 正向解析
  • IP --> FQDN 反向解析
    注意:正反向解析是两个不同的名称空间,是两颗不同的解析树
 

范例:在windos上查询dns

 
 
 
  • 主DNS服务器
  • 从DNS服务器
  • 缓存DNS服务器(转发器)

2.1.1 主DNS服务器

管理和维护所负责解析的域内解析库的服务器

2.1.2 从DNS服务器

从主服务器或从服务器"复制"(区域传输)解析库副本

  • 序列号:解析库版本号,主服务器解析库变化时,其序列递增
  • 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
  • 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
  • 过期时长:从服务器联系不到主服务器时,多久后停止服务
  • 通知机制:主服务器解析库发生变化时,会主动通知从服务器
  • 完全传输:传输整个解析库
  • 增量传输:传输解析库变化的那部分内容
  • 正向:FQDN(Fully Qualified Domain Name完全合格的域名) --> IP
  • 反向:IP --> FQDN
  • 正向区域
  • 反向区域
  • 肯定答案:存在对应的查询结果
  • 否定答案:请求的条目不存在等原因导致无法返回结果
  • 权威答案:直接由存有此查询结果的DNS服务器(权威服务器)返回的答案
  • 非权威答案:由其它非权威服务器返回的查询答案

区域解析库:由众多资源记录RR(Resource Record)组成
记录类型:SOA,A,AAAA,PTR,NS,CNAME,MX,TXT

  • SOA:Start Of Authority,起始授权记录.一个区域解析库有且仅有一个SOA记录,必须位于解析库的第一条记录
  • A:internet Address,作用,FQDN --> IP
  • AAAA:FQDN --> IPv6
  • PTR:PoinTeR,IP --> PTR
  • NS:Name Server,专用于标记当前区域的DNS服务器
  • CNAME:Canonical Name,别名记录
  • MX:Mail eXchanger,邮件交换器
  • TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件记录),https验证等,如下示例:
 

2.6.1 资源记录定义

 

注意:
1.TTL可从全局继承
2.使用"@"符号可用于引用当前区域的名字
3.同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
4.同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过不同的名字可以找到同一个主机

2.6.2 SOA记录

name:当前区域的名字,例如"magedu.org."
value:有多部分组成
注意:
1.当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字
2.当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换
例如:admin.magedu.org
3.主从服务区域传输相关定义以及否定的答案的统一的TTL
范例:

 

2.6.3 NS记录

name:当前区域的名字
value:当前区域的某DNS服务器的名字,例如:ns.magedu.org.
注意:
1.相邻的两个资源记录的name相同时,后续的可省略
2.对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
3.一个区域可以有多个NS记录
范例:

 

2.6.4 MX记录

name:当前区域的名字
value:当前区域的某邮件服务器(smtp服务器)的主机名
注意:
1.一个区域内,MX记录可由多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小,优先级越高
2.对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
范例:

 

2.6.5 A记录

name:某主机的FQDN,例如:www.magedu.org.
value:主机名对应主机的IP地址
避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
范例:

 
 

2.6.6 AAAA记录

name:FQDN
value:IPv6

2.6.7 PTR记录

name:IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1;而有特定后缀:in-addr.arpa,所以完整写法为:4.3.2.1.in-addr.arpa.
value:FQDN
注意:网络地址及后缀可省略;主机地址依然需要反着写
例如:

 

2.6.8 CNAME别名记录

name:别名的FQDN
value:真正名字的FQDN
例如:

 
 

每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权,类似根域授权tld
glue record:粘合记录,父域授权子域的记录
范例:

 
 
 
 

DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns

yum list all bind*

  • bind:服务器
  • bind-utils:客户端
  • bind-libs:相关库
  • biind-chroot:安全包,将dns相关文件放至/var/named/chroot/
    范例:安装bind软件
 
 
  • BIND主程序:/usr/sbin/named
  • 服务脚本和Unit名称:/etc/rc.d/init.d/named,/usr/lib/systemd/system/named.service
  • 主配置文件:/etc/named.conf,/etc/named.rfc1912.zones,/etc/rndc.key
  • 管理工具:/usr/sbin/rndc:remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程,提供辅助性的管理功能;953/tcp
  • 解析库文件:/var/named/ZONE_NAME.ZONE
    注意:
    (1)一台物理服务器可同时为多个区域提供解析
    (2)必须要有根区域文件;named.ca
    (3)应该有两个(如果包括ipv6的,应该更多)实现localhost和本地回环地址的解析库
  • 全局配置:options {};
  • 日志子系统配置:logging {};
  • 区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
    zone “ZONE_NAME” IN {};
    注意:
  • 任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上
  • 缓存名称服务器的配置:监听外部地址即可
  • dnssec:建议关闭dnssec,设为no

1.在主配置文件中定义区域

 

2.定义区域解析库文件
内容包括:

  • 宏定义
  • 资源定义
    范例:区域数据库
 

范例:抓包观察查询结果

 
 
 
 
 
 
 
 

4.5.1 dig命令

dig只用于测试dns系统,不会查询hosts文件进行解析
命令格式:

 

范例:

 

4.5.2 host命令

命令格式:

 

范例:

 

4.5.3 nslookup命令

nslookup 可以支持交互和非交互式两种方式进行
命令格式:

 

交互式模式:
nslookup>
server IP:指明使用哪个DNS server进行查询
set q=RR_TYPE:指明查询的资源记录类型
NAME:要查询的名称

4.5.4 rndc命令

利用rndc工具可以实现管理DNS功能
rndc 监听端口:953/tcp
命令格式:

 
 

4.6.1 实验目的

 

4.6.2 环境要求

 

4.6.3 前提准备

 

4.6.4 实现步骤

4.6.4.1 在DNS服务器端安装bind
 
4.6.4.2 修改bind配置文件
 
4.6.4.3 DNS区域数据库文件
 
4.6.4.4 检查配置文件和数据库文件格式,并启动服务
 
4.6.4.5 实现WEB服务
 
4.6.4.6 在客户端实现测试
 
4.6.4.7 扩展
 
 
 

动态更新:可以通过远程更新区域数据库的资源记录
实现动态更新,需要在指定的zone语句块中
allow-update { any; };

范例
chmod 770 /var/named
setsebool -P named_write_master_zones on #此命令必须要开启SELinux服务
nsupdate
>server 127.0.0.1
>zone kobe.local
>update add ftp.kobe.local 88888 IN A 8.8.8.8
>send
>update delete www.kobe.local A
>send
#测试
dig ftp.kobe.local @127.0.0.1
ls -l /var/named/kobe.local.zone.jnl
cat /var/named/kobe.local.zone

反向区域:即将IP反向解析为FQDN
区域名称:网络地址反写.in-addr.arpa.
示例
172.16.100. --> 100.16.172.in-addr.arpa.
(1)定义区域
zone “ZONE_NAME” IN {
type {master|slave|forward};
file “网络地址.zone”
};
(2)定义区域解析库文件
注意:不需要MX,以PTR记录为主
范例
$TTL 1D
$ORIGIN 16.172.in-addr.arpa.
@ IN SOA ns1.kobe.local. admin.kobe.local. (
1
1H
5M
7D
1D )
IN NS ns1.kobe.local.
1.2 IN PTR www.kobe.local.
3.4 IN PTR mx1.kobe.local.

 
 
 
 

只有一台主DNS服务器,存在单点失败的问题,可以建立主DNS服务器的备份服务器,即从服务器来实现DNS服务器的容错机制。从服务器可以自动和主服务器进行单向的数据同步,从而和主DNS服务器一样,也可以对外提供查询服务,但从服务器不提供数据更新服务。

1.应该为一台独立的名称服务器
2.主服务器的区域解析库文件中必须有一条NS记录指向从服务器
3.从服务器只需要定义区域,而无需提供解析库文件;解析库文件应该放置于/var/named/slaves目录中
4.主服务器得允许从服务器作区域传送
5.主从服务器时间应该同步,可通过ntp进行
6.bind程序的版本应该保持一致;否则,应该从高,主低

格式
zone “ZONE_NAME” IN {
type slave;
file “slaves/ZONE_NAME.zone”;
};

6.3.1 实验目的

 

6.3.2 环境要求

 

6.3.3 前提准备

 

6.3.4 实现步骤

6.3.4.1 主DNS服务器端配置(参看前面案例)
 
6.3.4.2 从DNS服务器配置
 
6.3.4.3 客户端测试主从DNS服务架构
 
 
 

将子域委派给其它主机管理,实现分布式DNS数据库
正向解析区域子域方法
范例
shanghai.kobe.local. IN NS ns1.ops.kobe.local.
shanghai.kobe.local. IN NS ns2.ops.kobe.local.
shenzhen.kobe.local. IN NS ns1.shenzhen.kobe.local.
shenzhen.kobe.local. IN NS ns2.shenzhen.kobe.local.
ns1.shanghai.kobe.local. IN A 1.1.1.1
ns2.shanghai.kobe.local. IN A 1.1.1.2
ns1.shenzhen.kobe.local. IN A 1.1.1.3
ns2.shenzhen.kobe.local. IN A 1.1.1.4

7.2.1 实验目的

7.2.2 环境要求

 

7.2.3 前提准备

 

7.2.4 实现步骤

7.2.4.1 在父域DNS服务器上实现主kobe.local域的主DNS服务
 
7.2.4.2 实现子域的DNS服务器
 
7.2.4.3 在父域和子域的web服务器上安装httpd服务
 
7.2.4.4 客户端测试
 
 
 

利用DNS转发,可以将用户的DNS请求,转发至指定DNS服务器,而非默认的根DNS服务器,并将指定服务器查询的返回结果进行缓存,提高效率。
注意
1.被转发的服务器需要能够为请求者做递归,否则转发请求不予进行
2.在全局配置块中,关闭dnssec功能
dnssec-enable no;
dnssec-validation no;

8.2.1 全局转发

对非本机所负责解析区域的请求,全转发给指定的服务器
在全局配置块中实现
options {
forward first|only;
forwarders { ip; };
};

8.2.2 特定区域转发

仅转发对特定的区域的请求,比全局转发优先级高
zone “ZONE_NAME” IN {
type forward;
forward first|only;
forwarders { ip; };
};

first:先转发至指定的DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询
only:先转发至指定的DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询

8.3.1 实验目的

 

8.3.2 环境要求

 

8.3.3 前提准备

 

8.3.4 实现步骤

8.3.4.1 实现转发(只缓存)DNS服务器
 
8.3.4.2 实现主DNS服务器
 
8.3.4.3 web服务器配置
 
8.3.4.4 在客户端测试

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号