Linux网络服务之DNS

252 阅读6分钟

DNS介绍

什么是DNS

域名系统(英文:Domain Name System,缩写:DNS),使用应用层协议,是互联网的一项服务。 它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。

每一台 DNS 服务器都只负责管理一个有限范围(一个或几个域)内的主机域 名和 IP 地址的对应关系,这些特定的 DNS 域或 IP 地址段称为 zone(区域)。 当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。

默认端口:

  • 连接DNS服务器,使用TCP协议的53端口。
  • DNS服务器进行解析,使用UDP协议的53端口。

DNS作用

  • 正向解析:根据域名查找对应的IP地址
  • 反向解析:根据IP地址查找对应的域名

域名结构

根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本

  • 一级域名:Top Level Domain: tld
  • 三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
  • com, edu, mil, gov, net, org, int,arpa
  • 二级域名:magedu.com
  • 三级域名:study.magedu.com
  • 最多可达到127级域名

注:

  • 114.114.114.114是国内移动、电信和联通通用的DNS服务器,解析成功率相对来说更高,国内用户使用的比较多,速度相对快、稳定,是国内用户上网常用的DNS。

  • 8.8.8.8是GOOGLE公司提供的DNS服务器,该地址是全球通用的,相对来说,更适合国外以及访问国外网站的用户使用。

DNS服务器类型

缓存域名服务器:

只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定其他 DNS 服务器作为解析来源。

主域名服务器:

管理和维护所负责解析的域内解析库的服务器

从域名服务器

从主服务器或从服务器"复制"(区域传输)解析库副本

DNS查询类型

查询方式

递归查询:

一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结 果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)

迭代查询:

一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)

特点

  • 递归查询:主机只发出一次请求,要求对方给出最终结果。返回的结果只有两种:查询成功或查询失败。
  • 迭代查询:主机需要发起多次请求,返回的是所需IP地址或最佳查询地址。

域名解析过程

用户在网页中输入地址,如www.baidu.com 后,DNS域名解析过程如下:

  • 1.客户机先去查找本机的/etc/hosts 文件,看文件中是否存在该域名和IP地址的映射记录。如果有就调用,没有就进行下一步。

  • 2.客户机请求本地域名服务器(LDNS)来解析这个域名,主机要求本地域名服务器直接返回最终结果。在返回结果之前,客户机将完全处于等待状态,不再二次请求。统一由本地域名服务器向各级域名服务器转发请求。

  • 3.本地域名服务器收到客户机的请求后,先查询自己的缓存信息,如果有这个域名的映射记录则返回结果,没有则进行下一步。

  • 4.本地域名服务器请求根域名服务器解析这个域名,根域名告诉本地域名服务器去找对应的一级域名服务器。

  • 5.本地域名服务器请求一级域名服务器解析这个域名,一级域名服务器告诉它去找对应的二级域名服务器。

  • 6.本地域名服务器请求二级域名服务器解析这个域名,二级域名服务器告诉它去找对应的子域名服务器。

  • 7.本地域名服务器请求子域名服务器解析这个域名,子域名服务器返回对应的IP地址。

  • 8.本地域名服务器将IP地址记录到缓存中,并返回给客户机。客户机根据收到的IP地址访问该网站。

正向解析

记录类型

  • NS记录:域名服务器记录(Name Server)。

  • MX记录:邮件交换记录(Mail Exchange)。

  • A记录:地址记录(Address)。用来指定主机名(或域名)对应的IP地址记录。用于正向解析。

  • CNANE:别名记录。 这种记录允许您将多个名字映射到同一台计算机。

反向解析

PTR: 指针记录 (Pointer Record) ,用来指定IP地址对应的域名。用于反向解析。

               NS        master          //当前区域的DNS服务器名称
 master  IN     A      192.168.10.100    //记录DNS服务器的IP地址
 200     IN    PTR     www.km.com        //记录反向解析192.168.72.200对应的IP地址
 201     IN    PTR     ftp.km.com        //记录反向解析192.168.72.201对应的IP地址

DNS正向解析实验

1.关闭防火墙和selinux

 [root@localhost ~]# systemctl stop firewalld
 [root@localhost ~]# setenforce 0

2.安装bind软件包

[root@localhost ~]# yum install bind* -y   //安装BIND程序
[root@localhost ~]# rpm -qc bind         //查看BIND配置文件  /etc/logrotate.d/named  
/etc/named.conf              
/etc/named.iscdlv.key  
/etc/named.rfc1912.zones                
/etc/named.root.key  
/etc/rndc.conf  /etc/rndc.key  
/etc/sysconfig/named  
/var/named/named.ca                          
/var/named/named.empty  
/var/named/named.localhost  
/var/named/named.loopback

image.png

3.编辑主配置文件/etc/named.conf

 [root@localhost ~]# vim /etc/named.conf
 ----------------------------------
 options {
         listen-on port 53 { any; };        //允许DNS服务器监听所有IP地址
         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; };        //允许所有客户端查询
             

image.png

4.编辑区域配置文件/etc/named.rfc1912.zones文件,设置正向解析区域

 [root@localhost ~]# vim /etc/named.rfc1912.zones
 -------------------------------------------
 zone "km.com" IN {                     //定义正向DNS区域
         type master;                     //定义区域类型为master
         file "km.com.zone";            //设置对应的正向解析数据库文件
         allow-update { none; };
 };

image.png

5.建立正向解析区域数据库文件km.com.zone,重启服务

 [root@localhost ~]# cd /var/named
 [root@localhost named]# ls
 data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
 [root@localhost named]# cp -p named.localhost km.com.zone
 [root@localhost named]# vim km.com.zone
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      master.km.com
master  IN  A   192.168.10.90
www     IN  A   192.168.10.91
@       IN  A   192.168.10.91
*       IN  A   192.168.10.91

 [root@localhost named]# systemctl restart named 

image.png

6.修改DNS地址,重启服务

[root@localhost named]# cd /etc/sysconfig/network-scripts
[root@localhost network-scripts]# vim ifcfg-ens33
[root@localhost network-scripts]# systemctl restart network

image.png

7.验证是否成功

[root@localhost named]# host www.km.com
www.km.com has address 192.168.10.91

image.png