首先,我们要知道DNS是什么,DNS(Domain Name System)是域名系统的英文系统,是一种组织成域层次结构和计算机和网络服务命名系统,用于TCP/IP网络。、
DNS实际上是域名解析协议,将域名转化为IP地址
在早期的域名解析的时候,是iana组织负责将域名和IP地址进行对应,并对其进行排列综合,形成了hosts文件,一个IP地址对应一个域名
我们可以进入/etc/hosts配置文件为www.baidu.com.域名配置192.168.241.123的IP地址;
hosts配置文件的优先级最高;
可以进入 /etc/nsswotch.conf? ?#可以修改DNS的优先级
将dns写在file前面?
通常识别主机的方式为主机名或者IP地址。人们更倾向于去记忆主机名,类似于www.baidu.com,而IP地址复杂且难记。为了解决这种问题,我们使用DNS域名解析服务,对IP地址进行解析,将可用的IP地址转化为域名,域名系统作为将域名和IP地址相互映射的一个分布式数据库,基于C/S架构,服务端口号为tcp53,udp53;实际上每台DNS域名解析服务器都只负责一个有限的范围(只负责自己范围内的解析)
正向解析:根据域名查找对应的IP地址
反向解析:根据IP地址查找对应的域名
DNS系统的分布式数据结构
上图展示了 DNS 服务器的部分层次结构,从上到下依次为根域名服务器、顶级域名服务器和权威域名服务器。域名和IP地址的映射关系必须保存在域名服务器中,供所有其他应用查询。
根域:“ . ”;全球根域服务器节点只有13个,10个在美国,1个在荷兰,1个在瑞典,1个在日本
顶级域名也称一级域名(Top Level Domain:tid);顶级域:“ .com ”
权限域名服务器也称组织与,国家域(.cn .ca? .hk? .tw);比如像.baidu就是权限域名服务器
本地域名服务器也称主机名,比如www就是主机名
最多可达127级域名
ICANN(The internet Corpora-tion for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理
根dns服务器只能解析 ?主机名 ?+ ?根域 ?;例如根域无法解析www.baidu.com.,只能解析com.,但是会告诉该地址,它的下一级地址可以解析baidu.com.
顶级域(一级域)的dns服务器只能解析 ?主机名 ?+ ?一级域 ? +根域 ?;例如www.baidu.com.
二级域的dns服务只能解析 ?主机名 ?+ ?二级域 ?+ ?一级域 ? +根域 ;例如www.baidu.com.
域名解析包含两种查询方式,分别是递归查询和迭代查询,两种查询方式都可以得到结果,但是递归只需要询问一次即可得到结果,迭代需要询问多次才可以得到结果。
DNS域名解析的次数和域名长度有关?
一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
一般情况下,本地的DNS服务器向其他DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询(需要自己手动)
假如我要访问www.baidu.com.服务器
1.首先看我本机的 /etc/hosts 文件,如果有的话直接访问,如果没有就去找你设置的缓存DNS服务器
2.如果缓存服务器有,直接反馈结果(递归)如果没有就需要迭代查询,直接去找根域服务
3.由于根域服务器只能解析根,无法解析www.baidu.com. ;但是,根域服务器会让你去找一级域服务器
4.一级域发现自己也解析不了,让你去找二级域
5.二级域发现这台服务器在自己的管理范围内,直接反馈结果给缓存服务器
6.缓存服务器再交给客户
权威DNS服务器,最后谁解析DNS,谁为权威服务器,最后解析成功的服务器为权威服务器
DNS服务器软件:bind,powerdns,dnsmasq,unbound,coredns
实验目的:在内网服务器上可以使用域名进行上网
安装bind的时候会自动生成一个名叫named的用户
安装完软件后? ?要找到两个东西 (1.配置文件位置? 2.主程序的位置)
rpm -qc 可以找到配置文件的位置
rpm -ql可以找到主程序的位置
?安装完软件后,要找到两个东西(1.配置文件位置;2主程序位置)
rpm -qc? #可以找到配置文件的位置
rpm -qc? #可以找到主程序的位置
其中,bind是安装包的名字,namde是程序的名字
named程序的主要文件:
/etc/named.conf ?#主配置文件
/etc/named.rfc1912.zones ?#子配置文件 ?域名配置文件
/var/named ? #程序库文件?
启动named程序的话 会先读取主配置文件
然后读取include包含的子配置文件
会出现如下报错
DNS解析使用的是TCP和UDP的53端口
修改监听端口为任意;修改权限为任意?
此时内网DNS服务器就搭好了