2016-02-17 15:34:58 woshimuyi1025 阅读数 2710
  • 网络工程师DNS域名解析强化训练视频课程

    网络工程师考试考察知识点繁多,形式多样。如何有效把握每种考察形式,拿到相应分数?这是历年考生挠头的事情。本系列课程紧抓考生痛点,对网工考试中重点题型分门别类讲解,反复强化训练,助力考生查缺补漏,拿到相应分数。本次分课程重点讲解了理解题型中DNS解题方法。通过基本概念阐述->实战配置演示->全真模拟题强化训练,三大步骤帮助考生掌握DNS解题方法,拿到相应分数。

    3234 人正在学习 去看看 徐朋

linux解决dns解析问题,

一种是将域名和对应的ip地址配置到/etc/hosts文件中,一种是找一个dns服务器将dns服务器的信息配置到/etc/resolv.conf。

第一种方法有一个弊端就是你的域名解析和ip地址是写死的,如果域名解析做了变动你的配置还需要变动,所以推荐使用第二种方法。

Linux DNS配置
vi  /etc/resolv.conf
nameserver 112.124.47.27

文件/etc/resolv.conf配置DNS客户,它包含了主机的域名搜索顺序和DNS服务器的地址,每一行应包含一个关键字和一个或多个的由空格隔开的参数。下面是一个例子文件: 

  search mydom.edu.cn
  nameserver 210.34.0.14
  nameserver 210.34.0.2

  合法的参数及其意义如下:

  nameserver 表明DNS服务器的IP地址。可以有很多行的nameserver,每一个带一个IP地址。在查询时就按nameserver在本文件中的顺序进行,且只有当第一个nameserver没有反应时才查询下面的nameserver。 
        domain   声明主机的域名。很多程序用到它,如邮件系统;当为没有域名的主机进行DNS查询时,也要用到。如果没有域名,主机名将被使用,删除所有在第一个点( .)前面的内容。 

  search   它的多个参数指明域名查询顺序。当要查询没有域名的主机,主机将在由search声明的域中分别查找。domain和search不能共存;如果同时存在,后面出现的将会被使用。 

  sortlist  允许将得到域名结果进行特定的排序。它的参数为网络/掩码对,允许任意的排列顺序。

2019-03-05 19:20:34 heian_99 阅读数 1386
  • 网络工程师DNS域名解析强化训练视频课程

    网络工程师考试考察知识点繁多,形式多样。如何有效把握每种考察形式,拿到相应分数?这是历年考生挠头的事情。本系列课程紧抓考生痛点,对网工考试中重点题型分门别类讲解,反复强化训练,助力考生查缺补漏,拿到相应分数。本次分课程重点讲解了理解题型中DNS解题方法。通过基本概念阐述->实战配置演示->全真模拟题强化训练,三大步骤帮助考生掌握DNS解题方法,拿到相应分数。

    3234 人正在学习 去看看 徐朋

前面介绍了DNS的作用及其相关的结果。Linux服务之DNS介绍

下面开始有关DNS的服务部署。<DNS正向解析示例>

工具:虚拟机

          centos7 

配置:Linux   IP 192.168.196.132

                      DSN   192.168.196.132

要求:

          web.wei.com      192.168.1.1
          ftp.wei.com      192.168.1.2    
          mail.wei.com     192.168.1.3
         

准备工作:(可以看前期教程)
     关闭SElinux,防火墙
     配置yum源

容易犯错的地方:查看/etc/resolv.conf 确保你的DNS是否正确

 

DNS正向解析

(1)安装软件 bind  bind-chroot

[root@wei csdn]# yum install -y bind bind-chroot

2.编辑DNS的主配置文件,创建区域wei.com

新建named.conf

[root@wei named]# vim /var/named/chroot/etc/named.conf 

 填写内容

options{
   directory “/var/named";
};
zone "wei.com"{
  type master;
  file "wei.com.zone"
}:

 

 3.复制记录文件的模板,并编辑

模板:/usr/share/doc/bind-9.9.4/sample/var/named/named.localhost

[root@wei named]# cd /usr/share/doc/bind-9.9.4/sample/var/named/

[root@wei named]# cp named.localhost /var/named/chroot/var/named/wei.com.zone 	

 

$TTL 1D
@       IN SOA  wei.com. 123456.qq.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns01.wei.com.
dns01   A       192.168.196.132
web     A       192.168.1.1
ftp     A       192.168.1.2
        MX  10  mail.wei.com.
mail    A       192.168.1.3

 

 

 

4.启动named服务

[root@wei named]# systemctl start named-chroot

[root@wei named]# systemctl start named

开机自启

[root@wei named]# systemctl enable named-chroot

[root@wei named]# systemctl enable named

查看端口53

 

5.测试

(1)nslookup


(2)dig

[root@wei named]# dig -t A web.wei.com

 

 

 

2017-05-14 22:39:02 qq_29924041 阅读数 1895
  • 网络工程师DNS域名解析强化训练视频课程

    网络工程师考试考察知识点繁多,形式多样。如何有效把握每种考察形式,拿到相应分数?这是历年考生挠头的事情。本系列课程紧抓考生痛点,对网工考试中重点题型分门别类讲解,反复强化训练,助力考生查缺补漏,拿到相应分数。本次分课程重点讲解了理解题型中DNS解题方法。通过基本概念阐述->实战配置演示->全真模拟题强化训练,三大步骤帮助考生掌握DNS解题方法,拿到相应分数。

    3234 人正在学习 去看看 徐朋

Linux网络编程[浅析DNS原理,了解相关DNS解析的函数]

1.DNS解析的相关原理
2. 域名解析的相关函数

###端口绑定, DNS解析的相关原理
先通过一张图示来展示一下什么是DNS:

这里写图片描述

1:每一个域名都是与ip进行绑定的
2:浏览器在访问域名的时候,会自动解析出对应绑定的ip地址
3:整个解析过程涉及到域名解析与域名服务器

在自己的本机怎么去进行域名和ip的绑定呢??
linux系统下,可以在本地本间中去设置:
打开/etc/hosts文件:
这里写图片描述
从我本机的hosts文件中可以看到,对应的ip绑定的主机名和自己设置的域名.第一个域名dean称为正式的主机名字,第二个以后都称为别名

域名解析的相关函数

1**:域名解析函数中的结构体**

  struct hostent{
    char *h_name ;//正式主机名字(第一个域名)
    char **h_aliases;//主机的别名(主机的别名对应的)
    int h_addrtype;//协议类型
    int h_length;//网络地址大小
    char **h_addr_list;//指向网络地址的指针
  };
上述的结构体放置的就是域名解析出来后放置的结构体

这里写图片描述

从上述图示中可以看出来,h_aliases指向的都是一个数组
h_addr_list指向的也是一个ip地址的数组,所以使用的都是二级指针

2:域名解析相关函数

#include<netdb.h>
struct hostent *gethostent(void);
//会将整个hosts文件下记录的主机和域名相对应的所有组全部遍历出来 

strct hostent *gethostbyname(const char *hostname);
参数:hostname 域名,获取的是指定的hostent
注意:
    gethostbyname是不支持ipv6的,并且在多线程的情况下是不稳定的.所有一般情况下都是使用gethostent来进行操作的

void sethostent(int stayopen);
void endhostent(void);

伪代码案例部分

struct hostnet *hptr;
if((hptr = gethostbyname("www.google.com")) == NULL){
    printf(stderr,"gethostbyname call failed.%s\n",hosterror(h_errno));
    return -1;
}
//输出h_name(正式域名)
printf("offical name:%s\n",hptr->h_name);

//输出别名:
for(pptr = hptr->h_aliases;*pptr!=NULL,pptr++){
    printf("\t aliases:%s\n",*pptr);
}
//输出网络类型
if(hptr->h_addrtype != AF_INET){
    fprintf(stderr,"invalid address type %d\n",hptr->h_addrtype);
    return -1;
}
pptr  = hptr->h_addr_list;
for(;*pptr!=NULL;pptr++){
    printf("\t address:%s\n",inet_ntop(hptr->h_addrtype,*pptr,str,sizeof(str)));
}

gethostbyname部分的实例代码

/*
 * ===========================================================================
 *
 *       Filename:  gethostbyname.c
 *    Description:  
 *        Version:  1.0
 *        Created:  2017年05月14日 21时52分34秒
 *       Revision:  none
 *       Compiler:  gcc
 *         Author:   (), 
 *        Company:  
 *
 * ===========================================================================
 */

#include<stdio.h>
#include<stdlib.h>
#include<netdb.h>
#include<string.h>
#include<sys/socket.h>

void out_host(struct hostent *h){
  //获取主机名称
  char *host_name = h->h_name;
  printf("host_name:%s\n",host_name);

  //获取网络类型
  int host_addrtype = h->h_addrtype;
  if(host_addrtype == AF_INET){
    printf("addrtype:IPV4\n");
  }else{
    printf("addrtype:IPV6\n");
  }
  //获取主机网络地址的大小
  int host_length = h->h_length;
  printf("host_length:%d\n",host_length);

  //获取主机的ip,主机的ip对应的是网络地址数组中的0,记住要将网络字节序转换成主机字节序号
  char ip[16];
  memset(ip,0,sizeof(ip));
  inet_ntop(h->h_addrtype,h->h_addr_list[0],ip,sizeof(ip));
  printf("host ip:%s\n",ip);

  //遍历去获取别名
  int aliase_count = 0;
  while( h->h_aliases[aliase_count] != NULL){
    printf("host_aliases[%d]:%s\n",aliase_count,h->h_aliases[aliase_count]);
    aliase_count++;
  }

  //获取指向网络地址的数组,
  int host_addr_list_count = 0;
  while(h->h_addr_list[host_addr_list_count] != NULL){
    memset(ip,0,sizeof(ip));
    inet_ntop(h->h_addrtype,h->h_addr_list[host_addr_list_count],ip,sizeof(ip));
    printf("host_addr_list[%d]:%s\n",host_addr_list_count,ip);
    host_addr_list_count++;
  }


}

int main(int argc,char *argv[]){
  if(argc < 2){
    printf("usag %s host \n",argv[0]);
    exit(EXIT_FAILURE);
  }

  struct hostent *h;
  //通过gethostbyname来获取hostent的结构体指针
  h = gethostbyname(argv[1]);
  if(h == NULL){
    printf("no host :%s\n",argv[1]);
  }else{
    out_host(h);
  }

  endhostent();
  return 0;
}

gethostent部分的实例代码

/*
 * ===========================================================================
 *
 *       Filename:  gethostent.c
 *    Description:  
 *        Version:  1.0
 *        Created:  2017年05月14日 22时14分48秒
 *       Revision:  none
 *       Compiler:  gcc
 *         Author:   (), 
 *        Company:  
 *
 * ===========================================================================
 */

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<netdb.h>
#include<sys/socket.h>
#include<memory.h>

void out_host(struct hostent *h){
  //获取主机名称
  char *host_name = h->h_name;
  printf("host_name:%s\n",host_name);

  //获取网络类型
  int host_addrtype = h->h_addrtype;
  if(host_addrtype == AF_INET){
    printf("addrtype:IPV4\n");
  }else{
    printf("addrtype:IPV6\n");
  }
  //获取主机网络地址的大小
  int host_length = h->h_length;
  printf("host_length:%d\n",host_length);

  //获取主机的ip,主机的ip对应的是网络地址数组中的0,记住要将网络字节序转换成主机字节序号
  char ip[16];
  memset(ip,0,sizeof(ip));
  inet_ntop(h->h_addrtype,h->h_addr_list[0],ip,sizeof(ip));
  printf("host ip:%s\n",ip);

  //遍历去获取别名
  int aliase_count = 0;
  while( h->h_aliases[aliase_count] != NULL){
    printf("host_aliases[%d]:%s\n",aliase_count,h->h_aliases[aliase_count]);
    aliase_count++;
 }
  int host_addr_list_count = 0;
  while(h->h_addr_list[host_addr_list_count] != NULL){
    memset(ip,0,sizeof(ip));
    inet_ntop(h->h_addrtype,h->h_addr_list[host_addr_list_count],ip,sizeof(ip));
    printf("host_addr_list[%d]:%s\n",host_addr_list_count,ip);
    host_addr_list_count++;
  }
}


int main(int argc,char *argv[]){
  if(argc < 2){
    printf("usage: %s host\n",argv[0]);
    exit(EXIT_FAILURE);
  }

  struct hostent *h;

  //因为gethost返回的是一个结构体数组
  while((h = gethostent()) != NULL){
    if(strcmp(argv[1],h->h_name) == 0){
      out_host(h);
    }else{
      int aliases_count = 0;
      while(h->h_aliases[aliases_count] != NULL){
          if(strcmp(argv[1],h->h_aliases[aliases_count]) == 0){
             out_host(h);
             exit(EXIT_FAILURE);
          }
          aliases_count++;
      }

    }
  }

 endhostent(); 

  return 0;
}

以上除了伪代码部分,gethostbyname.c个gethostent.c的代码都是直接可以进行run的,在使用的时候相对来说是比较推荐去使用gethostent的,因为gethostbyname不支持ipv6以及不建议在多线程情况下去使用的.当然,这也只是简单的去了解下dns去在解析的时候的简单的原理.

欢迎持续访问博客

2019-12-26 17:39:10 dfq737211338 阅读数 6
  • 网络工程师DNS域名解析强化训练视频课程

    网络工程师考试考察知识点繁多,形式多样。如何有效把握每种考察形式,拿到相应分数?这是历年考生挠头的事情。本系列课程紧抓考生痛点,对网工考试中重点题型分门别类讲解,反复强化训练,助力考生查缺补漏,拿到相应分数。本次分课程重点讲解了理解题型中DNS解题方法。通过基本概念阐述->实战配置演示->全真模拟题强化训练,三大步骤帮助考生掌握DNS解题方法,拿到相应分数。

    3234 人正在学习 去看看 徐朋

DNS服务器是用来做什么的呢?

简答来讲,DNS服务器是用来将域名(www.baidu.com)翻译成IP(192.168.0.1)地址的。
对于大部分的人来说,网站名称总比IP地址容易记得多,DNS服务器将网站解析成正确的IP地址,实现客户端对服务器的正常访问。

DNS服务配置文件named.conf解析

vim  /etc/
    options  {
        #指定DNS服务监听的端口和IP地址。"127.0.0.1"代表监听在当前主机,只为当前主机服务,此处可以选择注销或设置监听在物理网卡上。
        #listen-on  port  53  {127.0.0.1;};
        #指定DNS服务监听的ipv6的信息,作用同上
        #listen-on-v6  port  53  { : :1;};
        directory  "var/named";
        #作为缓存服务器使用时的相关信息
        dump-file  "/var/named/data/cache_dump.db";
        statistics-file  "/var/named/data/named_mem_stats.txt";
        #允许使用该DNS服务的客户端队列。此处表示仅允许当前主机使用。注销即可
        #allow-query  { localhost; };
        #迭代查询模式与递归查询模式,yes表示递归查询模式
        recursion  yes;
        
        dnssec-enable  yes;
        dnssec-validation  yes;

        bindkeys-file  "/etc/named.iscdlv.key";
        managed-keys-directory  "/var/named/dynamic";
    };
    logging  {
        channel  default_debug  {
            file  "/data/named.run";
            severity  dynamic;
        };
    };
    zone  "."  IN  {
        type  hint;
        file  "named.ca";
    };
    include  "/etc/named.rfc1912.zones";

DNS主、从域名服务器

DNS主域名服务器的概念

  • 特定DNS区域的官方服务器,具有唯一性
  • 负责维护该区域内所有域名->IP地址的映射记录

DNS从域名服务器的概念

  • 也称辅助域名服务器
  • 其维护的域名->IP地址记录来源于主域名服务器

DNS主域名服务器如何搭建?

#清空yum缓存
yum  clean  all
#yum安装软件包
yum  -y  install  bind  bind-chroot
#更新DNS配置文件
vim  /etc/named.conf
    #options  :  全局选项
    options {
        #定义数据文件位置
        directory "/var/named";
    };
    #定义该DNS服务器能解析哪些域名
    zone "test.com" in {
        #当前主机的类型  :  主DNS服务
        type  master;
        #定义记录域名“test.com”的数据文件名称
        file "test.com";
    };
#进入数据文件目录
cd  /var/named
#编辑“test.com”文件
vim  test.com
    #有效记录的缓存(生存)时间是86400秒,数据存在内存中。一天后从内存清除。该行可不保留
    $ttl  86400  
    #soa : 授权信息开始。主服务器必须要有
    #@  :  代表本域的域名
    #test.com.  :  本域的域名,“.”代表结束、终止
    #root.test.com.  :  管理员邮箱。当DNS无法完成解析时,会往管理员邮箱发邮件
    @    in  soa  test.com.  root.test.com.  (
    #更新序号,DNS主域名服务器 每次更新后,需要管理员手动更新增大序号,DNS从域名服务器以此来判断是否与DNS主域名服务器的数据同步一致。
    2017010101
    #刷新时间,DNS从域名服务器 向 DNS主域名服务器 每隔 3小时 更新同步一次数据
    3h
    #重试延迟。DNS从域名服务器 向 DNS主域名服务器 连接失败后,隔15分钟再次尝试
    15m
    #失效时间。DNS从域名服务器 向 DNS主域名服务器 连接失败后,一周后,不再尝试重连
    1w
    #无效记录的缓存时间TTL,1d  :  一天。
    1d
    )
    #首行格式  :  @      in  ns  主机名
    #此行格式  :  主机名  in  ns  IP地址
    #注1:主机名可以只写主机头(dns)或域名全称(dns.test.com.),只写主机头时,域名会在解析时自动补齐
    #注2:ns记录:指明本域中的DNS服务器主机名(一般对应正向解析)
    #注3:A(地址)记录(正向解析)
    #注4:MX记录(邮件交换记录,指明邮件服务器主机名,并有相应的正向解析)
    #注5:CNAME记录(别名记录,自己是谁的别名,或者说自己与谁的IP相同)
    #注6:PTR记录 (反向解析,将IP解析成主机名)
    
         in  ns dns
    #添加邮箱服务器的主机名是mail1,优先级是5
    @    in  MX  5  mail1
    #添加另一个邮箱服务器的主机名是mail2,优先级是10
         in  MX  10  mail2
    #指定主机名是mail1,域名是test.com对应的IP地址
    mail1  in  A  192.168.1.3
    #指定主机名是mail2,域名是test.com对应的IP地址
    mail2  in  A  192.168.1.4
    #指定test.com域名的DNS服务器是谁
    dns  in  a  192.168.75.128
    #解析域名为www.test.com的主机IP地址。"a"代表address地址。
    www  in  a  192.168.75.129
    #解析域名为ftp.test.com的主机IP地址
    ftp  in  a  192.168.75.130
    #别名web与主机名www解析为用一个主机IP地址
    web  in  cname  www
    #DNS服务器实现简单负载均衡。为了保证IP地址192.168.75.101一定能访问成功,需要对其实现集群机制。
    load  in  a  192.168.75.101
    load  in  a  192.168.75.102
    load  in  a  192.168.75.103
    #DNS实现泛域名解析.所有使用域名test.com访问的,不管主机名是什么,均解析到IP地址192.168.75.111.好处是提高了用户访问网站的容错性,坏处就是容易被人恶意修改、利用。
    *     in  a  192.168.75.111
    #空域解析.当客户端访问时不填写主机名,使用纯域名访问时,解析到IP地址192.168.75.112
    @     in  a  192.168.75.112
    
    

#在数据文件test.com中,要么只写名称“www”,要么写主机名完整域名“www.test.com.”以点结尾。    
#重启服务生效
service  named  start
#通过127.0.0.1服务器对域名www.test.com进行解析。验证DNS服务是否生效
nslookup  www.test.com  127.0.0.1
#向主机127.0.0.1查询域名test.com对应的soa记录信息
nslookup  -querytype=soa  test.com  127.0.0.1
#向主机127.0.0.1查询域名test.com真实的DNS服务器主机名(名称)是什么
nslookup  -querytype=ns  test.com  127.0.0.1
#向主机127.0.0.1查询主机名dns.test.com的IP是什么
nslookup  dns.test.com  127.0.0.1
#向主机127.0.0.1查询域名test.com对应的邮箱服务器信息有哪些?
nslookup  -querytype=mx  test.com  127.0.0.1
host  -t  mx  test.com
#向主机127.0.0.1查询与域名www.test.com使用同一主机IP地址的主机名有哪些
nslookup  -querytype=cname  www.test.com  127.0.0.1

bind-chroot : 用于产生虚拟目录“/var/named/chroot/etc/named.conf”,增加网络的安全性.
/var/named/chroot/var/named : 存放保存DNS解析记录的数据文件。
/var/named/chroot/etc/named.conf : 存放主配置文件。仅用于定义域名并指明数据文件的位置。
数据文件存放真正的解析记录。数据文件一般保存在“/var/named/"目录下。记录着域名和IP对应关系。

DNS监听在TCP和UDP的53端口。
UDP的53端口实现客户端对服务器的访问;TCP的53端口实现主、从域名服务器间的访问同步。

test.com : 代表域名
www : 代表主机
www.test.com : 代表主机域名全称
关于MX记录 : 关于客户端在发送邮件时,邮箱名并非是111@163.com而是111@mail.163.com,其中mail是主机名。当客户端访问DNS服务器时,DNS服务器查找域名163.com的邮箱服务器并返回主机名完整域名mail.163.com对应的IP地址,最后客户端完成邮件发送。
若"in"前为空,则表示当前值同上行。
DNS服务器可以填写多个不同主机名的邮箱服务器并按一定规律返回给客户端,实现邮箱服务器集群的负载均衡。
"host -t " 等同于 “nslookup -querytype=”
DNS服务器可以实现对服务器的简单负载均衡!!
“AAAA” : 四个A后面对应为ipv6的服务器地址

正向域数据文件中,不允许存在PTR记录(有NS、MX、A、CONAME)
反向域数据文件中,只允许存在SOA、NS、PTR
SOA、NS记录在正向、反向数据文件中必须存在

DNS域名服务器如何实现从IP地址到域名的解析?

DNS域名服务器实现从IP地址到域名的解析时,以“192.168.10.11”为例。DNS域名服务器首先对IP地址倒序解析为“11.10.168.192”,将“10.168.192”作为域名(域名完整形态为“10.168.192.in-addr.arpa”),向上查询主机为11的且域名为“10.168.192”对应的域名。

#清空yum缓存
yum  clean  all
#yum安装软件包
yum  -y  install  bind  bind-chroot
#更新DNS配置文件
vim  /etc/named.conf
    options {
        directory "/var/named";
    };
    zone "10.168.192.in-addr.arpa" in {
        type  master;
        file "10.168.192.in-addr.arpa";
    };

#进入数据文件目录
cd  /var/named
#编辑“test.com”文件
vim  10.168.192.in-addr.arpa
    $ttl  86400
    @  in  soa  10.168.192.in-addr.arpa.  dfq.qq.com. (
       2019122501
       3h
       15m
       1w
       1d
    )
    #此处必须用主机完整域名“dns.test.com.”!如果仅保留主机名dns,则dns会被自动补充为“dns.10.168.192.in-addr.arpa.”,因此此处写真实的主机完整域名“dns.test.com.”。
       in  ns  dns.test.com.
    #添加反向域,主机名为1的反向域(1.10.168.192.in-addr.apra)对应的域名为dns.test.com
    1  in  ptr  dns.test.com.
    #以此类推
    2  in  ptr  www.test.com.
    3  in  ptr  mail1.test.com.
    4  in  ptr  mail2.test.com.
#重启服务生效
service  named  restart
#验证服务是否生效,查看soa记录
host  -t  soa  10.168.192.in-addr.arpa
#查看ns记录
host  -t  ns   10.168.192.in-addr.arpa
#查看反向记录
host  192.168.10.1    
   

DNS从域名服务器如何搭建?

#清空yum缓存
yum  clean  all
#yum安装软件包
yum  -y  install  bind  bind-chroot
#更新DNS配置文件
vim  /etc/named.conf
    options {
        directory "/var/named";
    };
    #定义DNS正向域从服务
    zone "test.com" in {
        #定于服务类型为DNS从域名服务
        type  slave;
        #定义DNS主域名服务器是哪个
        masters  { 192.168.75.128; };
        #定义数据文件名称。一般保存在slave目录下,名称一般与DNS主域名(正向域名、反向域名)相同。
        file  "slaves/test.com";
    };
    #定义DNS反向域从服务
    zone "10.168.192.in-addr.arpa" in {
        #定于服务类型为DNS从域名服务
        type  slave;
        #定义DNS主域名服务器是哪个
        masters  { 192.168.75.128; };
        #定义数据文件名称。一般保存在slave目录下,名称一般与DNS主域名(正向域名、反向域名)相同。
        file "slaves/10.168.192.in-addr.arpa";
    };
#DNS从域名服务器不需要创建数据文件,数据文件来自DNS主域名服务器
#重启服务生效
service  named  restart

DNS的主、从服务器是针对(基于)同一域名来说的,并非无脑主从。
需要保证DNS主、从服务器从网络层面上是可以正常互相访问的。
DNS主服务器更新数据文件后,必须增大数据文件中的更新序号serial,到达更新时间后,DNS从服务器才会从DNS主服务器同步数据成功。

在这里插入图片描述

上面的“notify yes;”,当DNS主服务器完成更新后,提醒DNS从服务器更新。
“also-notify { 10.0.0.2 };” : 被提醒对象,即DNS从服务器的IP地址。
“allow-transfer { 10.0.0.2; };” : 允许哪个DNS从服务器从DNS主服务器同步数据。

DNS缓存域名服务器

DNS缓存域名服务器的概念

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

DNS缓存域名服务器没有具体的域名->IP地址记录文件,通过缓存为客户端提供服务。

DNS缓存域名服务器如何搭建?

#清空yum缓存
yum  clean  all
#yum安装软件包
yum  -y  install  bind  bind-chroot
#更新DNS配置文件
vim  /etc/named.conf
    options {
        #当客户端访问该DNS服务器时,将该请求转交给DNS服务器192.168.10.1.类似代理服务。
        forwarders { 192.168.10.1; };
    };
#重启服务生效
service  named  start
#测试是否生效

#如果不指定转发的目标DNS服务器,而直接转发到根域该如何配置呢?配置如下。
vim  /etc/named.conf
    options {
        directory "/var/named";
    };
    #此处为点
    zone "." in {
        type  hint;
        #文件named.ca中定义了根域服务器的IP地址,当前服务器根据named.ca文件查找根域服务器的IP地址。named.ca在安装DNS软件包时自动生成。
        file  "name.ca";
    };

正向解析与反向解析的概念

正向解析:根据主机名称(域名)查找对应的IP地址
反向解析:根据IP地址查找对应的主机域名

域名的结构

根域(顶级域)

如.com、.cn、.net、.org、.edu、.uk等

.com : 商业性机构
.org : 官方组织
.edu : 教育机构
.net : 电信部门的相关站点
.cn : 政府、地域机构

DNS服务器对于未收录的域名如何处理?

当然是返回根域服务器的IP地址,之后客户端会访问根域服务器查询域名。详细过程请阅读下面。

DNS域名服务系统时如何运行的?

在DNS域名服务系统中,存在根域服务器,该服务器不完成具体域名的解析。根域服务器仅记录不同根域(如.com/.cn)所对应的服务器的位置(IP)。

域名的解析过程

以www.sina.com.cn为例,首先根域服务器解析根域.cn,获取根域.cn对应的服务器位置,然后根域.cn服务器解析域名.com.cn,获取域名.com.cn对应的服务器的位置,之后域名.com.cn服务器解析sina.com.cn,获取名称sina.com.cn对应的服务器位置,最后由名称sina.com.cn服务器解析主机www服务器的位置。客户端需要不断的获取服务器位置,访问服务器位置,直到完成完整域名的解析。
在这里插入图片描述
整个域名解析过程成分布式数据结构,缓解了中心DNS服务器的压力,查询速度也比较快。
但是,从全局来看。
整个域名解析过程仍是相当浪费时间和资源的,因此DNS缓存域名服务器出现了。
解析过一遍的域名会被xx保存为一条“域名-IP地址”的记录,当客户端再次访问该域名时,xx会直接查询“域名-IP地址”的记录,返回服务器地址。
但是,如何保证“域名-IP地址”的记录不会被恶意利用呢?

对域名“www.sina.com.cn”的解析是倒序进行的。

DNS服务器解析有哪两种方式?

迭代 : 当前DNS服务器不能完成解析时,需将下一个服务器(如根域服务器)的IP响应给客户机。
递归 : 由DNS服务器最终返回解析结果。DNS服务器代替客户端实现域名的解析过程(不断的获取服务器位置,访问服务器位置)。

互联网中的DNS服务器都采用迭代的方式。
企业内网的DNS服务器都采用递归的方式。

2019-03-05 21:19:25 heian_99 阅读数 596
  • 网络工程师DNS域名解析强化训练视频课程

    网络工程师考试考察知识点繁多,形式多样。如何有效把握每种考察形式,拿到相应分数?这是历年考生挠头的事情。本系列课程紧抓考生痛点,对网工考试中重点题型分门别类讲解,反复强化训练,助力考生查缺补漏,拿到相应分数。本次分课程重点讲解了理解题型中DNS解题方法。通过基本概念阐述->实战配置演示->全真模拟题强化训练,三大步骤帮助考生掌握DNS解题方法,拿到相应分数。

    3234 人正在学习 去看看 徐朋

下面的部署是在Linux的DNS正向解析示例上进行修改的。

如果有什么问题或者错误,可以访问上篇帖子

下面开始有关DNS的服务部署。<DNS反向解析>

工具:虚拟机

          centos7 

配置:Linux   IP 192.168.196.132

                      DSN   192.168.196.132

 

建立DAS反向区域,实现反向解析

(1)编辑主配置文件named.conf

[root@wei named]# vim /var/named/chroot/etc/named.conf 


添加下面的代码

zone "1.168.192.in-addr.arpa" {
      type master;
      file "192.168.1.zone";  
};  

(2)建立反向区域

可以复制正向解析的文件作为模板

[root@wei named]# cp /var/named/chroot/var/named/wei.com.zone /var/named/chroot/var/named/192.168.1.zone

修改192.168.1.zone脚本

[root@wei named]# vim /var/named/chroot/var/named/192.168.1.zone
$TTL 1D
@       IN SOA  wei.com. 123456.qq.com. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      dns01.wei.com.
dns01   A       192.168.196.132
1       PTR     web.wei.com.
11      PTR     web.wei.com.
2       PTR     ftp.wei.com.
3       PTR     mail.wei.com.

(3)重启服务
 

[root@wei named]# systemctl restart named-chroot

[root@wei named]# systemctl restart named

(4)使用nslookup测试查看

 

 

DNS域名解析

阅读数 2020

DNS解析

博文 来自: hixiaoxiaoniao
没有更多推荐了,返回首页