在基础设施非常低的区域加快DNS访问速度

在基础设施非常低的地区加快DNS访问速度

介绍

假设你是一个昂贵的卫星链路,几乎不足以为您公司的互联网接入提供足够的带宽,并且您将尽可能多地从这个链接中尽可能多地获得。 此外,偶尔,你失去了公用事业公司的电力,足够长的时间让你的UPS耗尽。 您可以从您的链接中获得更多的东西。 在本文中,我们将着眼于加快您的dns请求,保留缓存对硬盘上的dns请求的响应。 随后的dns请求从缓存中提供,并且由于副本在磁盘上,所以在停电或重启时不会丢失。

本文档的更新版本位于: www.httpcompression.net

分析

我需要这个吗? 好吧,我们来看看。 从你的Linux发出以下命令:

dig www.httpcompression.net

其中我得到以下结果:

;; Query time: 583 msec

几秒钟后,我再次发出命令:

;; Query time: 612 msec

显然,我的ISP的dns服务器简单地将请求转发到美国(我在阿克拉,加纳,西非,通过海底光缆SAT3连接到互联网)。 显然,第一个请求的结果没有缓存。 如果是的话,在第二个请求时间已经超时了。 当然这样的环境是这个设置的完美选择。

如何

我在Ubuntu服务器上工作。 我们将使用的软件是pdnsd 。 网站有关于pdnsd的说法:

“pdnsd是一个具有永久缓存的代理DNS服务器(高速缓存内容被写入退出的硬盘),旨在应对不可达到或不能下达的DNS服务器(例如拨入网络)。自1.1.0版本以来,pdnsd支持负缓存“。

从您的Ubuntu或任何其他基于Debian的发行版的以下命令:

apt-get install pdnsd

配置页面提出了三个选项“resolvconf /使用根服务器/手动”。 我选择了“手册”,并继续安装。

默认安装有一个配置文件,其中的一些已被注释。 用“/ * * /”表示的“//”whilslt多行表示一行。 例如:”

// This is a remarked line in the conf file.
/*
These are remarked
lines in the 
coniguration file.
*/

使用您喜欢的文本编辑器编辑以下配置文件:

  1. / etc / default / pdnsd

    使用START_DAEMON编辑行如下:

    START_DAEMON=yes
  2. /etc/pdnsd.conf

    在全局节中,您可能需要更改以下设置: server_ip = 127.0.0.1; 这是可以达到pdnsd的ip。 如果地址保持默认为127.0.0.1,则服务器本身的程序只能访问pdnsd服务器。 但是,如果您希望其他服务器和PC使用此pdnsd安装作为其dns服务器,那么您应该将ip地址更改为您希望客户端使用的服务器上相应的ip地址。

    使用服务器节设置pdnsd将要查询的dns服务器来解析域名。 有两个服务器节,默认情况下被注释掉。 opendns服务器非常可靠和受欢迎,您可能需要使用它们:

    server {
        label="opendns";
        ip = 208.67.220.220,208.67.222.222;
    }
    

    确保服务器节没有注释掉。 如果你的ISP有一个可靠的dns服务器,你可以使用它。 尽可能多地备份根服务器。

  3. /etc/resolv.conf此文件包含您的服务器上编程的dns服务器(例如squid,apache)通常会进行名称解析。 现在,您将要查询刚安装的本地pdnsd服务器,所以输入loopback接口的IP地址(lo)即127.0.0.1。 这应该是此文件中唯一的条目。
    127.0.0.1
    

测试与结论

现在开始你pdnsd服务器:

/etc/init.d/pdnsd start

现在发出以下命令并注意查询时间:在响应中确定您的工作状况:

dig www.httpcompression.net
;  DiG 9.4.2-P2  www.httpcompression.net
;; Query time: 3323 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov  3 20:02:37 2008
;; MSG SIZE  rcvd: 71

过了一会儿,再次发出命令:

dig www.httpcompression.net
;  DiG 9.4.2-P2  www.httpcompression.net
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov  3 20:03:07 2008
;; MSG SIZE  rcvd: 71

从上面的两个结果来看,第一个查询花费了3323毫秒,而第二次,30秒后,只需要1毫秒来解决。 现在重启服务器后:

dig www.httpcompression.net
;; Query time: 3 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Nov  3 20:06:38 2008
;; MSG SIZE  rcvd: 71

重新启动后,查询只需要3ms才能解决。 我们没有松开缓存。 您可能需要阅读手册,并根据您的情况更改一些设置。 其中几个设置是:

  1. min_ttl :应该保存缓存响应的默认最短时间为15分钟。 您可能希望减少与父服务器联系的频率。 副作用是,如果站点的地址发生变化,则qdnsd需要一段时间才能与父服务器联系新的地址。 如果最短时间不够长,延长停电时也会丢失缓存。
  2. perm_cache :这是缓存的磁盘空间大小。 根据您网络上的流量,您可能希望将其增加到可以舒适地存储至少一周数据的值。 您可以在一段时间内监控缓存文件的大小,以获得对您应有足够的感觉。
赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏