DNS域名解析

DNS

概念

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

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

默认端口:

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

DNS系统类型

主域名服务器

  • 特定DNS区域的权威服务器,具有唯一性
  • 负责维护该区域内所有域名-->IP地址的映射记录
  • 需要自行建立所负责区域的地址数据文件

从域名服务器

  • 也称为辅助域名服务器,是对主域名服务器的热备份
  • 其维护的域名-->IP地址记录来源于主域名服务器
  • 需要从主域名服务器自动同步区域地址数据库

缓存域名服务器

  • 也称为DNS高速缓存服务器
  • 通过向其他域名服务器查询获得域名-->IP地址记录
  • 将域名查询结果缓存到本地,提高重复查询时的速度

 转发域名服务器

 windows系统查询DNS缓存的命令:ipconfig/displaydns
 windows系统清理DNS缓存的命令:ipconfig/flushdns
 ​
 Linux系统清理DNS缓存需要安装nscd软件,启动、执行“nscd -i hosts”命令

DNS的查询方式(递归查询和迭代查询)

递归查询

  • 主机向本地域名服务器的查询一般都是采用递归查询。
  • 如果主机所询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其它根域名服务器继续发出查询请求报文(即替主机继续查询),而不是让主机自己进行下一步查询。在域名服务器查询期间,客户机将完全处于等待状态。
  • 因此,递归查询只会返回两种信息:要么是所要查询的IP地址,要么是查询失败。

迭代查询

  • 本地域名服务器向根域名服务器的查询是迭代查询。
  • 当根域名服务器收到本地域名服务器发出的迭代查询请求报文后,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。下一个服务器收到请求后也是如此,要么返回IP,要么告诉本地域名服务器下一步去找谁。 即本地域名服务器按照提示的指引依次查询, 直到返回查询的结果为止 。

实验思路:

  1. 安装bind软件包
  2. 修改主配置文件
  3. 修改区域配置文件,添加正向区域配置
  4. 配置正向区域数据文件
  5. 启动服务,关闭防火墙
  6. 在客户端的域名解析配置文件中添加DNS服务器地址
  7. 测试DNS解析,验证实验是否成功。

实验步骤:

步骤一:

安装bind软件包

yum install -y bind     //安装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

步骤二:

修改主配置文件

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";
        recursing-file  "/var/named/data/named.recursing";
        secroots-file   "/var/named/data/named.secroots";
        allow-query     { any; };        //允许所有客户端查询

步骤三:

修改区域配置文件,添加正向区域配置

vim /etc/named.rfc1912.zones            //编辑区域配置文件


zone "pp.com" IN {                  //定义正向DNS区域
        type master;               //定义区域类型为master
        file "pp.com。zone";            //设置对应的正向解析数据库文件
        allow-update { none; };          //
};

步骤四:

配置正向区域数据文件

[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 pp.com.zone
[root@localhost named]# vim pp.com.zone 

$TTL 1D
@       IN SOA  pp.com. admin.pp.com.zone. (
                                        0       ; serial     //更新序列号,可以是 10 位以内的整数
                                        1D      ; refresh    //刷新时间,重新下载地址数据的间隔
                                        1H      ; retry      //重试延时,下载失败后的重试间隔
                                        1W      ; expire     //失效时间,超过该时间仍无法下载则放弃
                                        3H )    ; minimum    //无效解析记录的生存周期
        NS      pp.com.
                  A     192.168.19.20
www    IN         A     192.168.19.21
mail   IN         A     192.168.19.22
ftp    IN         A     192.168.19.23
*      IN         A     192.168.19.24

  • “@”这里是一个变量,当前DNS区域名
  • SOA记录中的更新序列号用于同步主、从服务器的区域数据,当从服务器判断区域更新时,若发现主服务器中的序列号与本地区域数据中的序列号相同,则不会进行下载。
  • “pp.com.”此为完全合格域名(FQDN),后面有个“.”不能漏掉
  • “admin.pp.com.”表示管理员邮箱,这里的“@”符号已有其他含义,所以用“.”代替

步骤五:

启动服务,关闭防火墙

[root@localhost named]# systemctl start named
[root@localhost named]# systemctl stop firewalld
[root@localhost named]# setenforce 0

步骤六:

在客户端的域名解析配置文件中添加DNS服务器地址

方法一:

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

# Generated by NetworkManager
nameserver 192.168.19.20
#nameserver 114.114.114.114

#修改完立即生效

方法二:

[root@localhost named]# vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=34aeac22-1154-4c4b-a76c-55c5e7b81429
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.19.20
NETMASK=255.255.255.0
GATEWAY=192.168.19.2
DNS1=192.168,19,20
#DNS2=114.114.114.114

[root@localhost named]# systemctl restart network

#修改完后需要重启网卡

步骤七:

测试DNS解析,验证实验是否成功。

[root@localhost named]# host www.pp.com
www.pp.com has address 192.168.19.21
[root@localhost named]# host ftp.pp.com
ftp.pp.com has address 192.168.19.23

反向解析

实验要求:

要求为以下IP地址做反向解析工作。

 192.168.19.200      www.chc.com
 192.168.72.201      ftp.chc.com

实验思路:

  1. 修改区域配置文件,添加反向区域配置
  2. 配置反向区域数据文件
  3. 重启服务进行测试

实验步骤:

步骤一:

修改区域配置文件,添加反向区域配置

[root@localhost named]# vim /etc/named.rfc1912.zones


zone "19.168.192.in-addr.arpa" IN {       //反向解析的地址倒过来写,代表解析192.168.19段的地址
        type master;
        file "chc.com.zone";         //指定区域数据文件为chc.com.zone
        allow-update { none; };
};

步骤二:

配置反向区域数据文件

[root@localhost named]# cp -p named.localhost chc.com.zone
[root@localhost named]# vim chc.com.zone 

$TTL 1D
@       IN SOA   chc.com. admin.chc.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      chc.com.
                  A        192.168.19.20
200    IN        PTR       www.chc.com
201    IN        PTR       mail.chc.com

#PTR为反向指针

步骤三:

重启服务进行测试

[root@localhost named]# host 192.168.19.200
200.19.168.192.in-addr.arpa domain name pointer www.chc.com.19.168.192.in-addr.arpa.
[root@localhost named]# nslookup 192.168.19.201
201.19.168.192.in-addr.arpa	name = mail.chc.com.19.168.192.in-addr.arpa.

你可能感兴趣的:(linux,服务器,centos)