在基础设施非常低的地区加快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. */
使用您喜欢的文本编辑器编辑以下配置文件:
-
/ etc / default / pdnsd
使用
START_DAEMON
编辑行如下:START_DAEMON=yes
-
/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服务器,你可以使用它。 尽可能多地备份根服务器。
-
/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才能解决。 我们没有松开缓存。 您可能需要阅读手册,并根据您的情况更改一些设置。 其中几个设置是:
-
min_ttl
:应该保存缓存响应的默认最短时间为15分钟。 您可能希望减少与父服务器联系的频率。 副作用是,如果站点的地址发生变化,则qdnsd需要一段时间才能与父服务器联系新的地址。 如果最短时间不够长,延长停电时也会丢失缓存。 -
perm_cache
:这是缓存的磁盘空间大小。 根据您网络上的流量,您可能希望将其增加到可以舒适地存储至少一周数据的值。 您可以在一段时间内监控缓存文件的大小,以获得对您应有足够的感觉。