详解Linux基础网络服务之DNS域名解析

来源:互联网 发布:好用的网络电话软件 编辑:程序博客网 时间:2024/05/24 06:53

前言:
整个Internet大家庭中连接了数以亿计的服务器、个人主机,其中大部分的网站、邮件服务等服务器都使用了域名形式的地址,如www.baidu.com、mail.163.com等。很显然这种地址形式都比使用119.75.217.109、202.108.33.74的IP地址形式更加直观,更容易被用户记住。但是这数以亿计的域名是怎样转换成IP进行连接通信的呢?

DNS域名结构图

这里写图片描述

DNS域名解析服务

(1)DNS系统的作用
(2)BIND的安装和控制
(3)构建缓存域名服务器
(4)子域
(5)构建主从DNS域名解析服务器
(6)构建智能DNS域名解析服务器
(7)DNS排错

——————————————————————————————————————————————————————————————————

一、DNS系统的作用

1、DNS服务器概述
  FQND格式是完整的域名格式,常在域名后面加”.”(根域),如:www.baidu.com.
  DNS系统在网络中的作用就是维护这一个地址数据库,其中纪录了各种主机域名;与IP地址
的对应关系,以便为客户程序提供正向或返乡的地址查询服务,即正向解析与反向解析。
  (1)正向解析:根据域名查IP地址,是DNS服务常用的基本功能。
  (2)反向解析:根据IP查域名,不是很常用,应用于例如反垃圾邮件的验证等
每台DNS服务器都复制管理一个有限范围(一个或几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为“zone”(区域)。
2、DNS服务器的常见分类
  根据地址解析的方向不同,DNS区域相应的分为正向区域(包含域名到IP地址的解析纪录)和
反向区域(包含IP地址到域名的解析纪录)。
  根据管理的区域地址数据的来源不同,DNS系统可以分为不同的类型:
  (1)缓存域名服务器
    只提供域名解析结果的缓存功能,目的在于提高数据查询速度和效率,但是没有自己控
制的区域数据。构建缓存域名服务器时,必须设置根域名或指定其他DNS服务器作为解析来源。
  (2)主域名服务器
    维护某一个特定DNS区域的地址数据库,对其中的解析纪录具有自主控制权,是指定
区域中唯一存在的权威服务器、官方服务器。构建主域名服务器时,需要自行建立所有负责区域的地址数据
文件
  (3)从域名服务器
    与主域名服务器提供完全相同的DNS解析服务,通常用于DNS服务器的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询过结果都是一样的。
以上所述主、从服务器的角色,只是针对某一特定的DNS区域来说的。例如,同一台DNS服务器,可以是“.chinaunix.net”区域的主域名服务器,同时也可以是“.cublog.cn”区域的从域名服务器。
3、DNS服务器的查询模式
  (1)DNS服务器递归查询过:当客户机向DNS服务器发出解析请求,DNS服务器从服务器本地的
高速缓存中查询出结果,反馈给客户机,此过程称为递归查询过,即Client-Server。
  (2)DNS服务器迭代查询:当客户机向DNS服务器发出解析请求,DNS服务器从服务器本地的
高速缓存中查询发现没有结果,此时该DNS服务器以DNS服务器以DNS客户的身份向其他DNS服务器发送解析请求或向根域名服务器发送请求,此过程陈伟迭代查询,即Server-Server。

这里写图片描述

——————————————————————————————————————————————————————————————————

二、BIND的安装和控制

1、RPM包的主要作用
  bind:提供了域名服务器的主要程序及相关文件
  bind-utils:提供了对DNS服务器的测试工具程序,如nslookup、dig等
  bind-libs:提供了bind、bind-utils需要使用的库函数
  bind-chroot:为BIND服务提供一个伪装的根目录(将/var/named/chroot文件夹作为BIND的根目录)以提高安全性。也称为jail(监牢)机制
  BIND安装以为,会自动增加一名为named的系统服务
安装示例:

[root@localhost ~]#rpm -qa |grep -w bindbind-license-9.9.4-37.el7.noarchbind-libs-lite-9.9.4-37.el7.x86_64bind-libs-9.9.4-37.el7.x86_64bind-utils-9.9.4-37.el7.x86_64bind-chroot-9.9.4-37.el7.x86_64bind-9.9.4-37.el7.x86_64[root@localhost ~]#yum install -y bind bind-utils bind-chroot

2、主配置文件/etc/named.conf

[root@localhost ~]#cd /etc/[root@localhost ~]#vim named.confoptions {   #全局配置        listen-on port 53 { 127.0.0.1;localhost; };  #监听端口绑定的IP,这里显示绑定了本机所有IP        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;};   #允许到本机查询解析纪录的主机,any表示所有主机都可以在本机查询解析纪录        allow-transfer {none;};        recursion yes;        dnssec-enable no;        dnssec-validation no;        /* Path to ISC DLV key */        bindkeys-file "/etc/named.iscdlv.key";        managed-keys-directory "/var/named/dynamic";        pid-file "/run/named/named.pid";        session-keyfile "/run/named/session.key";};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";

保存退出

[root@localhost ~]#named-checkconf   /etc/named.conf  #语法检查,/etc/named.conf可写可不写

3、区域数据文件
(1)区域数据文件的作用
用于存放某个DNS区域的地址解析纪录(正向或反向)

[root@localhost ~]#cd /var/named/[root@localhost named]# lschroot    data     named.ca     named.localhost  slavesdynamic  named.empty  named.loopback[root@localhost named]# vim /etc/named.rfc1912.zones zone "zym.com" {        type master;    #指明此区域数据的主是com,且一个区域的主只有一个        file "zym.com.zone";   #区域数据文件的文件名};
[root@localhost named]# vim zym.com.zone   #创建一个区域数据文件zym.com.zone$TTL 1D  #正向解析数据的缓存生存周期,1D表示1天@ 2D IN SOA dns1 admin.zymcom. (   #@表示域名,SOA认证授权(主、从服务器),dns1当前DNS解析服务器名,admin.zym.com.邮箱地址                                000001  #serial序号,手动更改后,需要把版本号数值增大,主从同步看数据变没变,首先看序号 ,序号是整数数值,不能超过10位,启始数值随便定。                                 1D  #refresh 更新间隔时间,主从同步,隔一段时间就需要同步一次                                1H  #retry 更新失败再次尝试间隔时间,这里表示1小时                                1W  #expire 若一直更新失败,那么到1周后放弃从服务器提供解析服务                                3H  #minimum 客户端请求解析失败缓存时间,在此时间内,服务器不再查询,直接将之前查询的结果返回给用                                )                NS              dns1   #NS指明,当前作用域是由dns1提供了DNS服务器,纪录了所有dns服务器zhang        NS              dns2   #dns2为dns1指派DNS子域名解析服务器,zym为dns2的域名www           CNAME       websrv     #www为websrv域名的别名websrv       A               172.18.24.7   #域名为websrv的主机或服务器的IP为172.18.24.7,A指明IP为IPv4类型 dns2          A               172.18.24.26   #dns2服务器的ip地址为172.18.24.6[root@localhost named]# named-checkzone zym.com /var/named/zym.com.zone  #区域数据文件修改后检查更新zone com.zone/IN: loaded serial 000001OK

(4)、区域数据配置文件的特殊应用
a、基于域名解析的负载均衡
同一个域名对应到多个IP地址

www    A       172.18.24.15www    A       172.18.24.16www    A       172.18.24.17

b、泛域名解析:避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
找不到精确对应的A纪录时,使用“*”进行匹配
* A 172.18.24.18
——————————————————————————————————————————————————————————————————

三、构建缓存域名服务器

缓存域名服务器通常假设在公司的局域网内,主要目的是提高域名接续的速度,减少对互联网的出口流量。
在一个小型企业的内部网络中,可单独建立一台(或集成在网关主机中)缓存域名服务器,为各部门的员工计算机
提供DNS解析服务。

这里写图片描述

——————————————————————————————————————————————————————————————————

四、子域

子域授权:每个域的名称服务器,都是通过其上级名称服务器在解析库进行授权
类似根域授权tld:

.com.IN NS ns1.com..com.IN NSns2.com.ns1.com. IN A 2.2.2.1ns2.com. IN A 2.2.2.2

magedu.com. 在.com的名称服务器上,解析库中添加资源记录

magedu.com. IN NS ns1.magedu.com.magedu.com. IN NS ns2.magedu.com.magedu.com. IN NS ns3.magedu.com.ns1.magedu.com. IN A 3.3.3.1ns2.magedu.com. IN A 3.3.3.2ns3.magedu.com. IN A 3.3.3.3

glue record:粘合记录,父域授权子域的记录

——————————————————————————————————————————————————————————————————

五、构建主从DNS域名解析服务器

主从域名服务器概述
  主域名服务器通常架设在internet环境中,提供某一个域几个域内的主机名与IP地址的查询服务。为了分担域名查询的压力、提供区域数据的备份,有时还会另外架设一台从域名服务器,与主域名服务器同时提供服务。
  与主域名解析服务器提供完全相同的DNS解析服务,通常用于DNS服务的热备份。对客户机来说,无论使用主域名服务器还是从域名服务器,查询结果都是一样的。
  搭建主从DNS域名解析服务器在我另外一篇博客http://blog.csdn.net/zhangym199312/article/details/78058230里写的很详细,感兴趣的朋友可以去参考指正
  
——————————————————————————————————————————————————————————————————

六、构建智能DNS域名解析服务器

1、智能DNS域名解析服务器概述
  (1)智能DNS是域名服务再业界首创的智能解析服务。能自动判断访问者的IP地址并解析出对应的IP地址,使网通用户会访问到网通服务器,电信用户会访问到电信服务器。
  (2)智能DNS就是根据用户的来路,自动智能化判断来路IP返回给用户,而不需要用户进行选择。
  (3)比方一个企业的站点三个运营商的带宽都有:电信、网通、移动,同样有三个来自不同运营商网络的访问用户,那电信访问企业网址的时候,智能DNS会自动根据IP判断,再从电信返回给电信用户,其他的也同理。
  (4)但也会遇到一个问题,就是三个用户所使用的望楼运营商的DNS同步了解析企业站点所用的智能DNS,不然用户有可能无法访问到企业站点,一般会出现在智能DNS刚生效的时候,这种情况下一般可以请求网络运营商主动同步智能DNS的解析表;或者等待最多72小时,DNS会自动同步。
2、智能DNS服务器拓扑图

这里写图片描述

——————————————————————————————————————————————————————————————————

七、DNS排错

常见的错误,以及解决方法如下:

#dig A example.com
•; DiG9.9.4-RedHat-9.9.4-14.el7 A example.com
•;; global options: +cmd
•;; Got answer:
•;; HEADER opcode: QUERY, status: NOERROR, id: 30523
•…
•SERVFAIL:Thenameserverencountered a problem while processing the query.
•可使用dig +trace排错,可能是网络和防火墙导致
NXDOMAIN:The queried name does not exist in the zone.
•可能是CNAME对应的A记录不存在导致
REFUSED:The nameserverrefused the client’s DNS request due to policy restrictions.
•可能是DNS策略导致
NOERROR不代表没有问题,也可以是过时的记录
•查看是否为权威记录,flags:aa标记判断
•被删除的记录仍能返回结果,可能是因为*记录存在
•如:*.example.com.INA172.25.254.254
•注意“.”的使用
•避免CNAME指向CNAME记录,可能产生回环
test.example.com. IN CNAME lab.example.com.
lab.example.com. IN CNAME test.example.com.
•正确配置PTR记录,许多服务依赖PTR,如sshd,MTA
•正确配置轮询round-robin记录

总结:

原创粉丝点击