DNS解析流程:
1. 客户端查询自己的缓存(包含 hosts 中的记录),如果没有将查询发送 /etc/resolv.conf 中的 DNS 服务器
2. 如果本地 DNS 服务器对于请求的信息具有 权威性 ,会将(权威答案)发送到客户端。
3. 否则( 不具有权威性 ),如果 DNS 服务器在其缓存中有请求信息,则将(非权威答案)发送到客户端
4. 如果缓存中没有该查询信息, DNS 服务器将搜索权威 DNS 服务器以查找信息:
a. 从根区域开始,按照 DNS 层次结构向下搜索,直至对于信息具有权威的名称服务器,为客户端获答 案
DNS 服务器将信息传递给客户端 ,并在自己的缓存中保留一个副本,以备以后查找。
b. 转发到其它 DNS 服务器
1.安装dns服务器
shell# yum y install bind bind chroot
shell# systemctl restart named
shell# systemctl enable named
#添加防火墙
shell# firewall cmd permanent a dd service=dns
shell# firewall cmd reload
2.主配置文件(添加区域)
shell# vim /etc/named.conf
#配置文件
options {
listen-on port 53 { any; }; #修改为any
listen-on-v6 port 53 { any; }; #修改为any
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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; #修改为any
forwarders { 114.114.114.114;192.168.80.2; }; #转发到上一级dns
#根区域
zone "." IN {
type hint;
file "named.ca";
};
#添加区域(changlidong.com)
zone "changlidong.com" {
type master;
file "changlidong.com.zone"; #配置文件
};
#添加去(labdocker)
zone "labdocker" {
type master;
file "labdocker.com.zone"; #配置文件
};
3.区域配置文件
默认路径:/var/named/
#changlidong.com配置文件
shell# vim /var/named/changlidong.com.zone
$TTL 600
@ IN SOA @ root (2020032300 1H 15M 1W 1D)
@ IN NS dns
dns IN A 192.168.80.100
www IN A 192.168.80.201
bbs IN A 192.168.80.202
#labdocker配置文件
shell#vim /var/named/labdocker.com.zone
$TTL 600
@ IN SOA @ root (2020032300 1H 15M 1W 1D)
@ IN NS dns
dns IN A 192.168.80.100
www IN A 192.168.80.22
master01 IN A 192.168.80.24
bbs IN A 192.168.80.35
4.参数说明
@ 表示当前域名
www.tianyun.com. = www
第一个字段继承
SOA: 起始授权记录 强制
NS: DNS 服务器记录 强制
A: 主机记录
CNAME: 别名记录
5.客户端测试工具
安装:
shell# yum install -y bind-utils
使用:
shell# nslookup www.changlidong.com #解析地址
shell# nslookup 192.168.80.201 #反向解析,服务器需要配置才能显示
shell# host -t A www.changlidong.com #正向解析
shell# host 192.168.80.201 #反向解析
shell# host www.changlidong.com 192.168.80.100 #使用dns服务器
shell# host -t SOA changlidong.com #查询区域的SOA
shell# host -t NS changlidong.com #查询某个区域的NS
shell# host -t MX changlidong.com #查询某个区域的邮件服务器
shell# dig www.changlidong.com #使用 /etc/resolv.conf 设置的 DNS
shell# dig @192.168.80.100 www.changlidong.com #使用指定的 DNS