了解域名、域名系统及域名的解析过程以及Linux操作系统下DNS域名解析服务的搭建过程

1.什么是域名?什么是域名系统?
**域名系统DNS(Domain Name System)**是因特网使用的命名系统,互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串,DNS使用TCP和UDP的 53号端口。出于性能的考虑,DNS查询请求用UDP协议交互并且每个请求的大小小于512字节,但是如果返回的请求大小大于512字节,交互双方会协商使用TCP协议。
域名可以理解为人的名字,每个人都拥有一个唯一的身份证号码来标识身份,可是日常生活中并没有人利用你的身份证号码来称呼你,而是用你的名字来称呼你,这是因为身份证号码不便记忆,网络中也是如此,每台接入互联网的设备都拥有一个合法的IP地址,你要与哪台设备进行通讯你就得清楚这台设备的IP地址是多少,IP地址较少的话还好说,但是互联网中的设备千千万,如果你需要访问更多的设备,那么你就得记忆更多的IP地址,极其的不方便,所以我们就有了域名,方便我们记忆。那么为什么不叫“名字”而叫“域名”呢?这是因为在因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。
通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。
2.因特网中的域名结构:
由于因特网的用户数量较多,所以因特网在命名时采用的是层次树状结构的命名方法。任何一个连接在因特网上的主机或路由器,都有一个唯一的层次结构的名字,即域名(domain name)。这里,“域”(domain)是名字空间中一个可被管理的划分。
域名只是逻辑概念,并不代表计算机所在的物理地点,分为以下三大类:
(1)国家顶级域名:采用ISO3166的规定。如:cn代表中国,us代表美国,uk代表英国,等等。国家域名又常记为ccTLD(cc表示国家代码contry-code)。
(2)通用顶级域名:最常见的通用顶级域名有7个,即:com(公司企业),net(网络服务机构),org(非营利组织),int(国际组织),gov(美国的政府部门),mil(美国的军事部门)。
(3)基础结构域名(infrastructure domain):这种顶级域名只有一个,即arpa,用于反向域名解析,因此称为反向域名。

在这里插入图片描述
如上图所示便是倒树状的域名结构:
1)根域名服务器,定义了每台域名服务器的地址信息。
2)顶级域名服务器,管理在该顶级域名服务器注册的所有二级域名,相应的二级域名服务器管理在该二级域名服务器注册的所有三级域名,以此类推。
3)权限域名服务器,负责一个区的域名服务器,也就是最终提供给你域名解析的服务器。

扩展了解:
现如今全球一共投放13台根服务器,服务器主要用来管理互联网的主目录,全世界的13台根服务器,1台为主根服务器,放置在美国。其余12台均为辅根服务器,其中9台放置在美国,欧洲2台,位于英国和瑞典,亚洲1台,位于日本。所有根服务器均由美国政府授权的互联网域名与号码分配机构ICANN统一管理,负责全球互联网域名根服务器、域名体系和IP地址等的管理。这13台根服务器可以指挥Firefox或互联网 Explorer这样的Web浏览器和电子邮件程序控制互联网通信。换句话说——攻击整个因特网最有力、最直接,也是最致命的方法恐怕就是攻击根域名服务器了。
由于根服务器中有经美国政府批准的260个左右的互联网后缀(如.com、.net等)和一些国家的指定符(如法国的.fr、挪威的.no等),美国政府对其管理拥有很大发言权。
在与现有IPv4根服务器体系架构充分兼容基础上,由下一代互联网国家工程中心牵头发起的“雪人计划”于2016年在美国、日本、印度、俄罗斯、德国、法国等全球16个国家完成25台IPv6(互联网协议第六版)根服务器架设,事实上形成了13台原有根加25台IPv6根的新格局,为建立多边、民主、透明的国际互联网治理体系打下坚实基础。
相应组织了解:
IANA the internet Assigned Numbers Authority 互联网数字分配机构,负责分配IP地址
ICANN the internet Corporation for Assigned names and Nunbers 互联网名称与数字地址分配机构,负责分配域名与其相应的IP地址
域名解析的发展历程:
1)本地主机的Hosts文件编辑,缺点是需要访问一个新的域名就得添加一条信息,需要不停地进行添加,极其不方便。
2)周期性任务,在指定时间自动的去写(自动化),缺点是不能及时的访问自己需要访问的域名。
3)server上存储大量的域名及IP对应关系的信息,缺点是存储的东西太多影响服务器的性能。
4)分布式数据库,全球各地分放就近进行域名解析。
域名解析过程分析:

查找方式分为两种:1)迭代查询;2)递归查询。
在这里插入图片描述
**迭代查询:**主机的域名请求发送到本地的域名服务器上,本地域名服务器首先查看自己能不能对这个域名信息进行解析,如果可以解析的话,将解析后的结果返回给主机,如果解析不了的话,由本地域名服务器来代理主机,向根域名服务器发起请求,根域名将返回一个该域名所处域的顶级域名服务器的地址给本地域名服务器,本地域名服务器在向顶级域名服务器发起请求得到权限域名服务器的地址,最终向权限域名服务器发起请求得到相应结果,最终本地域名服务器将结果返回给请求主机。
递归查询: 主机的域名请求发送到本地的域名服务器上,本地域名服务器首先查看自己能不能对这个域名信息进行解析,如果可以解析的话,将解析后的结果返回给主机,如果解析不了的话,本地域名服务器向上级服务器发起查询,上级服务器查找成功的话直接返回结果,不成功则代理本地域名服务器继续向上发起请求,直至请求到权限域名服务器得到相应的结果,再一级一级的返回解析结果,直至返回给请求主机。
返回的结果是最佳查询点的IP地址或者域名对应的主机的IP地址。
现实生活中我们的解析过程其实是分为两段进行的,一段递归,一段迭代:
在这里插入图片描述
如上图所示,我们的主机到本地的DNS服务器一般采用递归的查询过程,而从本地服务器到其他的DNS服务器将采用的是迭代查询的过程进行查询,因为我们全世界的根服务器也就那么几十台,而整个互联网中的设备是太多太多的,如果采用递归的查询过程那么都向根服务器发起请求并让根服务器去代理你进行查询,就会增大根服务器的工作压力,影响根服务器的性能。
举个例子来看一下:
假设你现在处于电信网之中,现在你要对www.baidu.com这个域名发起请求,那么首先从浏览器的缓存中开始查找,没有的话,查找计算机本地的 Hosts 文件,没有的话再根据DNS域名主机服务器的IP地址,就近访问该运营商本地所对应的DNS服务器(递归)。如果运营商本地DNS服务器上要是没有的话,由本地的DNS服务器发起请求,一般先会发给其他运营商同级别的DNS服务器进行查询,查询不到的话在主机向上查询,一般到不了根域,最终将结果返回给客户端(迭代)。
域名与IP地址的对应关系:
一个IP地址可以对应多个域名;
一个域名不能对应多个IP(解析时存在问题)。

114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用,干净无广告,解析成功率相对来说更高,国内用户使用的比较多,而且速度相对快、稳定,是国内用户上网常用的DNS,8.8.8.8是GOOGLE公司提供的DNS,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。
3.Linux操作系统下DNS服务的搭建:
3.1关闭Linux的防火墙及SELinux:

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

3.2安装DNS服务相关的应用程序包:

[root@localhost ~]# yum install bind –y

3.3了解一下DNS服务相关的一些配置目录:

#进程的工作属性及指定解析的区域 /etc/named.conf
#密钥文件 /etc/rndc.key
#密钥相关的配置文件 /etc/rndc.conf
#区域数据文件,需要手动创建,比如A.haha.com,B.haha.com指定对应的主机能解析成哪些IP或哪些域名 /var/named/zidingyi.zone
#配置检查脚本工具 /usr/sbin/named-checkconf
#区域配置检查工具 /usr/sbin/named-checkzone
#区域文件dns数据库 /var/named/named.ca

3.4搭建openlab.com域的DNS服务器:

[root@localhost ~]# vim /etc/named.conf
options {
        listen-on port 53 { 192.168.192.128; };      //定义监听端口及DNS服务器的IP地址,如果所有地址都监听则只写端口
        directory "/var/named";                      //定义数据文件的目录
};
zone "openlab.com" IN {                              //定义正向解析(域名到IP)的区域,一个zone只能定义一个区域
        type master;
        file "named.openlab.com";                    //定义数据文件名
};
zone "192.168.192.in-addr.arpa" IN {                 //定义反向解析(IP到域名)的区域
        type master;
        file "named.192.168.192";
};
[root@localhost ~]# vim /var/named/named.openlab.com             //编辑正向解析的资源记录
$TTL 1D
@(代表域)       IN(类)      SOA(起始授权记录)     @(起个主机名,可以自定义,@表示引用主配置文件中的named.openlab.com)      
                                                              admin.admin.com.(管理员的邮箱地址,必须要写根域) (
                                                              2019012301
                                                              1D
                                                              1H
                                                              1W
                                                              3H)
        IN      NS      ns.openlab.com.
ns      IN      A       192.168.192.128
www     IN      A       192.168.192.128

资源记录包含的元素:

owner-name          TTL             class           type                 data                            邮箱
  域名          资源记录生存时间      INTERNET     A/SOA/AAAA/PTR       主机名(主机名+域名) 
@表引用                         IN INTERNET输入标准    起始授权记录                          服务器所对应的主域名服务器  管理员邮件以.代替常见的类型的@
TTL(time to live)生存时间表示记录在DNS服务器上的缓存时长,一般提做全局变量使用。

资源记录中的type类型:

SOA(起始授权记录) 记录提供有关dns区域工作方式的信息 -----具体负责哪个区域的解析;
NS 将自己的域名映射到DNS将域名最终映射到哪一台主机(由哪一台主机去解析当前所定义的域主机);
A (ipv4地址记录) 资源记录将主机名映射到ipv4地址;
CNAME (规范名称)记录域别名 ;
MX 邮件交换记录 ;
PTR指针记录 将IPV4 IPV6地址映射到主机名 (用于反向DNS);
AAAA(IPV6 地址记录) 资源记录(四A记录)将主机名映射到ipv6地址。

SOA起始授权记录中五种时间相关的信息,这五个时间在DNS的主服务器与从服务器间进行主服务器上创建新的信息,从服务器进行增量更新同步很重要:

serial number: 序列号 定义当前使用的数据序列号 sn遵循“年+月+日+编号” ;
refresh:定义检查间隔时间 (上次和这次变化的时间);
retry: 重试时间 < 检查时间> ;
expire: 过期时间 缓存放多久过期 ;
nagative enswer TTL: 否定答案的缓存时长 (如果解析在规定时间里没有解析到答案会否定解析不到) 时间单位:M(分钟)、H(小时)、D(天)、W(周),默认单位是秒。

[root@localhost ~]# vim /var/named/named.192.168.192          //编辑反向解析的资源记录
$TTL 1D
@       IN      SOA     @       admin.admin.com. (
                                                 2019012302
                                                 1D
                                                 1H
                                                 1W
                                                 3H
                                                 )
        IN      NS      ns.openlab.com.
128     IN      PTR     ns.openlab.com.
128     IN      PTR     www.openlab.com.

3.5配置文件编辑完成后重启DNS服务:

[root@localhost ~]# systemctl restart named

3.6重启完成后,再开一台虚机,设置该主机网卡对应的DNS地址为你DNS服务器的DNS服务监听的地址,如果服务器上监听所有地址的话,客户端编辑为缺省地址,设置完成后重启网卡,通过以下两条命令进行测试:

Dig -t + 需要解析的域名
nslookup + 需要解析的域名

也可利用DNS+HTTP进行网页访问的测试,注意配置完成后一定要修改测试机的DNS,HTTP服务的配置步骤参见"Linux操作系统下HTTP服务及简单的服务配置解析"。
注意:
在Linux操作系统下,我们安装DNS服务应用程序包名是bind,而对DNS服务进行配置、重启的服务名是named。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值