DNS简介
DNS(Domain Name System)域名系统,是互联网的一项服务;它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网;DNS使用TCP和UDP端口53。
DNS 服务器
运行DNS 服务器程序的计算机,储存DNS 数据库信息。DNS 服务器会尝试解析客户机的查询请求。在解答查询时,如果DNS 服务器能提供所请求的信息,就直接回应解析结果,如果该DNS 服务器没有相应的域名信息,则为客户机提供另一个能帮助解析查询的服务器地址,如果以上两种方法均失败,则回应客户机没有所请求的信息或请求的信息不存在。
DNS 缓存
DNS 服务器在解析客户机请求时,如果本地没有该DNS 信息,则可以会询问其他DNS 服务器,当其他域名服务器返回查询结果时,该DNS 服务器会将结果记录在本地的缓存中,成为DNS 缓存。当下一次客户机提交相同请求时,DNS 服务器能够直接使用缓存中的DNS 信息进行解析。
DNS常用命令
常用命令 | 意思 |
---|---|
ipconfig/ifconfig | 显示网络信息 |
nslookup host | 查询域名对应的ip同时也显示了网关地址 |
cat /etc/resolv.conf | 查看本地dns服务器地址 |
dig host a | 查询域名的A纪录,[A,MX,NS,CNAME,TXT] ,默认是a |
dig @202.106.0.20 www.oolec.com a | 根据地址指定dns服务器来解析域名 |
dig host a +tcp | 采用tcp方式,默认采用udp协议进行查询 |
dig host a +trace | 显示从根域逐级查询的过程 |
/etc/init.d/nscd restart | 清除缓存的域名 |
/etc/hosts | 本地域名映射表 |
DNS查询方式: 递归查询和迭代查询
实例:
- 客户机提交域名解析请求,并将该请求发送给本地的域名服务器。
- 当本地的域名服务器收到请求后,就先查询本地的缓存。如果有查询的DNS 信息记录,则直接返回查询的结果。如果没有该记录,本地域名服务器就把请求发给根域名服务器。
- 根域名服务器再返回给本地域名服务器一个所查询域的顶级域名服务器的地址。
- 本地服务器再向返回的域名服务器发送请求。
- 接收到该查询请求的域名服务器查询其缓存和记录,如果有相关信息则返回客户机查询结果,否则通知客户机下级的域名服务器的地址。
- 本地域名服务器将查询请求发送给返回的DNS 服务器。
- 域名服务器返回本地服务器查询结果(如果该域名服务器不包含查询的DNS 信息,查询过程将重复<6>、<7>步骤,直到返回解析信息或解析失败的回应)。
- 本地域名服务器将返回的结果保存到缓存,并且将结果返回给客户机。
递归查询
递归查询是一种DNS 服务器的查询模式,在该模式下DNS 服务器接收到客户机请求,必须使用一个准确的查询结果回复客户机。如果DNS 服务器本地没有存储查询DNS 信息,那么该服务器会询问其他服务器,并将返回的查询结果提交给客户机。
迭代查询
DNS 服务器另外一种查询方式为迭代查询,当客户机发送查询请求时,DNS 服务器并不直接回复查询结果,而是告诉客户机另一台DNS 服务器地址,客户机再向这台DNS 服务器提交请求,依次循环直到返回查询的结果为止。
DNS资源记录
推荐阅读:https://blog.csdn.net/weixin_41545330/article/details/80865676
SOA 资源记录
- 每个区在区的开始处都包含了一个起始授权记录(Start of Authority Record),简称SOA 记录。
- SOA 定义了域的全局参数,进行整个域的管理设置。一个区域文件只允许存在唯一的SOA 记录。
- 起始授权机构SOA资源记录总是处于任何标准区域中的第一位,它表示最初创建它的DNS服务器或现在是这个截获的主服务器的DNS服务器。它还用于存储会影响区域更新或过期的其他属性,如版本信息和计时,这些属性会影响在这个区域的域名服务器之间进行同步数据的频繁程度
NS 资源记录
NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。每个区在区根处至少包含一个NS 记录。
A 资源记录
A记录也称为主机记录,是使用最广泛的DNS记录,A记录的基本作用就是说明一个域名对应的IP是多少, 它是域名和IP地址的对应关系,表现形式为 www.contoso.com 192.168.1.1
PTR 资源记录
相对于A 资源记录,指针(PTR)记录把IP地址映射到FQDN。 用于反向查询,通过IP地址,找到域名。
CNAME 资源记录
别名记录(CNAME)资源记录创建特定FQDN 的别名。用户可以使用CNAME 记录来隐藏用户网络的实现细节,使连接的客户机无法知道真正的域名。
MX 资源记录
- 邮件交换(MX)资源记录,为DNS 域名指定邮件交换服务器。
- 邮件交换服务器是为DNS 域名处理或转发邮件的主机。处理邮件指把邮件投递到目的地或转交另一不同类型的邮件传送者。转发邮件指把邮件发送到最终目的服务器,用简单邮件传输协议SMTP 把邮件发送给离最终目的地最近的邮件交换服务器,或使邮件经过一定时间的排队。
资源记录的通用格式
name [time] IN type value
通用格式 | 意义 |
---|---|
name | 要解析的目标主机的名称 |
time | 解析结果的缓存时间 |
IN | 关键词 |
type | 资源记录类型 |
value | 将目标主机解析到哪个地址 |
DNS服务器部署(正向解析)
第一步:下载bind
╭─root@www.du1.com ~
╰─➤ yum install bind bind-utils -y
第二步:配置DNS主配置
╭─root@www.du1.com ~
╰─➤ vim /etc/named.conf
...
options {
listen-on port 53 { any; }; #把127.0.0.1改成any
listen-on-v6 port 53 { ::1; };
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”;
allow-query { any; }; #把localhost改为any
...
第三步:修改区域配置文件
╭─root@www.du1.com ~
╰─➤ vim /etc/named.rfc1912.zones
...
zone “du.com” IN { #定义自己的域
type master;
file “du.com.zone”; #定义域文件
allow-update { none; };
};
...
第四步:配置域文件
╭─root@www.du1.com /etc/named
╰─➤ cd /var/named
╭─root@www.du1.com /var/named
╰─➤ ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
╭─root@www.du1.com /var/named
╰─➤ cp -a named.localhost du.com.zone
╭─root@www.du1.com /var/named
╰─➤ vim du.com.zone
...
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
www IN A 192.168.80.3
yin IN A 192.168.80.4
...
第五步:重启服务
╭─root@www.du1.com /var/named
╰─➤ systemctl restart named
第六步:使用自己的DNS服务器
╭─root@www.du1.com /var/named
╰─➤ vim /etc/sysconfig/network-scripts/ifcfg-ens33
...
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.80.3
NETMASK=255.255.255.0
GATEWAY=192.168.80.2
#DNS1=8.8.8.8
#DNS2=114.114.114.114
DNS=192.168.80.3
~
...
╭─root@www.du1.com /var/named
╰─➤ systemctl restart network
第七步:验证
╭─root@www.du1.com /var/named
╰─➤ nslookup
> www.du.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: www.du.com
Address: 192.168.80.3
>
> yin.du.com
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: yin.du.com
Address: 192.168.80.4
DNS部署反向解析
第一步:下载bind
╭─root@www.du1.com ~
╰─➤ yum install bind bind-utils -y
第二步:配置DNS主配置
╭─root@www.du1.com ~
╰─➤ vim /etc/named.conf
...
options {
listen-on port 53 { any; }; #把127.0.0.1改成any
listen-on-v6 port 53 { ::1; };
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”;
allow-query { any; }; #把localhost改为any
...
第三步:修改区域配置文件
╭─root@www.du1.com ~
╰─➤ vim /etc/named.rfc1912.zones
...
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 {
type master;
file "named.loopback";
allow-update { none; };
};
zone "80.168.192.in-addr.arpa" IN { # 写ip
type master;
file "du.com.zone"; #指定域文件
allow-update { none; };
};
...
第四步:编辑域文件
╭─root@www.du1.com /var/named
╰─➤ cd /var/named
╭─root@www.du1.com /var/named
╰─➤ ls
data du.com.zone dynamic named.ca named.empty named.localhost named.loopback slaves
╭─root@www.du1.com /var/named
╰─➤ cat named.loopback >> du.com.zone
╭─root@www.du1.com /var/named
╰─➤ vim du.com.zone
...
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
PTR localhost.
4 IN PTR www.du.com
5 IN PTR www.du.cn
...
第五步:重启named
╭─root@www.du1.com /var/named
╰─➤ systemctl restart named
第六步:使用自己的DNS服务器
╭─root@www.du1.com /var/named
╰─➤ vim /etc/sysconfig/network-scripts/ifcfg-ens33
...
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.80.3
NATMASK=255.255.255.0
GATEWAY=192.168.80.2
#DNS1=8.8.8.8
#DNS2=114.114.114.114
DNS=192.168.80.3
~
...
╭─root@www.du1.com /var/named
╰─➤ systemctl restart network
第七步:验证
╭─root@www.du1.com /var/named
╰─➤ nslookup 192.168.80.4
Server: 127.0.0.1
Address: 127.0.0.1#53
4.80.168.192.in-addr.arpa name = www.du.com.80.168.192.in-addr.arpa.
╭─root@www.du1.com /var/named
╰─➤ nslookup 192.168.80.5
Server: 127.0.0.1
Address: 127.0.0.1#53
5.80.168.192.in-addr.arpa name = www.du.cn.80.168.192.in-addr.arpa.