DNS产生的背景
客户端要访问某服务器的服务,需要知道其IP地址。
IP地址,以达内慕课网为例:203.107.45.167
客户端访问—203.107.45.167—>网页服务器
存在问题:IP地址不好记。
DNS服务器提供解析 域名<——>IP 的功能。
客户端访问— tmooc.cn—>DNS服务器—203.107.45.167—>网页服务器
DNS是什么
(Domain Name System)域名系统
端口:53 协议:TCP/UDP
它有一个将域名和IP地址相互映射的分布式数据库
DNS的功能
能够使人更方便地访问互联网
两种解析:
正向解析: 域名 ——> IP 应用场景:用户访问网站
反向解析: IP ——> 域名 应用场景:邮件域检测
客户端使用域名获取IP地址的过程
1.查询本机缓存,优先级最高。曾经解析过的域名缓存有可能会存在系统中。浏览器缓存——>系统DNS缓存
2.查询HOSTS。可以手动添加域名和IP地址的映射关系。
3.通过网络发送解析请求。当以上两个步骤都没有找到想要的信息,就尝试找DNS服务器。(路由器中可能还有缓存)
递归查询:客户端发送请求,首选DNS服务器代为跑腿找IP。
迭代查询:客户端发送请求,首选DNS服务器告诉下一个该找哪个DNS服务器,客户端自己再去找。
DNS服务器分布式结构
根域名: 域名树的顶端,一个点”.”
一级域名: 通常表示类型、国家、组织,.cn .us…
二级域名: 通常表示组织、公司、个人, baidu.cn …
三级域名(子域名): 用于进一步划分域名, test.nb.cn …
所有的域名都必须要以点作为结尾,浏览器一般会自动补全
DNS服务器工具
BIND(Berkeley Internet Name Daemon)
–伯克利 Internet 域名服务
–主要执行程序:/usr/sbin/named
–DNS协议默认端口:53
–运行时的身份:named
主配置文件:/etc/named.conf #设置负责解析的域名
地址库文件:/var/named #完全合格的域名与IP地址对应关系
配置思路
1.装包
yum -y install bind(主程序) bind-chroot(牢笼政策,创建一个隔离的文件系统环境)
2.配置(注意权限)
主配置文件:/etc/named.conf
地址库文件:/var/named/<域名>.zone
3.启动服务
systemctl enable named --now
主配置文件:/etc/named.conf
其他设置不写就是默认
options {
directory "/var/named"; #定义地址库文件存放路径
};
zone " tedu.cn" IN { #定义负责的解析tedu.cn域名
type master; #权威主DNS服务器
file "tedu.cn.zone"; #地址库文件名称
};
地址库文件:/var/named/<域名>.zone
cp -p named.localhost <域名>.zone #在地址库路径复制模板,使用-p保持权限不变。
NS server #域名服务器记录:声明DNS服务器
server A 192.168.88.240 #正向解析记录
泛域名:
*(任意);域名.(FQDN);
A 192.168.1.$ (自动生成stu1-50的解析);
abc AAAA :: #IPV6正向解析记录
xyz CNAME abc #域名别名记录
客户端测试
1.在/etc/resolve.conf中写入dns服务器
nameserver <dns服务器ip地址>
2.测试指令
nslookup <域名>
host <域名>