引言
该文主要用于自己记录学习笔记,具体内容有包含整体概括,部分重要文件的详解,DNS或许会遇到的面试题等,遇到新的知识点会继续补充
DNS主要配置文件组
- dns服务名:bind
- /etc/hosts:本地域名解析文件
- /etc/resolv.conf:转化程序配置文件,告诉程序使用哪一个域名服务器来解析域名
- /etc/named.conf:bind主配置文件,设置根域名区域,是否开启递归查询等
- /var/named/named.ca:根域名配置服务器指向文件
- /etc/named.rfc1912.zones:区块设置文件
/etc/named.conf
- acl:定义IP地址的访问控制清单
- include:其他的配置文件包含进来
- key:定义授权的安全密钥
- logging:定义日志内容和位置
- options:定义全局选项和默认值
- server:定义远程服务的特征
- zone:定义一个区域文件
/etc/named.rfc1912.zones
vim /etc/named.rfc1912.zones
zone "wp.net" { #设置区域
type master; #指定为主域服务器
file "wp.net.zone"; #指定区域的zone文件名
allow-update { none; }; #是否允许辅助dns更新 allow-updata { <IP LIST>; };
};
zone "wp.info" {
type forward; #设置转发域
forward only; #仅转发此域
forwarders { 192.168.1.12; }; # 转发至其余从域名服务器
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { #IPV6的PTR配置文件设定
type master;
file "named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN { #配置反向代理区域
type master;
file "named.loopback";
allow-update { none; };
};
DNS的资源记录
SOA记录
当有且仅有一台NS域名服务器时,SOA的作用并不明显,当有多台NS域名服务器之后,SOA资源记录用于指定多台NS服务器之间的主服务器,一个DNS区域只能有且仅有一条SOA记录
NS记录
NS记录也称服务器记录,用于说明这个区域有哪些DNS服务器负责解析,一个DNS区域可以有多个NS记录
A记录
A记录是IPV4解析的记录,是应用最广的记录,是域名和IP的对应关系
AAAA记录
AAAA记录是IPV6解析的记录,是域名和IP的对应关系
CNAME记录
CNAME记录用来给域名起别称
MX记录
全程是邮件交换记录,在使用邮件服务器的时候,MX记录是不能缺少的,比如A用户向B用户发送一封邮件,那么他需要向DNS查询B的MX记录,DNS在定位到了B的MX记录后反馈给A用户,然后A用户把邮件投递到B用户的MX记录服务器里
PTR记录
反向解析的记录,是IP和域名的对应关系,用于把IP解析为域名,只能配置在反向代理区域
资源记录的格式
name [TTL] IN type value
TTL可以定义在文件头,全局继承
@可用于引用当前区域的名字
当浏览器访问一个域名之后的查询过程
- 在浏览器输入网址www.baidu.com
- 查询浏览器缓存,有则返回,反之进行下一步
- 查询操作系统缓存,有则返回,反之进行下一步
- 查询配置文件/etc/hosts,有则返回,反之进行下一步
- 查询本地dns服务器,有则返回,反之进行下一步
1-5 操作者是浏览器, 叫做递归操作Recursive
- 本地域名服务器访问根域名服务器(.),根域名服务器会告诉本地域名服务器顶级域名(com)的ip地址
- 本地域名服务器访问顶级域名服务器(com),顶级域名服务器(com)会告诉本地域名服务器二级域名服务器(baidu)的ip地址
- 本地域名服务器访问二级域名服务器(baidu),二级域名服务器(baidu)会告诉本地域名服务器三级域名服务器(www)的ip地址
- 本地域名服务器访问三级域名服务器(www),www域名服务器知道www.baidu.com的IP地址,它就返回给本地域名服务器其地址,若不知道,则返回无法解析
- 本地域名服务器将获取到的结果传达给最初的请求者浏览器
6-10操作者是本地域名服务器,叫做迭代操作 iteration
在Linux操作系统中的解析顺序可以更改,在配置文件/etc/nsswitch.conf
可以当浏览器访问一个网址,但查询浏览器缓存没有找到之后
可以使其先去访问本地域名解析/etc/hosts再访问dns服务器,如下图,这是默认配置
也可以更改其为先访问dns服务器,再访问本地域名解析/etc/hosts,如下图