Whatis DNS

什么是DNS

域名

如:www.baidu.com,这是一个主机名, 它实际上有一个明确的定义叫Full Qualified Domain Name,即完全限定域名.这个主机名对应的真正域名是.com和.baidu.com.由此可知,其实域名,是指一定范围内主机名的集合.
Domain Name Service(DNS)名称解析服务, 实际上是在进行名称转换,背后有一个数据查询的过程,以实现两种目标名称的相应转换.而DNS正是这种将FQDN转换成IP地址的服务.如:

119.75.213.61 ---> www.baidu.com
211.98.71.195 ---> www.bilibili.com

之所以存在主机名和IP地之间名称转换的问题,可以这么理解. 人的思考方式总是与计算机不同的,对于计算机而言,所有的语言最终都不过是数字,因此计算机之间通信用以区分彼此的是IP地址.但人类也需要通过自己能理解的方式去区分主机,用IP地址显然不得记忆,因些人们通过主机名来识别互联网中的每一台主机.

nsswitch框架: /etc/nsswitch.conf是这个框架的具体体现

给名称解析提供一个平台,而实际完成名称解析操作的是具体的一个个的店铺.这个框架依靠linux系统调用库工具帮助具体实现名称解析的程序完成名称解析.这两个库是如下

  • libnss_files.so

  • libnss_dns.so

/etc/nsswitch.conf中有一行内容为hosts: files dns

这里的files是libnss_files去/etc/hosts文件,通过这个文件完成主机名称到ip地址的映射关系;dns则是指dns服务.

所以当我们去请求一个主机名时,系统会调用一个库函数实现主机名到ip的转换,这个过程由stub resolvers完成.这个过程可以通过网际协议ping来查看.

➜  ~ ping http://www.bilibili.com/
PING http://www.bilibili.com/ (211.98.71.195): 56 data bytes
64 bytes from 211.98.71.195: icmp_seq=0 ttl=250 time=3.399 ms
64 bytes from 211.98.71.195: icmp_seq=1 ttl=250 time=4.362 ms
64 bytes from 211.98.71.195: icmp_seq=2 ttl=250 time=6.390 ms
64 bytes from 211.98.71.195: icmp_seq=3 ttl=250 time=6.101 ms
64 bytes from 211.98.71.195: icmp_seq=4 ttl=250 time=4.439 ms

早期主机名—>IP的方法,通过hosts文件,这时候的主机较少

IPADDR            FQDN                Aliases
211.98.71.195     www.bilibili.com    www

IANA和ICANN

IANA负责维护主机名与IP地址的映射关系.IANA即互联网名称分配机构.IANA通过ftp服务器保存一个hosts文件.所有的主机网络中访问其它主机时,会先去IANA的ftp服务器上下载最新的hosts文件,从而拿到要请求主机对应的IP地址.

  • 周期性任务更新hosts文件

  • Server: 由发送的请求目标主机在服务器端更新,之后将目标主机名对应的IP发送给客户端

    • 当时的条件,请求达到1KW条时,导致服务器不堪重负,查询也慢.

  • 分布式数据库

    • 按Level管理域名

    • 自顶向下为: 根,顶级,二级…

    • 上级仅知道其直接下级

    • 下级仅知道根的位置

    • 按Level管理域名

    • TLD(Top Level Domain)

      • 组织域: .com, .org, .net, .cc

        • 国家域: .cn, .jp, .hk, .tw, .ca, .iq

        • 反向域: IP—>FQDN

但随着互联网中主机数量增大,后来民间成立了一个ICANN替代了IANA的作用.

名称解析分类

  • 正向解析: FQDN—>IP

  • 反向解析: IP—>FQDN

  • 一个IP可以对应多个FQDN

  • 一个FQDN也可以对应多个IP, 这是DNS的高级功能,可能实现负载均衡,提高服务器的负载能力

查询

  • 递归: 只发出一次请求

  • 迭代: 发出多次请求

  • 所有DNS请求都是两段式: 前半段递归,后半段迭代

  • 查询结果会缓存下来

DNS服务器

  • 接受本地客户端的查询请求(递归)

  • 外部客户端请求: 请求权威答案的

    • 肯定答案: TTL

    • 否定答案: TTL

  • 外部客户端请求非权威答案: 非权威答案,不给递归查询

  • 根或.com的域不会给任何人递归,安全起见

/etc/resolv.conf

这个文件中的nameserver IP必须是允许递归的服务器地址,而stub resolver又是一个要求必须有应答的递归请求.因些,一旦写成不允许递归的IP, stub resolver将得不到应答.

DNS服务器

不同的域名层级实际就是由一台一台的域名服务器组织起来的.

根服务器

全球一共有A-M排列的13组根服务器,共504台.其中中国北京有四台根镜像.域名格式为a.root-servers.net.

DNS服务器主从结构

如果一台DNS服务器,意味着这个台DNS服务器管理的所有主机都将不可达.这是十分危险的,从而有必要提供安全机制,以防止DNS服务器挂掉后造成不可想象的后果.

  • MASTER DNS服务器: 数据修改

  • SLAVE DNS服务器: 请求数据同步,只有有需要时才会pull数据

    • serials number: 版本号

    • refresh: 多长时间检查一次MASTER的版本号

    • retry: 重试时间

    • expire: 认为MASTER挂掉的时间

    • negative answer TTL: 否定答案缓存时长

缓存DNS服务器

不提供任何权威答案,只负责缓存

转发DNS服务器

不提供权威答案,也不缓存,只将请求转发出去

NOTE:

DNS服务器是由上级在数据库授权的

DNS主机角色

所有域中的主机都有自己的角色,比如有的是邮件服务器,有的是www的服务器等等.

在数据库中的每一个条目叫作一个资源记录,每条记录中的RRT(资源记录类型)字段用以区分这条记录最终要转换成什么.格式:

$TTL 600;
NAME  TTL(可省略,但必须提供全局变量)    IN    RRT    VALUE
www.baidu.com                       IN    A      1.1.1.1
1.1.1.1                             IN    PTR    www.baidu.com

资源记录类型RRT

用来表示这条记录要解析的值在DNS内部是什么角色.

  • A

  • AAAA

  • NS

  • MX

  • WWW

  • PTR

  • @: 用来表示域名zone name

A记录

FQDN           ---> IPv4
www.baidu.com. ---> 119.75.213.61

AAAA记录

FQDN           ---> IPv6
www.baidu.com. ---> 2001:503:ba3e::2:30

NS记录

在一个zone内,允许有多台NS服务器,而这些服务器的主从关系是通过配置文件加以区分.

Zone Name      ---> FQDN

baidu.com.     ---> ns1.baidu.com.(NS记录)
ns1.baidu.com. ---> 119.75.213.61(A记录)

ZoneName      TTL    IN    RRT   VALUE     
baidu.com.    600    IN    NS    ns1.baidu.com.
ns1.baidu.com.600    IN    A     1.1.1.1

SOA:起始授权记录

由于一个zone内,允许有多台NS服务器,主从之间如何同步数据,以及起始授权对象是谁,这个申明通过SOA记录负责完成.这条记录必须出现在数据文件的第一条.

邮箱格式正常为 nora@126.com, 但是在资源记录中要写成nora.126.com.因为在资源记录中这个@是一个通配符,代表zone name.

# MASTER FQDN 是主DNS服务器主机全限定主名称
# 主从之间请求的几个参数可以用的单位有: H, M, D, W, 默认是S
# serial number最长不能超过10位,一般使用时间戳,数据文件每修改一次,serialnumber也要修改一次
# 这个资源数据文件中注释用`;`开头
$TTL 600;
ZONE NAME    IN        RRT        MASTER FQDN    ADMINISTRATOR_MAILBOX (
                                         serial number
                                         refresh
                                         retry
                                         expire
                                         negative answer)
baidu.com    IN        SOA        ns1.baidu.com. admin.baidu.com. (
                                         201706241641 ; 版本号
                                         1H
                                         1M
                                         1W
                                         1D )

MX(Mail Exchanger)

最终指向某个域内邮件服务器的主机名,一般会有多台,由优先级字段决定使用中的是哪台.优先级从0-99,数字越小优先级越高. 同时也要像NS一样,要给出这台邮件服务器对应的A记录,以告诉请求者这台服务器的IP地址.

ZONE NAME      ---> FQDN

ZONE NAME         TTL     IN    RRT    PRI    VALUE
baidu.com.        600     IN    MX     10     mail.baidu.com.
mail.baidu.com.   600     IN    A             1.1.1.1

PTR记录: 反向解析,交换IP转换成FQDN

IP             ---> FQDN
1.1.1.1    600    IN    PTR    www.baidu.com

CNAME: Canonical Name 正式名称

FQDN              ---> FQDN
zone name            TTL        IN        RRT        VALUE
www2.baidu.com.    600      IN        CNAME    www.baidu.com.

还有一些概念

  • 域: Domain是一个逻辑概念.

  • 区域: Zone是一个物理概念.

NOTE:

Zone是一个物理概念.一个域名在DNS解析的过程中依赖解析数据文件,正向解析依赖正向解析文件,反向解析依赖反向解析文件,正向解析文件即正向区域,反向解析文件即反向区域.这两个区域构成的空间即为域.但是域与区域之间没有必然的包含关系.因为域由上级授权,授权通过区域完成,因此域来自于区域文件.同时,正向域与反向域的授权是分开进行的.正向区域的zone name与域名相同,但是反向区域的zone name却是与域名有很大的区别.

# 注册了一个域名 xpercent.com
# 又从ICANN获得了一个网段 10.211.55.0/24
# xpercent.com域中 域名解析服务器主机为 10.211.55.2
# xpercent.com域中 还有一台MX邮件服务器, 主机IP为 10.211.55.3
# 从上级获取授权, 写一个授权记录
# 授权记录
Zone Name            IN        RRT        VALUE
xpercent.com.        IN        NS        ns1.xpercent.com.
ns1.xpercent.com.IN        A        10.211.55.2

# 正向区域文件
Zone Name             IN        RRT        FQDN    ADMIN_MAILBOX
xpercent.com.      IN        SOA        ns1.xpercent.com. mail.xpercent.com. (
                                201706241641 ; 版本号
                                1H
                                5M
                                1W
                                1D )
xpercent.com.      IN     MX        10.211.55.3
www.xpercent.com. IN    A        10.211.55.2

注意,soa的zone name写成@,@知道自己处于哪个域内,这是通过配置文件实现的.
而此后的所有记录zone name都可以将域名去掉后只写前半段.**不可加上`.`**

# 反向区域文件
# ZONE NAME是网段地址的逆序且加上.in-addr.arpa后缀
Zone Name                           IN        RRT        VALUE
55.211.55.in-addr.arpa.      IN        SOA        
2.55.211.10.in-addr.arpa.   IN     PTR     www.xpercent.com.
# 上面的PTR记录zone name可简写为2
  • 区域传送的类型

    • 完全区域传送: axfr

    • 增量区域传送: ixfr

  • 主从区域类型

    • 主区域: 主DNS服务器 MASTER

    • 从区域: 从DNS服务器 SLAVE

    • 提示区域: 自己找不到的,根据hint找到根的位置 HINT

    • 转发区域: 添加一条可递归的DNS服务器 FORWAR

DNS服务器搭建

规划

  • 注册域名: xpercent.me

  • 网段号: 10.211.55.0/24

  • 搭一台缓冲DNS服务器: 10.211.55.1 负责解析注册域的所有FQDN工作

  • www.xpercent.me 10.211.55.1, 10.211.55.3

  • mail.xpercent.me 10.211.55.2

  • ftp.xpercent.me www.xpercent.me

BIND安装

shell> rpm -qa | grep "^bind"
shell> rpm install -y bind-lib, bind-utils, bind
shell> rpm -qlv bind # 查看bind最后的安装目录及配置文件等
# 文件列表如下
drwxr-x---    2 root  named  0 May  9 21:43 /etc/named
-rw-r-----    1 root  named  984 Nov 20 2015 /etc/named.conf
-rw-r--r--    1 root  named  2389 May  9 21:43 /etc/named.iscdlv.key
-rw-r-----    1 root  named  931 Jun 21  2007 /etc/named.rfc1912.zones
-rw-r--r--    1 root  named  487 Jul 19  2010 /etc/named.root.key
# 守护进程脚本
-rwxr-xr-x    1 root  root   7992 May  9 21:43 /etc/rc.d/init.d/named
# 守护进程脚本的配置文件
-rw-r--r--    1 root    root 1695 May  9 21:43 /etc/sysconfig/named
# rndc文件
-rw-r-----    1 root    named  0 May  9 21:43 /etc/rndc.conf
-rw-r-----    1 root    named  0 May  9 21:43 /etc/rndc.key
# 二进制程序
-rwxr-xr-x    2 root    root   550744 May  9 21:43 /usr/sbin/named
-rwxr-xr-x    1 root    root   28464 May  9 21:43 /usr/sbin/named-checkconf
-rwxr-xr-x    1 root    root   24416 May  9 21:43 /usr/sbin/named-
checkzone
# 区域数据文件
-rw-r-----    1 root  named  3171 Jan 11  2016 /var/named/named.ca
-rw-r-----    1 root  named  152 Dec 15  2009 /var/named/named.empty
-rw-r-----    1 root  named  152 Jun 21  2007 /var/named/named.localhost
-rw-r-----    1 root  named  168 Dec 15  2009 /var/named/named.loopback

BIND相关文件

  • /etc/named

  • /etc/named.conf BIND进程的工作属性,区域的定义等主配置文件,相当于已经安装caching-server

  • /etc/rndc.key

    • rndc: 远程域名控制进程

    • rndc.key: 是远程管理使用的密钥

    • 配置文件其实是: /etc/rndc.conf

  • /var/named: 区域数据文件存储位置

  • /etc/rc.d/named: start|stop|restart|reload|status|configtest

  • /var/log/message: dns运行时日志文件

  • named: 二进制程序,位于/usr/sbin/named

  • named-checkconfig: 检查区域配置文件的语法

  • named-checkzone: 检查区域配置文件的语法

  • named.ca: 13组根结点

  • named.localhost: 将localhost解析成127.0.0.1及::1

  • named.loopback: 本地主机名的正反向解析

DNS监听的端口

  • UDP 53, 默认的查询请求协议

  • TCP 53, 从服务器同步数据时用TCP

  • TCP 953, RNDC监听的端口

数据文件注意事项

格式: 全文所有括号前后有空格,每一个完整语句必须以;结束.

ZONE "ZONE NAME" IN {
    type master|slave|hint|forward
    file "相对option中的directory而言"
};
  • options: 全局选项,对每一个zone有效

    • directory: 定义数据目录,是个相对路径,文件中其它目录都相对这个路径而言

    • recursion: 是否给所接收的请求进行递归查询

  • ZONE:

    • 根区域: type hint;

    • 主区域: type master;

    • 从区域: type slave;

  • include:

搭建流程

用到的一些命令及基说明

shell> mv /etc/named.conf /etc/named.conf.backup
shell> cp /etc/named.conf.backup /etc/named.conf -p
shell> named-checkconfig
shell> named-checkzone "." /var/named/named.ca
# named-checkzone "zone name" filename
shell> named-checkzone "localhost" /var/named/named.localhost
shell> named-checkzone "loopback" /var/named/named.loopback
shell> getenforce # 确认selinux是否开启,开启的话要关闭
shell> setenforce 0 # 临时性的关闭selinux
shell> servcie named start
shell> tail /var/log/message
shell> netstat -npl#p父进程id/l列表/n以ip:port形式显示进程/t:tcp/u:udp
shell> ping www.baidu.com # 能ping能表示服务器搭建成功
shell> dig -t "RT" "ZONE NAME"
shell> dig -t NS    xpercent.me
shell> dig -t A www.xpercent.me.
shell> dig -t MX mail.xpercent.me.
shell> dig -x IP

# dig: domain information gropher,在域名服务器系统中查看相关信息
shell> dig -t NS . # 查找要域的所有DNS服务器,前提是运行dig进程的主机必须要能访问互联网
shell> dig -t NS . @A.ROOT-SERVERS.NET. # 直接通过A.ROOT-SERVERS.NET.这个域查找根域的信息

DNS服务器配置文件/etc/named.conf

options {
    directory "/var/named";
};
zone "." IN {
    type hint;
    file "named.ca";
};
zone "localhost" IN {
    type master;
    file "named.localhost";
};
zone "loopback" IN {
    type master;
    file "named.loopback";
};
zone "xpercent.me" IN {
    type master;
    file "xpercent.me.zone";
};
zone "55.211.10.in-addr.arpa" IN {
    type master;
    file "10.211.55.zone";
};

正向区域文件/var/named/xpercent.me.zone

$TTL 86400;
@            IN        SOA    ns1.xpercent.me.        admin.xpercent.me. (
                    201706241800
                    1H
                    5M
                    1W
                    1D )
                IN        NS           ns1
                IN        MX  10       mail
ns1             IN        A            10.211.55.1
www             IN        A            10.211.55.1
mail            IN        A            10.211.55.2
www             IN        A            10.211.55.3
ftp             IN        CNAME        www

反向区域文件/var/named/10.211.55.1.zone

$TTL 86400;
@    IN    SOA    ns1.xpercent.me.    admin.xpercent.me. (
                    201706241800
                    1H
                    5M
                    1W
                    1D )
    IN    NS    ns1.xpercent.me. ; 这里的FQDN必须写到`.`,
1    IN    PTR    www.xpercent.me.
2    IN    PTR    mail.xpercent.me.
3    IN    PTR    www.xpercent.me.

/etc/resolv.conf

# 这里的nameserver必须指向一台可以联网的主机
nameserver 10.211.55.200

测试一下

# 正向测试
[root@os1 named]# dig -t A www.xpercent.me
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -t A www.xpercent.me
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55993
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;www.xpercent.me.        IN    A

;; ANSWER SECTION:
www.xpercent.me.    86400    IN    A    10.211.55.1
www.xpercent.me.    86400    IN    A    10.211.55.3

;; AUTHORITY SECTION:
xpercent.me.        86400    IN    NS    www.xpercent.me.

;; Query time: 0 msec
;; SERVER: 10.211.55.200#53(10.211.55.200)
;; WHEN: Sat Jun 24 07:52:18 2017
;; MSG SIZE  rcvd: 79

# 反向测试
[root@os1 named]# dig -x 10.211.55.1
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -x 10.211.55.1
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50309
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;1.55.211.10.in-addr.arpa.    IN    PTR

;; ANSWER SECTION:
1.55.211.10.in-addr.arpa. 86400    IN    PTR    www.xpercent.me.

;; AUTHORITY SECTION:
55.211.10.in-addr.arpa.    86400    IN    NS    ns1.xpercent.me.

;; ADDITIONAL SECTION:
ns1.xpercent.me.    86400    IN    A    10.211.55.1

;; Query time: 0 msec
;; SERVER: 10.211.55.200#53(10.211.55.200)
;; WHEN: Sat Jun 24 08:48:14 2017
;; MSG SIZE  rcvd: 105

递归与迭代区别

递归查询

[root@os1 named]# dig -t A www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -t A www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8910
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 5, ADDITIONAL: 5

;; QUESTION SECTION:
;www.baidu.com.            IN    A

;; ANSWER SECTION:
www.baidu.com.        1200    IN    CNAME    www.a.shifen.com.
www.a.shifen.com.    300    IN    A    111.13.100.91
www.a.shifen.com.    300    IN    A    111.13.100.92

;; AUTHORITY SECTION:
a.shifen.com.        1145    IN    NS    ns1.a.shifen.com.
a.shifen.com.        1145    IN    NS    ns2.a.shifen.com.
a.shifen.com.        1145    IN    NS    ns3.a.shifen.com.
a.shifen.com.        1145    IN    NS    ns5.a.shifen.com.
a.shifen.com.        1145    IN    NS    ns4.a.shifen.com.

;; ADDITIONAL SECTION:
ns1.a.shifen.com.    1145    IN    A    61.135.165.224
ns2.a.shifen.com.    1145    IN    A    180.149.133.241
ns3.a.shifen.com.    1145    IN    A    61.135.162.215
ns4.a.shifen.com.    545    IN    A    115.239.210.176
ns5.a.shifen.com.    1145    IN    A    119.75.222.17

;; Query time: 45 msec
;; SERVER: 10.211.55.200#53(10.211.55.200)
;; WHEN: Sat Jun 24 09:32:16 2017
;; MSG SIZE  rcvd: 260

迭代查询

Step1

[root@os1 named]# dig +norecurse -t www.baidu.com
;; Warning, ignoring invalid type www.baidu.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> +norecurse -t www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2486
;; flags: qr ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;.                IN    NS

;; ANSWER SECTION:
.            517857    IN    NS    e.root-servers.net.
.            517857    IN    NS    m.root-servers.net.
.            517857    IN    NS    k.root-servers.net.
.            517857    IN    NS    i.root-servers.net.
.            517857    IN    NS    j.root-servers.net.
.            517857    IN    NS    f.root-servers.net.
.            517857    IN    NS    l.root-servers.net.
.            517857    IN    NS    c.root-servers.net.
.            517857    IN    NS    h.root-servers.net.
.            517857    IN    NS    a.root-servers.net.
.            517857    IN    NS    g.root-servers.net.
.            517857    IN    NS    b.root-servers.net.
.            517857    IN    NS    d.root-servers.net.

;; ADDITIONAL SECTION:
a.root-servers.net.    517857    IN    A    198.41.0.4
a.root-servers.net.    517857    IN    AAAA    2001:503:ba3e::2:30
b.root-servers.net.    517857    IN    A    192.228.79.201
b.root-servers.net.    517857    IN    AAAA    2001:500:200::b
c.root-servers.net.    517857    IN    A    192.33.4.12
c.root-servers.net.    517857    IN    AAAA    2001:500:2::c
d.root-servers.net.    517857    IN    A    199.7.91.13
d.root-servers.net.    517857    IN    AAAA    2001:500:2d::d
e.root-servers.net.    517857    IN    A    192.203.230.10
e.root-servers.net.    517857    IN    AAAA    2001:500:a8::e
f.root-servers.net.    517857    IN    A    192.5.5.241
f.root-servers.net.    517857    IN    AAAA    2001:500:2f::f
g.root-servers.net.    517857    IN    A    192.112.36.4

;; Query time: 0 msec
;; SERVER: 10.211.55.200#53(10.211.55.200)
;; WHEN: Sat Jun 24 09:34:19 2017
;; MSG SIZE  rcvd: 508

Step2

[root@os1 named]# dig +norecurse -t A www.baidu.com @a.gtld-servers.net.

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> +norecurse -t A www.baidu.com @a.gtld-servers.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24622
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 5, ADDITIONAL: 5

;; QUESTION SECTION:
;www.baidu.com.            IN    A

;; AUTHORITY SECTION:
baidu.com.        172800    IN    NS    dns.baidu.com.
baidu.com.        172800    IN    NS    ns2.baidu.com.
baidu.com.        172800    IN    NS    ns3.baidu.com.
baidu.com.        172800    IN    NS    ns4.baidu.com.
baidu.com.        172800    IN    NS    ns7.baidu.com.

;; ADDITIONAL SECTION:
dns.baidu.com.        172800    IN    A    202.108.22.220
ns2.baidu.com.        172800    IN    A    61.135.165.235
ns3.baidu.com.        172800    IN    A    220.181.37.10
ns4.baidu.com.        172800    IN    A    220.181.38.10
ns7.baidu.com.        172800    IN    A    119.75.219.82

;; Query time: 113 msec
;; SERVER: 192.5.6.30#53(192.5.6.30)
;; WHEN: Sat Jun 24 09:35:41 2017
;; MSG SIZE  rcvd: 201

Step3

[root@os1 named]# dig +norecurse -t A www.baidu.com @dns.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> +norecurse -t A www.baidu.com @dns.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17196
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 5

;; QUESTION SECTION:
;www.baidu.com.            IN    A

;; ANSWER SECTION:
www.baidu.com.        1200    IN    CNAME    www.a.shifen.com.

;; AUTHORITY SECTION:
a.shifen.com.        1200    IN    NS    ns5.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns3.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns2.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns1.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns4.a.shifen.com.

;; ADDITIONAL SECTION:
ns1.a.shifen.com.    1200    IN    A    61.135.165.224
ns2.a.shifen.com.    1200    IN    A    180.149.133.241
ns3.a.shifen.com.    1200    IN    A    61.135.162.215
ns4.a.shifen.com.    1200    IN    A    115.239.210.176
ns5.a.shifen.com.    1200    IN    A    119.75.222.17

;; Query time: 7 msec
;; SERVER: 202.108.22.220#53(202.108.22.220)
;; WHEN: Sat Jun 24 09:36:45 2017
;; MSG SIZE  rcvd: 228

总结
一条命令跟踪整个解析过程.

[root@os1 named]# dig +trace -t A www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> +trace -t A www.baidu.com
;; global options: +cmd
.            517565    IN    NS    k.root-servers.net.
.            517565    IN    NS    d.root-servers.net.
.            517565    IN    NS    c.root-servers.net.
.            517565    IN    NS    l.root-servers.net.
.            517565    IN    NS    i.root-servers.net.
.            517565    IN    NS    a.root-servers.net.
.            517565    IN    NS    g.root-servers.net.
.            517565    IN    NS    f.root-servers.net.
.            517565    IN    NS    m.root-servers.net.
.            517565    IN    NS    e.root-servers.net.
.            517565    IN    NS    j.root-servers.net.
.            517565    IN    NS    b.root-servers.net.
.            517565    IN    NS    h.root-servers.net.
;; Received 508 bytes from 10.211.55.200#53(10.211.55.200) in 5 ms

com.            172800    IN    NS    c.gtld-servers.net.
com.            172800    IN    NS    j.gtld-servers.net.
com.            172800    IN    NS    l.gtld-servers.net.
com.            172800    IN    NS    f.gtld-servers.net.
com.            172800    IN    NS    d.gtld-servers.net.
com.            172800    IN    NS    a.gtld-servers.net.
com.            172800    IN    NS    k.gtld-servers.net.
com.            172800    IN    NS    i.gtld-servers.net.
com.            172800    IN    NS    h.gtld-servers.net.
com.            172800    IN    NS    m.gtld-servers.net.
com.            172800    IN    NS    b.gtld-servers.net.
com.            172800    IN    NS    g.gtld-servers.net.
com.            172800    IN    NS    e.gtld-servers.net.
;; Received 491 bytes from 192.33.4.12#53(192.33.4.12) in 3170 ms

baidu.com.        172800    IN    NS    dns.baidu.com.
baidu.com.        172800    IN    NS    ns2.baidu.com.
baidu.com.        172800    IN    NS    ns3.baidu.com.
baidu.com.        172800    IN    NS    ns4.baidu.com.
baidu.com.        172800    IN    NS    ns7.baidu.com.
;; Received 201 bytes from 192.48.79.30#53(192.48.79.30) in 116 ms

www.baidu.com.        1200    IN    CNAME    www.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns2.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns1.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns5.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns4.a.shifen.com.
a.shifen.com.        1200    IN    NS    ns3.a.shifen.com.
;; Received 228 bytes from 220.181.38.10#53(220.181.38.10) in 17 ms

域名与博客

需求

将xpercent.tech作为博客的访问入口

准备工作

  • 托管在github/coding/远程服务器上的hexo博客

  • github pages服务, repository中上传CNAME文件,内容为xpercent.tech

  • coding pages服务, CNAME同上

期望结果

hexo博客域名github pages码市 pages
http://xpercent.techxpercent.technoraxie.github.ioxpercent.coding.me
http://www.xpercent.techxpercent.technoraxie.github.ioxpercent.coding.me

域名解析资源记录表

选用DNSPod域名解析服务器.

区域名(ZONE NAME): xpercent.tech

正向区域文件

ZONE NAMERRTINTTLVALUE
@CNAMEIN600noraxie.github.io.
@CNAMEIN600xpercent.coding.me.
@NSIN86400f1g1ns1.dnspod.net.
@NSIN86400f1g1ns1.dnspod.net.
wwwCNAMEIN600noraxie.github.io.
wwwCNAMEIN600xpercent.coding.me.

验证域名

➜  ~ dig @f1g1ns1.dnspod.net. xpercent.tech. CNAME

; <<>> DiG 9.8.3-P1 <<>> @f1g1ns1.dnspod.net. xpercent.tech. CNAME
; (5 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59769
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;xpercent.tech.            IN    CNAME

;; ANSWER SECTION:
xpercent.tech.        600    IN    CNAME    noraxie.github.io.

;; AUTHORITY SECTION:
xpercent.tech.        86400    IN    NS    f1g1ns2.dnspod.net.
xpercent.tech.        86400    IN    NS    f1g1ns1.dnspod.net.

;; Query time: 69 msec
;; SERVER: 180.163.19.15#53(180.163.19.15)
;; WHEN: Fri Jun 30 17:59:30 2017
;; MSG SIZE  rcvd: 126

======================================================

➜  ~ dig @f1g1ns1.dnspod.net. www.xpercent.tech. CNAME

; <<>> DiG 9.8.3-P1 <<>> @f1g1ns1.dnspod.net. www.xpercent.tech. CNAME
; (5 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13990
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.xpercent.tech.        IN    CNAME

;; ANSWER SECTION:
www.xpercent.tech.    600    IN    CNAME    xpercent.coding.me.

;; AUTHORITY SECTION:
xpercent.tech.        86400    IN    NS    f1g1ns1.dnspod.net.
xpercent.tech.        86400    IN    NS    f1g1ns2.dnspod.net.

;; Query time: 63 msec
;; SERVER: 180.163.19.15#53(180.163.19.15)
;; WHEN: Fri Jun 30 18:00:08 2017
;; MSG SIZE  rcvd: 131
    原文作者:NoraXie
    原文地址: https://segmentfault.com/a/1190000010001529
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞