我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

1. 域名

在解释DNS之前,我们先简单说一下域名

比如说我们使用浏览器访问一个网站的时候,我们输入的网站地址就是域名,但是其实我们知道互联网上每一台机器都有一个IP地址,如果我们需要访问一个网站其实就需要输入该网站的IP地址才能访问到服务器,但是IP地址往往比较难记,IPv4就更难记了,更别说IPv6了,所以我们就通过域名来进行管理,但是在访问的时候系统底层还是通过IP地址来访问的,而域名与IP地址的直接转换是通过DNS服务器来完成的,首先我们来了解一下关于域名的一些知识,就以这个域名为例。

通常对于一个域名来说,主要分为3个部分

www.google.com主机名    域名    类型

①type表示域名的类型(com、cn、edu、org等)

②域名名称,同上

③主机名域中的某个主机名,如www主机

其实严格来说,域名后面有一个“。”,所以完整的域名应该是

对于域名来说,其大小写是不敏感的,在浏览器中我们输入大写和小写字母指向的IP地址是一样的。

2. DNS

从上面可以看出,每一个域名都对应着一个IP地址,当我们访问一个域名的时候,底层操作系统其实就是通过IP地址来进行通信的,所以我们需要一个服务,能够把域名转换成对应的IP地址,或者把IP地址反向转换成域名。这个服务就是DNS(Name)。

DNS所提供的服务就是在IP和域名之间进行转换,DNS服务是由DNS服务器提供的,一般提供DNS服务的都有单独的DNS服务器,这个DNS服务器的作用就是保存我们的域名到他们的IP地址之间的解析。比如我们访问这个域名的时候,我们的主机首先会向某个DNS服务器发起DNS请求,请求DNS服务器告诉我这个域名的IP地址,这时候DNS服务器就会给我们返回域名的IP地址,这时候我们就是根据这个IP地址来访问服务器的。

DNS服务就是将我们的域名解析成其对应的IP地址,我们日常使用的联网计算机一般都是作为DNS客户端,应用程序、服务、进程等通过操作系统底层功能发起请求,向DNS服务器查询,解析指定的域名

在Linux系统中,域名解析一般是使用系统底层提供的()函数进行。

在Linux系统中,域名解析通常可以基于以下三种方法:

①文件(/etc/hosts、/etc/)

hosts是主机文件,里面保存着一个域名和IP地址的对应关系,下面也有这样一个文件,通常Linux下通过/etc/hosts文件来解析域名。

[root@xiaoluo ~]# cat /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

因为hosts文件中保存的是域名和IP地址的直接对应关系,所以我们也可以手动将我们的域名指定为另外一个IP,比如我们将ip改为192.168.1.1

[root@xiaoluo ~]# ping www.google.com
PING www.google.com (173.194.72.103) 56(84) bytes of data.
[root@xiaoluo ~]# vim /etc/hosts127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.1     www.google.com[root@xiaoluo ~]# ping www.google.com
PING www.google.com (192.168.1.1) 56(84) bytes of data.

我们看到,当我们把映射关系192.168.1.1添加到/etc/hosts文件之后,在ping的时候,它的IP地址变成了192.168.1.1,这是我们自己设置的,但是我们知道它的IP地址肯定不是这个。为此,我们可以把一些域名的IP地址直接写入操作系统上的hosts文件中,这样,在解析的时候就可以直接访问我们指定的IP地址了。

②DNS是通过我们指定的DNS服务器来解析我们的域名。

③NIS很少使用

我们可以通过查看文件 /etc/.conf 来检查 DNS 解析的顺序

[root@xiaoluo ~]# cat /etc/nsswitch.conf 
#
# /etc/nsswitch.conf
#
# An example Name Service Switch config file. This file should be
# sorted with the most-used services at the beginning.
#
# The entry '[NOTFOUND=return]' means that the search for an
# entry should stop if the search in the previous entry turned
# up nothing. Note that if the search failed due to some other reason
# (like no NIS server responding) then the search continues with the
# next entry.
#
# Valid entries include:
#
#    nisplus            Use NIS+ (NIS version 3)
#    nis            Use NIS (NIS version 2), also called YP
#    dns            Use DNS (Domain Name Service)
#    files            Use the local files
#    db            Use the local database (.db) files
#    compat            Use NIS on compat mode
#    hesiod            Use Hesiod for user lookups
#    [NOTFOUND=return]    Stop searching if not found so far
#
# To use db, put the "db" in front of "files" for entries you want to be
# looked up first in the databases
#
# Example:
#passwd:    db files nisplus nis
#shadow:    db files nisplus nis
#group:     db files nisplus nispasswd:     files
shadow:     files
group:      files#hosts:     db files nisplus nis dns
hosts:      files dns# Example - obey only what nisplus tells us...
#services:   nisplus [NOTFOUND=return] files
#networks:   nisplus [NOTFOUND=return] files
#protocols:  nisplus [NOTFOUND=return] files
#rpc:        nisplus [NOTFOUND=return] files
#ethers:     nisplus [NOTFOUND=return] files
#netmasks:   nisplus [NOTFOUND=return] files     
bootparams: nisplus [NOTFOUND=return] files
ethers:     files
netmasks:   files
networks:   files
protocols:  files
rpc:        files
services:   files
netgroup:   nisplus
publickey:  nisplus
automount:  files nisplus
aliases:    files nisplus

我们看到我们的主机解析的顺序是先通过文件file进行解析,再通过DNS进行解析,我们可以直接修改该文件来控制我们查询的顺序。

3. DNS查询

我们可以通过host或者dig命令来查询我们的域名对应的IP地址。

①主机(显示较少内容)

[root@xiaoluo ~]# host www.google.com
www.google.com has address 74.125.31.104www.google.com has address 74.125.31.147www.google.com has address 74.125.31.106www.google.com has address 74.125.31.99www.google.com has address 74.125.31.103www.google.com has address 74.125.31.105www.google.com has IPv6 address 2404:6800:4008:c01::6a

②挖掘(显示详细内容)

[root@xiaoluo ~]# dig www.google.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65143;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:
;www.google.com.            IN    A
;; ANSWER SECTION:
www.google.com.        5    IN    A    74.125.31.104www.google.com.        5    IN    A    74.125.31.147www.google.com.        5    IN    A    74.125.31.106www.google.com.        5    IN    A    74.125.31.99www.google.com.        5    IN    A    74.125.31.103www.google.com.        5    IN    A    74.125.31.105;; Query time: 2012 msec
;; SERVER: 192.168.198.2#53(192.168.198.2)
;; WHEN: Mon Jun  3 19:49:55 2013;; MSG SIZE  rcvd: 128

我们看到dig命令查询的内容非常多,每一行语句的含义我们会在后续的随笔中详细讲解。

对于DNS查询来说,DNS其实是一个树形结构,查询的时候是从右往左查询域名,域名的每一层级都由一台或者多台独立的DNS服务器进行查询。

我们看到,在查询这个域名的时候,首先通过根DNS服务器查询com的DNS服务器地址,然后通过com对应的多个DNS服务器(每层都有多个DNS服务器)来查询这个域名的DNS服务器,最后通过DNS服务器查询主机名为www的主机的资源记录,从而获取到IP地址。我们可以使用dig +trace命令来跟踪整个DNS查询过程

[root@xiaoluo ~]# dig +trace www.google.com; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> +trace www.google.com
;; global options: +cmd
.            5    IN    NS    f.root-servers.net.
.            5    IN    NS    g.root-servers.net.
.            5    IN    NS    h.root-servers.net.
.            5    IN    NS    i.root-servers.net.
.            5    IN    NS    j.root-servers.net.
.            5    IN    NS    k.root-servers.net.
.            5    IN    NS    l.root-servers.net.
.            5    IN    NS    m.root-servers.net.
.            5    IN    NS    a.root-servers.net.
.            5    IN    NS    b.root-servers.net.
.            5    IN    NS    c.root-servers.net.
.            5    IN    NS    d.root-servers.net.
.            5    IN    NS    e.root-servers.net.
;; Received 508 bytes from 192.168.198.2#53(192.168.198.2) in 28138 ms
com.            172800    IN    NS    a.gtld-servers.net.
com.            172800    IN    NS    b.gtld-servers.net.
com.            172800    IN    NS    c.gtld-servers.net.
com.            172800    IN    NS    d.gtld-servers.net.
com.            172800    IN    NS    e.gtld-servers.net.
com.            172800    IN    NS    f.gtld-servers.net.
com.            172800    IN    NS    g.gtld-servers.net.
com.            172800    IN    NS    h.gtld-servers.net.
com.            172800    IN    NS    i.gtld-servers.net.
com.            172800    IN    NS    j.gtld-servers.net.
com.            172800    IN    NS    k.gtld-servers.net.
com.            172800    IN    NS    l.gtld-servers.net.
com.            172800    IN    NS    m.gtld-servers.net.
;; Received 492 bytes from 193.0.14.129#53(193.0.14.129) in 26867 ms
google.com.        172800    IN    NS    ns2.google.com.
google.com.        172800    IN    NS    ns1.google.com.
google.com.        172800    IN    NS    ns3.google.com.
google.com.        172800    IN    NS    ns4.google.com.
;; Received 168 bytes from 192.54.112.30#53(192.54.112.30) in 8681 ms
www.google.com.        300    IN    A    173.194.72.103www.google.com.        300    IN    A    173.194.72.99www.google.com.        300    IN    A    173.194.72.106www.google.com.        300    IN    A    173.194.72.104www.google.com.        300    IN    A    173.194.72.147www.google.com.        300    IN    A    173.194.72.105;; Received 128 bytes from 216.239.38.10#53(216.239.38.10) in 82 ms

我们看到整个DNS查询过程就是上面按照域名从右到左一步步查询,.->->DNS->www

DNS查询有两种类型,一种是迭代查询(Query),一种是递归查询(Query),我们可以通过下面两个图知道这两种查询的区别。

①迭代查询(Query)

②递归查询(Query)

我们看到在迭代查询时,本地DNS会先向.DNS发出请求,此时.DNS会返回本地DNS com的DNS,以此类推,最后返回IP地址。但是对于递归查询来说,只有本地DNS才会向.DNS发出请求,然后IP解析交给其下级DNS完成,最后返回IP地址。由于递归查询会缓存每个DNS上的信息,所以我们一般采用两种查询方式组合的方式进行DNS查询

4. 资源记录

在DNS服务器上,DNS信息以一种叫做资源记录(RR)的格式保存,RR不仅可以保存从域名到IP地址的信息,还可以保存很多其他的信息。

资源记录常用的属性有:

-NAME(主机名)

-CLASS(类别,通常为 IN)

-TYPE(type,资源记录的类型)

-RDATA(信息)

喜欢:

.168.1.1

.168.1.2

INMX 10.(MX记录后面的域名必须写完整,也就是最后的.也必须加上)

以上就是我们的资源记录了,DNS资源记录可以记录很多种类型的资源,不只是IP地址,常见的资源记录类型如下:

资源记录类型(TYPE)

代表内容

IPv4 地址

高级

IPv6 地址

墨西哥

电子邮件历史记录

别名记录

别名

优先权

指针(逆向分析)

服务车辆

服务资源

我们可以使用DNS高级查询命令来查看这些资源中记录的信息

①dig -ta 查看域名的IPv4地址

[root@xiaoluo ~]# dig -t a www.google.com; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t a www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52161;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:
;www.google.com.            IN    A
;; ANSWER SECTION:
www.google.com.        5    IN    A    74.125.31.103www.google.com.        5    IN    A    74.125.31.99www.google.com.        5    IN    A    74.125.31.147www.google.com.        5    IN    A    74.125.31.104www.google.com.        5    IN    A    74.125.31.106www.google.com.        5    IN    A    74.125.31.105  //  这些都是 www.google.com 的IPv4地址;; Query time: 2010 msec
;; SERVER: 192.168.198.2#53(192.168.198.2)
;; WHEN: Mon Jun  3 20:45:30 2013;; MSG SIZE  rcvd: 128

②dig -t mx 查看此域名的邮件记录

[root@xiaoluo ~]# dig -t mx gmail.com; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -t mx gmail.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44633;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 4;; QUESTION SECTION:
;gmail.com.            IN    MX
;; ANSWER SECTION:
gmail.com.        5    IN    MX    40 alt4.gmail-smtp-in.l.google.com.
gmail.com.        5    IN    MX    30 alt3.gmail-smtp-in.l.google.com.
gmail.com.        5    IN    MX    10 alt1.gmail-smtp-in.l.google.com.
gmail.com.        5    IN    MX    5 gmail-smtp-in.l.google.com.
gmail.com.        5    IN    MX    20 alt2.gmail-smtp-in.l.google.com.  // gmail.com的邮件服务器
;; ADDITIONAL SECTION:
alt3.gmail-smtp-in.l.google.com. 5 IN    AAAA    2607:f8b0:400d:c02::1a
alt1.gmail-smtp-in.l.google.com. 5 IN    AAAA    2a00:1450:4010:c03::1b
gmail-smtp-in.l.google.com. 5    IN    AAAA    2607:f8b0:400e:c01::1a
alt4.gmail-smtp-in.l.google.com. 5 IN    AAAA    2607:f8b0:400c:c01::1a  // gmail.com邮件服务器对应的IP地址
;; Query time: 2003 msec
;; SERVER: 192.168.198.2#53(192.168.198.2)
;; WHEN: Mon Jun  3 20:47:32 2013;; MSG SIZE  rcvd: 262

③dig -x42.121.135.98 反向解析42.121.135.98此IP地址获取其域名(博客园的IP)

[root@xiaoluo ~]# host www.cnblogs.com
www.cnblogs.com has address 42.121.135.98[root@xiaoluo ~]# dig -x 42.121.135.98; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> -x 42.121.135.98;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 22590;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0;; QUESTION SECTION:
;98.135.121.42.in-addr.arpa.    IN    PTR
;; AUTHORITY SECTION:121.42.in-addr.arpa.    5    IN    SOA    hidden-master.aliyun.com. hostmaster.aliyun-inc.com. 2013060300 7200 900 2592000 600;; Query time: 2004 msec
;; SERVER: 192.168.198.2#53(192.168.198.2)
;; WHEN: Mon Jun  3 20:51:27 2013;; MSG SIZE  rcvd: 126

本文转载自博客

二维码
扫一扫在手机端查看

本文链接:https://by928.com/1429.html     转载请注明出处和本文链接!请遵守 《网站协议》
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

项目经理在线

我们已经准备好了,你呢?

2020我们与您携手共赢,为您的企业形象保驾护航!

在线客服
联系方式

热线电话

13761152229

上班时间

周一到周五

公司电话

二维码
微信
线