Linux学习笔记—高速缓存DNS

一、DNS总揽

1、DNS相关概念

name space: 命名空间,如何给互联网上的主机命名的
权威名称服务器: 存储并提供某区域 ( 整个 DNS 域或 DNS 域的一部分 ) 的实际数据。

  • 权威名称服务器类型包括:
    Master:主DNS服务器,包含原始区域的数据
    Slave:备份DNS服务器,通过(区域传输)从Master服务器获得区域数据的副本

非权威名称服务器/递归DNS服务器:(不)存储某个区域的实际数据( 转发DNS服务器都是非权威名称服务器)
Caching only: 仅缓存DNS服务器,虽然可以提供查询,但查询的内容不具有权威性,根提示域或

正向解析: 从主机名查询到IP的流程。

反向解析: 从IP反解析到主机名的流程。

zone : 要解析的域名(domain),就成为一个区域(zone)比如:baidu.com / sina.com 等。

DNS数据库: 记录要解析的区域中的所有信息。

2、 DNS 查找流程

client:
  • 客户端查询自己的缓存(包含hosts中的记录),如果没有记录,再将查询发送/etc/resolv.conf中的DNS服务器
DNS Server:
  • 如果DNS服务器对于请求的信息具有权威性,会将(权威答案)发送到客户端权威答案

  • 否则(不具有权威性),如果DNS服务器在其缓存中有请求信息,则将(非权威答案)发送到客户端

  • 如果缓存中没有该查询信息,DNS服务器将搜索权威DNS服务器以查找信息:
    从根区域开始,按照DNS层次结构向下搜索,直至对于信息具有权威的名称服务器,为客户端获取答案
    DNS服务器将信息传递给客户端,并在自己的缓存中保留一个副本,以备以后查找

3、DNS 排错

显示来自 DNS 查找的详细信息 , 其中包括为什么查询失败 :
– NOERROR : 查询成功
– NXDOMAIN : DNS 服务器提示不存在这样的名称
– SERVFAIL : DNS 服务器停机或 DNSSEC 响应验证失败
– REFUSED : DNS 服务器拒绝回答 ( 也许是出于访问控制原因 )

4、DNS工作原理

  • dns:域名解析,name resolve,

    • 域名–>IP 正向解析
    • IP --> 域名 反向解析
  • 解析: username – uid; httpd – 80; 主机名 – ip;

  • 数据库存放域名和IP的对应关系

  • /etc/nsswitch.conf :为实现解析提供一个平台,真正实现名称解析的是/etc/hosts(libnss_file.so)和dns服务器(libnss_dns.so)

  • 管理DNS的组织机构:

    • IANA:the internet assigned number authority,互联网数字分配机构; baidu.com jingyeting.com
    • ICANN: the internet coporation assigned names and numbers,互联网名称与数字地址分配机构
  • 管理域名与IP的发展:
    1). 组织将hosts放在ftp服务器上,使用时下载到本地;
    2). 生成一个周期性任务(crontab),指定多久自动下载hosts文件;
    3). 选择一个专门的服务器去管理域名与ip的关系,服务器不止一个;
    4). 分布式管理dns

  • 怎么去分布式管理域名与IP的关系?
    www.qq.com.
    1). 最大域为根域,在全球仅有13台根域服务器,{a…m}.rootserver.com;
    2).顶级域(TLD):组织域(.com,.org,.net),国家域(.cn,.us,.iq,.jp),反向域

  • 寻找域名对应ip关系的方法:分为两段式
    递归:a -> b -> c c -> b -> a
    迭代:a -> b a ->c c -> a

  • FQDN(full qulified domain name) ##正式域名

5、DNS资源记录

1). SOA(start of authority):起始授权记录,表识多个dns存在时,哪个是主dns(权威的dns服务器)
ZONE NAME TTL IN SOA 主dns的FQDN mail(
					serials number	 ;2017010703
					refresh		;刷新
					retry		;未获得答案时多久再次请求
					expire		;过期
					na ttl		;无答案时的有效期
					)
2). NS(name server): ZONE --> FQDN(dns.westos.org.)
NS dns.westos.org.
3). A: FQDN -> IPv4
hello  A  172.25.254.136
4). AAAA:FQDN -> IPv6
music  AAAA 2000::1
5). CNAME:别名
bbs	CNAME	www.westos.org
实现负载均衡
www 	A	172.25.254.100
www	A 	172.25.254.200
6). PTR(pointer):IP -> FQDN
12	PTR	www.westos.org.
7). MX记录
westos.org. MX 10 mail.westos.org.
mail	    A 	  172.25.254.136

二、高速缓存服务器DNS

特别说明: 高速缓存DNS解析速度快,内部访问,不占用传输带宽。

环境配置:

<1>虚拟机Desktop IP:172.25.254.105
虚拟机Server IP:172.25.254.205
<2>yum源

具体部署:

- 服务器:172.25.254.105
<1>安装并开启DNS服务功能软件bind

[root@localhost ~]# yum install bind -y
[root@localhost ~]# systemctl start named          ##敲击键盘,添加加密字符
[root@localhost ~]# systemctl stop firewalld       ##关闭防火墙
[root@localhost ~]# systemctl disable  firewalld
[root@localhost ~]# netstat -antlupe | grep named   ##查看named服务监听的端口为53

示图:查看服务端口53,此时端口只开启在lo回环接口,127.0.0.1代表回环接口ip
Linux学习笔记—高速缓存DNS_第1张图片
<2>查找并修改配置文件

[root@localhost ~]# rpm -qc bind             ##查找配置文件
[root@localhost ~]# vim /etc/named.conf      
 11         listen-on port 53 { any; };      ##端口53开启在所有网卡接口
 17         allow-query     { any; };        ##允许连接访问的客户主机                     
 18         forwarders { 172.25.254.250; };  ##转发请求到172.25.254.250主机

示图:配置文件的修改
Linux学习笔记—高速缓存DNS_第2张图片
<3>重启named服务

[root@localhost ~]# systemctl restart named    

示图:此时端口53开启在所有网卡上,包括eth0网卡,IP=172.25.254.105
Linux学习笔记—高速缓存DNS_第3张图片
- 客户端:172.25.254.205

[root@server ~]# vim /etc/resolv.conf 
nameserver 172.25.254.105

客户机测试:dig 域名
<1>dig www.qq.com
Linux学习笔记—高速缓存DNS_第4张图片
<2>第一次dig耗时131ms
Linux学习笔记—高速缓存DNS_第5张图片
<3>第二次dig耗时0ms
Linux学习笔记—高速缓存DNS_第6张图片

三、DNS正向解析

正向解析(A,MX,CNAME,负载均衡):域名——>IP
服务器&客户端:IP=172.25.254.105
<1>修改主配置文件

[root@localhost ~]# vim /etc/named.conf    ##注释上次实验添加的forwarders
18   //forwarders { 172.25.254.250; };     ##注释原因:服务器自己充当DNS

Linux学习笔记—高速缓存DNS_第7张图片
这里写图片描述
<2>named的配置文件(添加域)

[root@localhost named]# vim /etc/named.rfc1912.zones  
 25  zone "westos.com" IN {                     ##域westos.com
 26           type master;                      ##主域名
 27           file "westos.com.zone";           ##正向解析域名文件
 28           allow-update { none; };           ##远程不可写
 29   };

<3>配置westos.com.zone文件

[root@localhost ~]# cd /var/named
[root@localhost named]# cp -p named.localhost westos.com.zone ##复制文件内容(连同属性)到westos.com.zone,westos.com.zone本不存在,自行建立
[root@localhost named]# vim westos.com.zone        ## @=westos.com  @使所有不以'.'结尾的文件后加上'westos.com',以'.'结尾文件结束
$TTL 1D
@       IN SOA  dns.westos.com root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.westos.com.
dns     A       172.25.254.105                ##地址解析服务端
www     A       172.25.254.205                ##指定域名解析,管理员随意写
bbs     A       172.25.254.206

Linux学习笔记—高速缓存DNS_第8张图片
<4>重新开启服务

[root@localhost named]# systemctl restart named    ##重新开启服务

客户端测试:
<1>设置客户端的dns服务器为172.25.254.105(即dns服务器ip)

vim /etc/resolv.conf 
nameserver 172.25.254.105

<2>查看不同域名对应的ip

dig dns.westos.com
dig bbs.westos.com

Linux学习笔记—高速缓存DNS_第9张图片

四、DNS反向解析

反向解析(P解析): IP——>域名
服务器&客户端:IP=172.25.254.105
<1>修改named的配置文件(添加域)

[root@localhost named]# vim /etc/named.rfc1912.zones 
 46 zone "254.25.172.in-addr.arpa" IN {
 47         type master;
 48         file "westos.com.ptr";         ##反向解析域名文件
 49         allow-update { none; };
 50  };

Linux学习笔记—高速缓存DNS_第10张图片
<2>配置westos.org.ptr文件

[root@localhost named]# cd /var/named/
[root@localhost named]# cp -p named.loopback westos.com.ptr
[root@localhost named]# vim westos.com.ptr 
$TTL 1D
@       IN SOA  dns.westos.com. root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.westos.com.
dns     A       172.25.254.105
205     PTR     www.westos.com.         ##访问172.25.254.205 对应域名
206     PTR     hao.westos.com.         ##访问172.25.254.206 对应域名        

Linux学习笔记—高速缓存DNS_第11张图片
<3>重启服务

[root@localhost named]# systemctl restart named

客户端测试:
反向解析,测试dig -x ip
<1>设置客户端的dns服务器为172.25.254.105(即dns服务器ip)

vim /etc/resolv.conf 
nameserver 172.25.254.105

<2>查看不同ip对应的域名

[root@localhost named]# dig -x 172.25.254.205   

Linux学习笔记—高速缓存DNS_第12张图片
Linux学习笔记—高速缓存DNS_第13张图片

五、正向轮询式域名解析

服务器&客户端:IP=172.25.254.105
注意: 此实验基于正向解析实验的基础之上
<1>修改主配置文件

[root@server named]# vim westos.com.zone 
$TTL 1D
@       IN SOA  dns.westos.com root.westos.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns.westos.com.
dns     A       172.25.254.105
hello   CNAME   www
www     A       172.25.254.205                ##轮询服务器1
www     A       172.25.254.206                ##轮询服务器2
                                                   

<2>重启服务

[root@server named]# systemctl restart named

客户端测试:
示图:首次访问域名
Linux学习笔记—高速缓存DNS_第14张图片
示图:再次访问域名,出现轮询式访问
Linux学习笔记—高速缓存DNS_第15张图片

六、主从DNS—搭建DNS集群##

实验环境:
主DNS:172.25.254.106 副DNS:172.25.254.206 客户端:172.25.254.6
(1)主master-dns操作
<1>修改named的配置文件

[root@server named]# vim /etc/named.rfc1912.zones 
 25 zone "westos.com" IN {
 26         type master;            //该服务为主DNS
 27         file "westos.com.zone"; 
 28         allow-update { none; };
 29         allow-transfer { 172.25.254.206; }; //允许传输区域信息某服务器上
 30         also-notify { 172.25.254.206; };   //当主dns变化时自动通知某主机
 31 };

示图:
Linux学习笔记—高速缓存DNS_第16张图片
<2>重启服务

[root@server named]# systemctl restart named

(2)从slave-dns操作
注意:此为新开虚拟机,需安装并重启dns服务

yum install bind -y

<1>主配置文件的修改

[root@localhost ~]# vim /etc/named.conf 
13         listen-on port 53 { any; };
19         allow-query     { any; };

Linux学习笔记—高速缓存DNS_第17张图片
<2>修改named的配置文件

[root@localhost ~]# vim /etc/named.rfc1912.zones 
 25 zone "westos.com" IN {
 26          type slave;     //指定为辅dns
 27          masters { 172.25.254.106; };    //主dns的ip
 28          file "slaves/westos.com.zone";  //主dns传输的内容存放位置
 29          allow-update { none; };
 30  };

Linux学习笔记—高速缓存DNS_第18张图片
<3>重启服务

[root@localhost ~]# systemctl restart named

客户端测试
测试一:
<1>修改dns为辅dns的ip

[root@foundation20 ~]# vim /etc/resolv.conf 

这里写图片描述
<2>客户端查询域名对应的ip
Linux学习笔记—高速缓存DNS_第19张图片
测试二:
修改dns-master端对应的ip,并修改序列号,重启服务后自动更新到slave端,客户端检测域名对应的ip变化.
<1>修改dns-master端对应的ip并重启服务

[root@server named]# vim westos.com.zone 

示图:原IP及序列号
Linux学习笔记—高速缓存DNS_第20张图片
示图:修改后的IP及序列号
Linux学习笔记—高速缓存DNS_第21张图片
<2>客户端查询域名对应的ip
Linux学习笔记—高速缓存DNS_第22张图片

七、DNS双向解析

DNS双向解析指内网与外网解析分离

内网:172.25.254.105   www.westos.com---172.25.254.xx
外网:any	 	        www.westos.com---192.25.254.xx

服务器:172.25.254.105
<1>修改主配置文件/etc/named.conf,实现内网与外网分离

/*        
zone "." IN {
        type hint;
        file "named.ca";
};

include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
*/
view localnet  {
           match-clients { 172.25.254.105; };   ##内网访问为172网段
           zone "." IN {
           type hint;
           file "named.ca";
           };
           include "/etc/named.rfc1912.zones";
};
view Anynet  {
           match-clients { any; };              ##外网访问为192网段
           zone "." IN {
           type hint;
           file "named.ca";
           };
           include "/etc/named.rfc1912.inter";
};

<2>分别为内网与外网写配置文件

[root@localhost named]# cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inter ##外网配置文件
[root@localhost named]# vim /etc/named.rfc1912.inter
 25 zone "westos.com" IN {
 26           type master;
 27           file "westos.com.inter";
 28           allow-update { none; };
 29 };

<3>分别为内网与外网域名文件

[root@localhost ~]# cd /var/named/
[root@localhost named]# cp -p westos.com.zone westos.com.inter 
[root@localhost named]# vim westos.com.inter          ##外网域名文件

示图:通过%s/172/192/g 批量替换
Linux学习笔记—高速缓存DNS_第23张图片
<4>设置服务端(内网)的dns服务器为172.25.254.105(即dns服务器ip)

[root@localhost named]# vim /etc/resolv.conf 
nameserver 172.25.254.105

客户端:any ip
<4>设置客户端(外网)的dns服务器为172.25.254.105(即dns服务器ip)

[root@server ~]# vim /etc/resolv.conf 
nameserver 172.25.254.105

测试:
内网主机:172.25.254.105

[root@localhost named]# dig www.westos.com

Linux学习笔记—高速缓存DNS_第24张图片

外网主机:any ip

[root@server named]# dig www.westos.com 

Linux学习笔记—高速缓存DNS_第25张图片

八、远程更新DNS(认证机制)

实验环境:
<1>Selinux状态:Disabled
<2>/etc/named.conf 配置文件删除上一实验的配置,恢复原态

1、基于任何主机的远程更新

实验内容:
服务器:172.25.254.205

<1>允许主机远程动态更新
[root@localhost Desktop]# vim /etc/named.rfc1912.zones 
 25 zone "westos.com" IN {
 26           type master;
 27           file "westos.com.zone";
 28           allow-update { 172.25.254.205; };   ##允许该主机远程动态更新dns
    };
<2>权限
[root@localhost Desktop]# cd /var/named/
[root@localhost named]# cp -p westos.com.zone /mnt      ##备份
[root@localhost named]# chmod g+w /var/named/           ##组添加权限

注意:
1)添加权限前:

[root@localhost named]# ls -ld /var/named/
drwxr-x--- 5 root named 4096 Apr 26 01:37 /var/named/

2)添加权限后:

[root@localhost named]# ls -ld /var/named/              
drwxrwx--- 5 root named 4096 Apr 26 01:37 /var/named/
<3>重启服务
[root@localhost named]# systemctl restart named

客户端测试:172.25.254.205
注意: nsupdate是一个动态DNS更新工具.可以向DNS服务器提交更新记录的请求.它可以从区文件中添加或删除资源记录.而不需要手动进行编辑区文件.

[root@server ~]# nsupdate 
> server 172.25.254.105         
> update delete hello.westos.com                ##删除
> send
> update add hello.westos.com 86400 A 172.25.254.222   ##添加
> send
> quit

示图:可dig到新添加的域名和ip,更新成功
Linux学习笔记—高速缓存DNS_第26张图片

2、基于key认证远程更新

实验环境:
在上一实验基础上,执行如下操作

[root@localhost named]# rm -fr westos.com.zone*
[root@localhost named]# cp -p /mnt/westos.com.zone .

服务器:172.25.254.105

<1>对称加密文件的生成
[root@localhost named]# cd /mnt
[root@localhost mnt]# ls
westos.com.zone
[root@localhost mnt]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST westos ##//生成对称加密文件,-a指定加密算法,-n,nametype,-b,加密字符数

示图:生成的对称加密文件及其key内容
Linux学习笔记—高速缓存DNS_第27张图片

<2>编辑key文件
[root@localhost mnt]# cp -p /etc/rndc.key /etc/westos.key
[root@localhost mnt]# vim /etc/westos.key         

示图:/etc/westos.key文件内容
这里写图片描述

<3>编辑主配置文件
[root@localhost mnt]# vim /etc/named.conf      ##主配置文件指明密码文件
42 include "/etc/westos.key";                  ##密码文件

**注意:**该配置放在logging模块前面,配置是按顺序读取的;

<4>修改named配置文件
[root@localhost mnt]# vim /etc/named.rfc1912.zones 

 25 zone "westos.com" IN {
 26           type master;
 27           file "westos.com.zone";
 28           allow-update { key westos; };       //只允许有钥匙的主机对该dns进行动态更新;
 29           allow-transfer { 172.25.254.205; };
 30           also-notify { 172.25.254.205; };
 31 };
<5>重启服务
[root@localhost mnt]# systemctl restart named 
<6>发送钥匙给允许动态更新该dns的主机
[root@localhost mnt]# scp Kwestos.+157+20421.* [email protected]:/mnt/   //发送钥匙给允许动态更新该dns的主机;

客户端测试:172.25.254.205

[root@server mnt]# nsupdate Kwestos.+157+20421.private
> server 172.25.254.105   
> update add music.westos.com 86400 A 172.25.254.222
> send
> quit

示图:可dig到新添加的域名和ip,更新成功
Linux学习笔记—高速缓存DNS_第28张图片

九、花生壳(dhcp+dns,ddns):动态域名解析服务

准备工作: 该实验是基于实验7的基础上操作的,要确保基于key认证远程更新dns成功。
实验环境:
在上一实验基础上,执行如下操作

[root@localhost named]# rm -fr westos.com.zone*
[root@localhost named]# cp -p /mnt/westos.com.zone .
[root@localhost named]# systemctl restart named

服务器:IP=172.25.254.105
<1>安装并配置dhcp服务

[root@localhost ~]# yum install dhcp -y
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcp.conf
[root@localhost ~]# vim /etc/dhcp/dhcp.conf 
 7 option domain-name "westos.com";
 8 option domain-name-servers 172.25.254.105;
 
14 ddns-update-style interim;

30 subnet 172.25.254.0 netmask 255.255.255.0 {
31   range 172.25.254.95 172.25.254.99;      ##dhcp自动分配ip范围
32   option routers 172.25.254.105;
34 key westos {
35    algorithm hmac-md5;
36    secret 8yt5zpZhgUhBH/Lw6J6o1A==;       ##key认证密码
37 };
38 zone westos.com. {
39    primary 127.0.0.1;                     ##回环接口即可,内部网络
40    key westos;
41 }

Linux学习笔记—高速缓存DNS_第29张图片

<2>重启服务

[root@localhost ~]# systemctl restart named
[root@localhost ~]# systemctl restart dhcpd
[root@localhost ~]# systemctl stop firewalld.service   ##关闭防火墙

客户端测试:ip=172.25.254.205
注意:拔网线
<1>设置客户端获取ip的方式为dhcp获取;
<2>当server端的dhcp配置成功后,重启网络,查看ip,更改主机名为xxx.westos.com,dig 主机名,看是否解析出对应的ip;

[root@localhost ~]# hostnamectl set-hostname hehe.westos.com    ##更改主机名

<3>修改server端dhcp分配的区域,重复<2>操作,如果dig 主机名的结果随着ip的改变而改变,说明实验成功。
示图:dig主机名的ip为主机dhcp动态获取的ip,则实验成功.

Linux学习笔记—高速缓存DNS_第30张图片
Linux学习笔记—高速缓存DNS_第31张图片

你可能感兴趣的:(Linux,RCE)