精华内容
下载资源
问答
  • DNS解析

    千次阅读 2020-04-22 13:45:50
    2.当浏览器缓存和计算机HOST都没有命中的时候,就要求助于本地的DNS解析服务器了。本地的DNS解析服务器我们称之为LDNS。这些服务器距离我们比较近,可能在每个城市都会有。 3.每个城市的DNS也不可能记住全世界所有...

    1.当要访问的URL没有命中本地的浏览器缓存时,就要查看计算机本地的HOST指向,有没有相关的记录。计算机本地的HOST是一个文件,记录着域名和IP的映射关系。

    2.当浏览器缓存和计算机HOST都没有命中的时候,就要求助于本地的DNS解析服务器了。本地的DNS解析服务器我们称之为LDNS。这些服务器距离我们比较近,可能在每个城市都会有。

    3.每个城市的DNS也不可能记住全世界所有的网址,所以LDNS也有可能找不到相应的域名对应的IP。

    当本地的DNS解析找不到的时候,就会求助更权威的机构,也就是gTLD Server。gTLD Server 全称是Generic top-level domain Server,通用顶级域Server。

    我们常见的域名后缀有.com的,有.net的,有.org的等等很多。每个顶级域名都有一个记录着所有注册过相应域名的记录。比如.com域名的服务器就会记录着全部注册过的.com的域名。

    4.每个域名后缀的顶级域名服务器也不可能只有一台,毕竟一台机器无法承载这么大的访问量,肯定是有多台的。

    但是LDNS只会访问其中的一台,当被访问的这台gTLD Server收到了这个域名之后,会告诉LDNS你应该去询问哪台机器,然后LDNS再去相应的机器去询问这个域名对应的IP。

    5.当LDNS从gTLD获取到了域名对应的IP之后就会把这个信息返回给发出请求的计算机,然后LDNS会在本地进行缓存,相应的浏览器也会对这个域名和IP进行缓存,以保证下次再有访问这个域名时可以很快的响应。

     

    以上文字摘抄至渡一教育,微信公众号搜索渡一教育

    展开全文
  • DNS解析域名解析过程

    千次阅读 2018-08-28 14:33:16
    而将URL解析成为IP,就变得至关重要,这一过程就是DNS解析的过程。如果没有DNS解析,那么整个互联网将会进入瘫痪,可以说DNS就是一个默默在小角落保护互联网宇宙的英雄。 本文将来学习一下DNS解析成为IP的过程。 ...

    当我们在浏览器的地址栏输入网址的时候,其实输入的是一个URL的域名,而这个域名需要解析成为IP地址,才能让我们与远程的主机进行管理。而将URL解析成为IP,就变得至关重要,这一过程就是DNS解析的过程。如果没有DNS解析,那么整个互联网将会进入瘫痪,可以说DNS就是一个默默在小角落保护互联网宇宙的英雄。

    本文将来学习一下DNS解析成为IP的过程。

    1、DNS解析的具体步骤:
    DNS解析的具体步骤

    • 第一步,浏览器会检查缓存中有没有这个域名的对应解析IP,如果存在,返回IP地址解析完成。

      浏览器的缓存也是有大小时间限制的,可以通过TTL属性来设置,当然这个时间也是要控制好,太长如果服务器IP变化将会导致用户无法访问页面,如果太短就失去了缓存的意义。

    • 第二步,如果缓存中没有对应的解析IP,浏览器会查找本机操作系统中是否存在该解析IP。

    在windows系统中,可以通过C:\Windows\System32\drivers\etc下的host文件来修改。可以将任何的域名映射到对应的IP地址中。

    • 第三步,如果上面两步都不存在,我们的网络配置中会有“DNS服务器地址”这一项,操作系统会将请求的域名发送给这里设置的LDNS(本地区域名服务器)。

    这个LDNS,一般都在你所在城市的某个角落,如果你是校内网,那么这个服务器就在你的学校内,如果是家用的,这个DNS就会提供给你互联网的服务接入商,即电信移动等。在windows下我们可以用ipconfig命令看到。LDNS 承担了80%的域名解析。

    这里写图片描述

    • 第四步,如果第三步也没有查询到,就直接到Root Server 域名服务器请求解析。

    • 第五步,根域名服务器返回给本地域名服务器一个所查询的主域名服务器(gTLD Server)地址,gTLD Server国际顶级域名服务器,共有13台左右包括(cn、com、org等)

    • 第六步,本地域名服务器(Local DNS Server)再想上一步返回的gTLD Server发送请求。

    • 第七步gTLD Server返回查询的对应域名的Name Server域名服务器地址,这个就是我们平时注册域名的服务器。

    • 第八步Name Server会查询存储的域名与IP地址的映射关系表,连同一个TTL值返回给DNS Server域名解析服务器。

    • 第九步,返回该域名对应的IPTTL值,由Local DNS Server来缓存,缓存时间由TTL值来控制。

    • 第十步,把解析的地址返回给用户,TTL值由浏览器缓存在本地系统,域名解析完成。

    2、几种域名解析方式:

    1. A记录,a就是Address的简写,用来指定域名对应IP的地址,比如:items.taobao.com指定到115.238.23.241switch.taobao.com指定到121.14.24.241。A记录可以将多个域名映射到一个IP地址,但是不能一个域名对应多个IP。
    2. MX记录Mail Exchange,就是将某个域名下的,邮件服务器指向自己的Mail Server,比如:taobao.com的A记录为,115.238.23.241。那么通过MX记录,设置115.238.23.241对应的是“XXXXX@taobao.com”邮件路由。DNS会将邮件发送给115.238.23.241所在的服务器。不过正常通过web访问的还是A记录。
    3. CNAME记录 ,全成Canonical Name(别名解析)。就是将一个域名设置成一个或多个别名,比如:baidu.com解析成smallsunl.comtaobao.com也解析成smallsunl.com
    展开全文
  • DNS解析过程

    2020-06-08 11:30:57
    DNS解析过程 域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务器,最终还必须通过IP地址来实现,域名解析就是将域名重新转换为IP地址的过程。一个域名对应一个IP地址,一个IP地址可以对应...

    DNS解析过程

    域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务器,最终还必须通过IP地址来实现,域名解析就是将域名重新转换为IP地址的过程。一个域名对应一个IP地址,一个IP地址可以对应多个域名,所以多个域名可以同时被解析到一个IP地址,域名解析需要由专门的域名解析服务器DNS服务器来完成。

    解析方式

    DNS解析查询的方式有两种:递归解析查询和迭代解析查询,通常来说,客户端和本地域名服务器是递归查询,而本地域名服务器和其他域名服务器之间是迭代查询。

    递归解析

    假如我们本地客户端是A,有三个域名解析服务器BCD,首先在本地客户端A发起一次DNS解析请求,对B服务器请求解析DNSB服务器查询后并无解析记录,则B服务器对C服务器请求解析DNS,,C服务器查询后并无解析记录,则C服务器对D服务器请求解析DNS,,D服务器查询到解析记录,将解析记录返回到C服务器,C服务器将解析记录返回到B服务器,B服务器将解析记录返回到A服务器,完成一次递归解析查询。

    A → B → C → D
    A ← B ← C ← D
    

    迭代解析

    假如我们本地客户端是A,有三个域名解析服务器BCD,首先在本地客户端A发起一次DNS解析请求,对B服务器请求解析DNSB服务器查询后并无解析记录,返回到A未查询成功并携带C服务器的地址,客户端AC服务器请求解析DNSC服务器查询后并无解析记录,返回到A未查询成功并携带D服务器的地址,客户端AD服务器请求解析DNS,查询到解析记录,并将解析记录返回到A,完成一次迭代解析查询。

    A → B
    A → C
    A → D
    

    解析过程

    浏览器缓存

    在输入URL后浏览器首先检查自身的DNS缓存是否对于此域名有IP地址,通常浏览器对于自身DNS解析缓存保留时间比较短,且数量也有限制,chrome对于域名解析的缓存时间为60s,可以通过地址栏输入chrome://net-internals/#dns清除DNS缓存。

    HOSTS

    HOSTS文件是一个系统文件,其作用就是将域名与其对应的IP地址建立一个对应关系,当进行DNS解析时系统会首先自动从HOSTS文件中寻找对应的IP地址,如果没有找到,则系统会再将域名提交DNS域名解析服务器进行IP地址的解析。Windows操作系统的此文件通常在C:\Windows\system32\drivers\etc\目录下,Linux操作系统的此文件通常在/etc/目录下。

    本地域名解析服务器

    客户端向本地域名服务器请求解析,本地域名服务器一般是运营商ISP提供的,一般是通过53端口发送UDP报文请求服务器解析DNS,从客户端到本地域名服务器的解析是递归查询的。假如请求的解析域名为example.expamle.com,本地域名解析服务器未命中,则本地域名解析服务器开始迭代查询。

    根域名解析服务器

    本地域名解析服务器向根域名服务器a.rootserver.net进行请求,根域名服务器查询到.com顶级域名所对应的服务器,然后向本地域名服务器返回.com顶级域名所对应的服务器解析地址。

    顶级域名解析服务器

    本地域名解析服务器向顶级域名解析服务器进行请求,顶级域名解析服务器查询到example.com二级域名所对应的服务器,然后向本地域名服务器返回example.com二级域名所对应的服务器解析地址。

    二级域名解析服务器

    本地域名解析服务器向二级域名解析服务器进行请求,二级域名解析服务器如果未命中,则会向本地域名解析服务器返回example.example.com所对应的权限域名解析服务器的地址,通常来说二级域名解析服务器及以后都可以称为权限域名解析服务器。

    权限域名解析服务器

    本地域名解析服务器向权限域名解析服务器进行请求,权限域名解析服务器查询到解析记录后,便返回本地域名解析服务器,本地域名解析服务器将查询到的IP地址返回到客户端,并将域名与IP的对应关系进行缓存,假如在权限域名解析服务器还未查询到域名对应的IP地址,则返回解析失败,此外如果客户端还配置了多个DNS服务器的地址,则在查询失败后还会继续向其他所配置的DNS解析服务器进行查询。

    每日一题

    https://github.com/WindrunnerMax/EveryDay
    

    参考

    https://www.jianshu.com/p/6b502d0f2ede
    https://www.zhihu.com/question/53882349
    https://blog.csdn.net/qq_40378034/article/details/100998367
    
    展开全文
  • Linux性能优化-DNS解析

    千次阅读 2019-02-15 08:39:15
    DNS解析

    目录

    域名和DNS解析

    案例分析

    DNS解析失败

    DNS解析不稳定

    优化总结


    IP地址是TCP/IP协议中,用来确定通讯双方的一个重要标识,每个IP地址又包括了主机号和网络号两部分,相同网络号的主机组成一个子网,不同子网再通过路由连接,组成一个庞大的网络
    但IP地址不方便记忆,于是又了NDS(Domain Name System)域名系统,是互联网中最基础的一项服务,主要提供域名和IP地址之间映射关系的查询服务

    DNS不仅方便人们访问不同的互联网服务,更提供了动态服务发现,全局负载均衡(Global Server Load Balance GSLB)的机制吗,这样DNS就可以选择离用户最近的IP来提供服务,即使后端服务的IP地址发生变化,用户依然可以用相同的域名来访问

     

    域名和DNS解析

    域名是全球唯一的,需要通过专门的域名注册商才可以申请注册,为了组织全球互联网中众多的计算机,域名同样用点来分开,形成一个分层的结构,而每个被点分割开的字符串,就构成了域名中的一个层级,并且为之越靠后,层级越高
    以极客时间 time.geekbang.org 为列
    这个字符串中,最后面的org是顶级域名
    中间的geekbang是二级域名
    最左边的time是三级域名

    如下图所示,注意 .  是所有域名的根,也就是说所有域名都以点作为后缀,可以理解为在域名解析过程中,所有域名都以点结束

    通过理解这几个概念,可以看出,域名是为了方便人记住,而IP地址是机器间通讯的真正机制,把域名转换为IP地址的服务,也就是开头提到的域名解析服务NDS,对应的服务器就是域名服务器,网络协议为DNS
    注意,DNS在TCP/IP中属于应用层,不过实际传输还是基于UDP或TCP协议(UDP居多),并且域名服务器一般在端口53上监听

    域名解析也是用递归的方式,从顶层开始,以此类推,发送给每个层级的域名服务器,直到得到解析结果
    递归查询过程中,不需要用户操作,DNS服务器会替用户完成
    通常来说,每层的NDS服务器,都会有最近解析记录的缓存,当缓冲命中时,直接用缓存中的记录应答就可以了,如果缓存过期或者不存在,才需要用递归的方式查询

    系统管理员在配置Linux系统网络时,除了需要配置IP地址,还需要给它配置DNS服务器,这样它才可以通过欲望来访问外部服务
    如配置114.114.114.114这个域名服务器

    cat /etc/resolv.conf
    nameserver 114.114.114.114

    DNS服务通过资源记录的方式,来管理所有数据,它支持A记录,CNAME,MX,NS,PTR等多种类型记录
    A记录,用来把域名转换成IP地址
    CNAME记录,用来创建别名
    NS记录,表示该域名对应的域名服务器地址

    当访问某个网址时,就需要通过DNS的A记录,查询该域名对应的IP地址,然后再通过IP来访问Web服务
    比如,访问极客时间 time.geekbang.org,执行nslookup命令,可以查询到这个域名的A记录,可以看到它的IP地址信息

    nslookup time.geekbang.org
    Server:         114.114.114.114
    Address:        114.114.114.114#53
    
    Non-authoritative answer:
    Name:   time.geekbang.org
    Address: 39.106.233.176

    通过debug方式执行nslookup的结果

    nslookup -debug time.geekbang.org
    Server:         114.114.114.114
    Address:        114.114.114.114#53
    
    ------------
        QUESTIONS:
            time.geekbang.org, type = A, class = IN
        ANSWERS:
        ->  time.geekbang.org
            internet address = 39.106.233.176
            ttl = 324
        AUTHORITY RECORDS:
        ADDITIONAL RECORDS:
    ------------
    Non-authoritative answer:
    Name:   time.geekbang.org
    Address: 39.106.233.176

    如果想知道整个查询过程,可以用另外一个DNS查询工具dig

    # +trace表示开启跟踪查询
    # +nodnssec 表示禁止DNS安全扩展
    dig +trace +nodnssec time.geekbang.org
    
    ; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> +trace +nodnssec time.geekbang.org
    ;; global options: +cmd
    .                       357157  IN      NS      i.root-servers.net.
    .                       357157  IN      NS      c.root-servers.net.
    .                       357157  IN      NS      m.root-servers.net.
    .                       357157  IN      NS      b.root-servers.net.
    .                       357157  IN      NS      a.root-servers.net.
    .                       357157  IN      NS      e.root-servers.net.
    .                       357157  IN      NS      l.root-servers.net.
    .                       357157  IN      NS      j.root-servers.net.
    .                       357157  IN      NS      f.root-servers.net.
    .                       357157  IN      NS      k.root-servers.net.
    .                       357157  IN      NS      g.root-servers.net.
    .                       357157  IN      NS      h.root-servers.net.
    .                       357157  IN      NS      d.root-servers.net.
    ;; Received 239 bytes from 114.114.114.114#53(114.114.114.114) in 455 ms
    
    org.                    172800  IN      NS      a0.org.afilias-nst.info.
    org.                    172800  IN      NS      a2.org.afilias-nst.info.
    org.                    172800  IN      NS      b0.org.afilias-nst.org.
    org.                    172800  IN      NS      b2.org.afilias-nst.org.
    org.                    172800  IN      NS      c0.org.afilias-nst.info.
    org.                    172800  IN      NS      d0.org.afilias-nst.org.
    ;; Received 448 bytes from 192.203.230.10#53(e.root-servers.net) in 361 ms
    
    geekbang.org.           86400   IN      NS      dns10.hichina.com.
    geekbang.org.           86400   IN      NS      dns9.hichina.com.
    ;; Received 96 bytes from 199.19.54.1#53(b0.org.afilias-nst.org) in 368 ms
    
    time.geekbang.org.      600     IN      A       39.106.233.176
    ;; Received 62 bytes from 106.11.211.56#53(dns10.hichina.com) in 6 ms
    

    dig trace的输出,主要包括四部分

    • 第一部分,是从114.114.114.114查到的一些根域名服务器 . 的NS记录
    • 第二部分,是从NS记录结果中选一个 h.root-server.net,并查询顶级域名org. 的NS记录
    • 第三部分,是从org. 的NS记录中选一个b0.org.afilias-nst.org,并查询二级域名geekbang.org的NS服务器
    • 第四部分,是从geekbang.org的NS服务器nds10.hichina.com查询最终主机time.geekbang.org的A记录

    这个输出里展示的各级域名的NS记录,其实就是各级域名服务器的地址,下面是整个查询的流程图


    当然,不仅仅是发布到互联网的服务器需要域名,对局域网内部的主机进行域名解析,即内网域名,大多数情况下为主机名,Linux也支持这种行为
    可以把主机名和IP地址的映射关系,写入本机的/etc/hosts文件中,这样指定的主机名就可以在本地直接查找到目标IP,比如

    cat /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

    或者,可以在内网中,搭建自定义的DNS服务器,专门用来解析内网中的域名,而内网DNS服务器,一般还会设置一个或多个上游DNS服务器,用来解析网络的域名
     

     

    案例分析

    案例准备
    拉取案例中使用的Docker镜像

    docker pull feisky/dnsutils
    Using default tag: latest
    Trying to pull repository docker.io/feisky/dnsutils ... 
    latest: Pulling from docker.io/feisky/dnsutils
    38e2e6cd5626: Already exists 
    705054bc3f5b: Already exists 
    c7051e069564: Already exists 
    7308e914506c: Already exists 
    9b20820a1a69: Pull complete 
    8633a2284391: Pull complete 
    89ab6a8002a6: Pull complete 
    Digest: sha256:a23534daa60aad8736823219852b6dbd9b51e84ddbaf42e38b54c68954719766
    Status: Downloaded newer image for docker.io/feisky/dnsutils:latest
    

    查看当前主机配置的DNS服务器

    cat /etc/resolv.conf 
    options timeout:1 attempts:1 rotate single-request-reopen
    search localdomain
    nameserver 114.114.114.114

     

     

    DNS解析失败

    首先进入容器环境

    # 进入案例的SHELL终端中
    docker run -it --rm -v $(mktemp):/etc/resolv.conf feisky/dnsutils bash

    接着,在容器中,执行DNS查询命令,还是查询极客时间地址

    # root后面的 29e9097050ca 是Docker生成的ID前缀
    root@29e9097050ca:/# nslookup time.geekbang.org
    ;; connection timed out; no servers could be reached

    这个命令阻塞了一段时间最后报错,连接超时,服务不可达
    检查一下本地到114的连通性

    root@29e9097050ca:/# ping -c 3 114.114.114.114
    PING 114.114.114.114 (114.114.114.114): 56 data bytes
    64 bytes from 114.114.114.114: icmp_seq=0 ttl=64 time=32.986 ms
    64 bytes from 114.114.114.114: icmp_seq=1 ttl=71 time=32.972 ms
    64 bytes from 114.114.114.114: icmp_seq=2 ttl=88 time=33.018 ms
    --- 114.114.114.114 ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 32.972/32.992/33.018/0.000 ms

    网络是通的,但nslookup执行失败了,这时候开启nslookup的调试输出,看查询过程中的详细步骤,排查异常

    root@29e9097050ca:/# nslookup -debug time.geekbang.org
    ;; Connection to 127.0.0.1#53(127.0.0.1) for time.geekbang.org failed: connection refused.
    ;; Connection to ::1#53(::1) for time.geekbang.org failed: connection refused.

    可以看到nslookup连接环回地址127.0.0.1和::1的53端口失败,正常来说应该是连接114.114.114.114的
    但这里却连接到本地了,检查下DNS的本地配置文件

    #结果是空的
    cat /etc/resolv.conf

    重新配置上DNS服务器,再执行nslookup命令,这次就正常了 

    echo "nameserver 114.114.114.114" > /etc/resolv.conf
    root@29e9097050ca:/# nslookup time.geekbang.org
    Server:         114.114.114.114
    Address:        114.114.114.114#53
    
    Non-authoritative answer:
    Name:   time.geekbang.org
    Address: 39.106.233.176

    最后在终端中执行exit命令退出容器,Docker会自动清理刚才运行的容器

     

     

     

    DNS解析不稳定

    再进入第二个案例,使用下面命令

    docker run -it --rm --cap-add=NET_ADMIN --dns 8.8.8.8 feisky/dnsutils bash

    再用nslookup查询,并加上time,案例中给出的查询时间是10秒,甚至还有超时,但我这里查询很快,可能是DNS
    缓存等其他原因导致的

    time nslookup time.geekbang.org
    Server:         8.8.8.8
    Address:        8.8.8.8#53
    
    Non-authoritative answer:
    Name:   time.geekbang.org
    Address: 39.106.233.176
    
    
    real    0m0.245s
    user    0m0.006s
    sys     0m0.006s

    需要245毫秒完成
    DNS解析,其实就是客户端与服务器交互的课程,并且这个过程还使用了UDP
    对于整个流程,不稳定的情况有很多,比如

    • DNS服务器本身有问题,响应慢并且不稳定
    • 客户端到DNS服务器的网络延迟比较大
    • DNS请求或者响应包,在某些情况下被链路中的网络设备弄丢了

    根据nslookup的输出,客户端连接的DNS是8.8.8.8,也就是谷歌提供的DNS服务器
    假设谷歌提供的DNS服务器是正常的
    那么测试一下本机到DNS服务器的延迟情况

    ping -c 3 8.8.8.8
    PING 8.8.8.8 (8.8.8.8): 56 data bytes
    64 bytes from 8.8.8.8: icmp_seq=0 ttl=38 time=53.284 ms
    64 bytes from 8.8.8.8: icmp_seq=1 ttl=38 time=53.193 ms
    64 bytes from 8.8.8.8: icmp_seq=2 ttl=38 time=53.228 ms
    --- 8.8.8.8 ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 53.193/53.235/53.284/0.037 ms

    ping的延迟是50多毫秒,多执行几次ping,偶尔也有超时丢包的情况
    nslookup执行失败,慢就是因为网络链路中的丢包延迟导致的
    既然延迟大,就换一个DNS服务器,比如使用电信的114.114.114.114
    先测试一下 到114的连通情况

    ping -c 3 114.114.114.114
    PING 114.114.114.114 (114.114.114.114): 56 data bytes
    64 bytes from 114.114.114.114: icmp_seq=0 ttl=86 time=32.906 ms
    64 bytes from 114.114.114.114: icmp_seq=1 ttl=66 time=32.904 ms
    64 bytes from 114.114.114.114: icmp_seq=2 ttl=91 time=34.569 ms
    --- 114.114.114.114 ping statistics ---
    3 packets transmitted, 3 packets received, 0% packet loss
    round-trip min/avg/max/stddev = 32.904/33.460/34.569/0.784 ms

    根据结果看,稍微好一些,从延迟50毫秒 -> 延迟30毫秒
    执行下面命令,更换DNS服务器,再执行nslookup解析命令

    cat /etc/resolv.conf
    search localdomain
    nameserver 8.8.8.8
    options timeout:1 attempts:1 rotate single-request-reopen
    
    root@879899eacac7:/# echo "nameserver 114.114.114.114" > /etc/resolv.conf
    root@879899eacac7:/# cat /etc/resolv.conf                                
    nameserver 114.114.114.114
    
    time nslookup time.geekbang.org
    Server:         114.114.114.114
    Address:        114.114.114.114#53
    
    Non-authoritative answer:
    Name:   time.geekbang.org
    Address: 39.106.233.176
    
    
    real    0m0.083s
    user    0m0.008s
    sys     0m0.002s

    这次只需要83毫秒就可以完成
    不过偶尔还是会有一些时间比较长的,可能当时网络比较繁忙所以返回的结果就比较慢了
    其实第一次解析完后,可以将结果放到DNS缓存中
    想要为系统开启DNS缓存,就需要额外的配置,最简单的方法是使用 dnsmasq
    dnsmasq 是最常用的NDS缓存服务之一,还经常作为DHCP服务来使用,它安装和配置都比较简单,性能也可以满足绝大多数应用程序对DNS缓存的需求
    执行下面命令

    /etc/init.d/dnsmasq start
     * Starting DNS forwarder and DHCP server dnsmasq                        [ OK ]

    修改resolv.conf文件,将DNS服务器改为dnsmasq的监听地址,这里是127.0.0.1
    再多执行几次nslookup

    echo "nameserver 127.0.0.1" > /etc/resolv.conf
    
    time nslookup time.geekbang.org
    Server:         127.0.0.1
    Address:        127.0.0.1#53
    
    Non-authoritative answer:
    Name:   time.geekbang.org
    Address: 39.106.233.176
    
    
    real    0m0.012s
    user    0m0.007s
    sys     0m0.003s

    多次解析之后发现只需要10毫秒多一点就可以完成了,而且之后的解析时间也都很稳定
    案例最后,可以执行exit 退出容器终端,Docker会自动清理案例容器

     


    优化总结

    DNS是互联网中最基础的一项服务,提供了域名和IP地址间映射关系的查询服务,很多应用程序再最初开发时,并没有考虑DNS解析的问题,后续出问题排查很久才发现,是DNS解析慢导致的

    常见的DNS优化方法如下

    • 对DNS解析结果进行缓存,缓存是最有效的方法,不过缓存一旦过期还是要去DNS服务器重新获取新记录,但对大部分应用来说都可以接受
    • 对DNS解析的结果进行预取,这是浏览器等Web应用中最常见的方法,不等用户点击页面上的超链接,浏览器会在后台自动解析域名,并把结果缓存起来
    • 使用HTTPNDS代替DNS解析,这是很多移动应用会选择的方式,特别是域名劫持普遍存在,使用HTTP协议绕过链路中的DNS服务器,可以避免域名劫持的问题
    • 基于DNS的全局负载均衡(GSLB),不仅为服务提供了负载均衡和高可用的功能,还可以根据用户的位置,返回距离最近的IP地址

     


     

     

     

     

     

     

    展开全文
  • DNS解析错误

    万次阅读 2018-08-28 14:03:33
    DNS解析错误 大早上打开电脑发现浏览器都打不开了,然而微信还能登录。 第一步,分析原因 谷歌、360、搜狗都不能打开。问题是:DNS解析错误。 第二步,选择什么DNS服务器 不同地区的用户,适用的DNS服务器...
  • DNS解析错误分析

    2020-03-16 10:06:10
    1、如何去查询DNS解析 2、dig命名查询的内容解析 3、常见DNS解析错误的分析
  • Linux网络编程[浅析DNS原理,了解相关DNS解析的函数]1.DNS解析的相关原理 2. 域名解析的相关函数###端口绑定, DNS解析的相关原理 先通过一张图示来展示一下什么是DNS:1:每一个域名都是与ip进行绑定的 2:浏览器...
  • dns解析基本理解

    千次阅读 2020-12-15 16:19:31
    DNS解析主要流程: 1、在浏览器中输入www.abc.com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。 2、如果hosts里没有这个域名的
  • DNS解析故障解决

    千次阅读 2018-10-23 11:51:22
    DNS解析出现错误,例如把一个域名解析成一个错误的IP地址,或者根本不知道某个域名对应的IP地址是什么时,就无法通过域名访问相应的站点了,这就是DNS解析故障。出现DNS解析故障最大的症状就是访问站点对应的IP...
  • Coredns 添加自定义DNS解析记录

    千次阅读 2019-06-30 14:42:36
    Coredns 添加自定义DNS解析记录 编辑coredns的configmap kubectl edit cm -n kube-system coredns .:53 { errors health ready kubernetes cluster.local. in-addr.arpa ip6.arpa { pods insecure ...
  • hadoop dns解析

    千次阅读 2016-08-01 14:08:55
    因为 hadoop 集群之间通过主机名互相访问,所以必须设置 dns 解析。使用 gedit 编辑 dns 解析文件 在文本最后追加一行, “192.168.80.100 hadoop” ,注意 ip 与主机名之间使用空格分2016-07-31 21:47:24,985 ...
  • DNS解析详细讲解

    千次阅读 2019-02-27 15:42:10
    (一)什么是DNS ...DNS解析是分布式存储的,比如根域名服务器ROOT DNS,只存储260个顶级域名的DNS服务器的ip地址。顶级域名服务器如.com的DNS服务器,存储的则是一些一级域名的权威DNS服务器地址(如suning...
  • 获取DNS解析时间

    千次阅读 2018-09-20 16:43:19
    结论: 在6.0及一下的系统中,系统代码中没有hook点,所有解析dns的方式都是通过调用静态方法的方法完成的,所以6.0及以下系统是拿不... 发现系统进行dns解析的主要方式是利用InetAddress类中的方法getAllByName(S...
  • coredns 自带 hosts 插件, 允许像配置 hosts 一样配置自定义 DNS 解析,修改 kube-system 中 configMap 的 coredns 添加如下设置即可。 hosts { 172.21.91.28 cache.redis 172.21.91.28 persistent.redis fal...
  • DNS解析出现错误

    千次阅读 2017-03-27 14:56:05
    DNS解析出现错误
  • DNS解析与CDN加速

    千次阅读 2019-03-12 23:21:26
    DNS解析与CDN加速1.DNS解析1.1 域名系统DNS1.2 DNS解析二、几个概念1.CDN架构2.静态加速3.动态加速三、CDN加速1.CDN架构2.静态加速3.动态加速四、http中的Nocache与no1.CDN架构2.静态加速3.动态加速欢迎使用Markdown...
  • dns解析URL过程

    千次阅读 2016-07-18 12:56:11
    dns解析URL程
  • DNS解析和查询过程

    万次阅读 2018-10-21 13:50:52
    为什么要 DNS 解析? 因为 http 是基于 tcp 连接的,而 tcp 则是通过 ip 地址去识别访问的。DNS 解析就是域名转化成 ip 地址的过程。 1. 查看浏览器内部缓存 检测域名是否存在于浏览器缓存中,如果有缓存直接使用...
  • DNS解析故障

    2013-09-04 16:08:11
    在实际应用过程中可能会遇到DNS解析错误的问题,就是说当我们访问一个域名时无法完成将其解析到IP地址的工作,而直接输入网站IP却可以正常访问,这就是因为DNS解析出现故障造成的。这个现象发生的机率比较大,所以...
  • [kubernetes]-通过修改coredns添加dns解析

    千次阅读 2020-08-26 23:10:16
    # 添加解析 kubectl edit configmap coredns -n kube-system # 添加dns解析 hosts { 192.168.1.107 dex.ihaozhuo.com fallthrough } # 应用configmap到coredns kubectl scale deployment c
  • DNS解析过程 配置文件优先级

    千次阅读 2019-11-16 14:42:05
    DNS解析过程 配置文件优先级
  • DNS解析(双向解析,集群)

    千次阅读 2018-05-23 21:06:34
    DNS解析 /etc/named.conf 主配置文件 /etc/named.rfc1932 添加域名解析配置 /var/named/westos.com.zone 使用别的用户更改服务器的DNS 更改服务器的/etc/named.rfc1932 allow-update 用户主机ip nsupdate ...
  • DNS解析全过程

    千次阅读 2015-06-26 11:07:27
    浏览器输入一个网址,要访问该网址必须由DNS解析出对应的服务器的IP地址。对于大型网站来说,一个网站对应多台服务器,那么DNS解析出的可能是进行负载均衡的服务器的IP地址。DNS解析过程总体上来说是先查缓存,缓存...
  • DNS解析出现错误,例如把一个域名解析成一个错误的IP地址,或者根本不知道某个域名对应的IP地址是什么时,就无法通过域名访问相应的站点了,这就是DNS解析故障。出现DNS解析故障最大的症状就是访问站点对应的IP...
  • Python爬虫——DNS解析缓存

    千次阅读 2017-02-12 12:21:20
    前言:这是Python爬虫中DNS解析缓存模块中的核心代码,是去年的代码了,现在放出来 有兴趣的可以看一下。 一般一个域名的DNS解析时间在10~60毫秒之间,这看起来是微不足道,但是对于大型一点的爬虫而言这就不容忽视...
  • Python DNS解析之pydns/py3dns使用文档

    千次阅读 2020-03-31 08:17:59
    由于工作中需要解析大量域名,获取DNS解析记录信息,于是找到了pydns库,此第三方库支持DNS解析,但是发现缺乏相关文档,特此整理了pydns/py3dns的使用文档。 前提 在此之前,你可能需要回顾下DNS有关基础知识,特别...
  • 关闭SSH-DNS解析关闭

    2019-11-08 15:26:25
    SSH-DNS解析关闭 如果出现ssh登录缓慢的情况,需要关闭ssh-dns解析 (1)取消sshd服务的dns反向解析 #vi /etc/ssh/sshd_config (2)找到选项UseDNS ,取消注释,改为 UseDNS no (3)重启sshd服务 /etc/init...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,235
精华内容 13,694
关键字:

dns解析