当前位置: 首页>>技术教程>>正文


performance – 设置DNS缓存的最佳方法?

, , ,

问题描述

为了加快DNS查找,我想安装DNS缓存或代理。

我可以看到至少三个我认为可以完成工作的程序:bind9,pdnsd或dnsmasq。

我想确保如果我安装其中之一,从性能或安全性的角度来看,不要让它配置不当。那么,人们会建议什么?安装后我应该立即进行任何配置更改吗?

最佳思路

  1. 安装bind9

  2. 将resolv.conf指向127.0.0.1

为此,请按照以下步骤操作:

安装Bind9

  1. 打开“ Ubuntu软件中心”(“应用程序”->“ Ubuntu软件中心”)

  2. 搜索bind9

  3. 检查以显示”Technical Items”

  4. 标记bind9并安装

更新/etc/resolv.conf

  1. 打开网络管理器(系统->首选项->网络管理器)

  2. 查找并编辑连接(有线或无线)

  3. 切换“ IPV4配置”选项卡

  4. 在”DNS Servers”字段上写127.0.0.1

完成!

去测试

打开gnome-terminal(应用程序>附件>终端),然后键入

dig ubuntu.com 

(如果没有,请按照bind9的说明安装dnsutils软件包)

查看最后的答案,例如:

我在ubuntu.com的第一个查询

;; Query time: **209 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:20:12 2011
;; MSG SIZE  rcvd: 196

我的第二个查询:

;; Query time: **0 msec**
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jan 22 12:18:23 2011
;; MSG SIZE  rcvd: 156

服务器127.0.0.1表示您正在本地解析。看一下查询时间(用**包围),第二个被缓存。

次佳思路

我会推荐dnsmasq,

在这里看到一个不错的教程; http://embraceubuntu.com/2006/08/02/local-dns-cache-for-faster-browsing/

您可能想在这里阅读比较;

http://en.wikipedia.org/wiki/Comparison_of_DNS_server_software

第三种思路

“为了加速DNS查找,我想安装DNS缓存或代理。”

行。但是,还有一种更简单的方法。对于OpenDNS /Google缓存中已经存在的名称,使用OpenDNS和/或Google域名服务器将比您自己的本地缓存更快。几乎在所有情况下,使用208.67.222.222、208.67.220.220和/或8.8.8.8作为命名服务都会​​更快。您可以使用time nslookup www.google.com 208.67.222.222进行测试,以测试其中一个OpenDNS名称服务器,Google的time nslookup www.google.com 8.8.8.8或本地缓存中的time nslookup www.google.com 127.0.0.1的速度。当我说得更快时,我指的是技术上更快,而并不是那么快,以至于人们很容易注意到差异。

“我可以看到至少三个我认为可以完成工作的程序:bind9,pdnsd或dnsmasq。”

您是否打开djbdns的dnscache部分?以下说明。不过,没有补丁它不会保存缓存…

sudo apt-get remove bind9 dnsmasq-base
sudo apt-get install djbdns dnscache-run
sudo killall -9 dnsmasq
sudo update-rc.d -f bind9 remove

然后,我们需要告诉系统使用缓存。

sudo gedit /etc/resolv.conf

编辑文件,使其看起来像此示例。该文件定义了要使用的名称服务器,默认域和搜索后缀。搜索后缀使仅使用完全限定域名的主机名部分运行查询成为可能。例如,当example.com是”search”参数的值时,’nslookup www’自动变为’nslookup www.example.com’。

nameserver 127.0.0.1      # Use the local resolver first.
nameserver 208.67.222.222 # OpenDNS
nameserver 8.8.8.8        # Google
domain example.com
search example.com

这有点花哨,但是我们需要获取最新的根名称服务器。

sudo dnsip $(dnsqr ns . | sed -e '/answer/!d;s/\(.*\)NS \(.*\)/\2/') | sudo tee /etc/dnscache/root/servers/@

我认为使用DHCP时resolv.conf文件将被覆盖。我选择给自己一个静态IP地址,然后删除挤压该软件的软件,然后编辑interfaces文件以设置静态IP地址。但是,如果您愿意的话,可以尝试使用Network Manager。

sudo apt-get purge network-manager network-manager-gnome
sudo gedit /etc/network/interfaces

我的接口文件如下所示,但请根据您的配置进行修改。

# Loopback
#
auto lo
iface lo inet loopback

# First network card (attached to NAT router, attached to cable internet)
#
auto eth0
iface eth0 inet static
address 192.168.1.254
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

现在,让我们重新启动。

sudo reboot

现在,您正在使用本地解析器和最新的根服务器。但是您会注意到,如果尝试使用OpenDNS和Google来回答问题的速度更快(对于缓存中的名称,这是所有最受欢迎的域)。没有其他配置可导致该软件变得更加安全。

第四种思路

我正在使用”dnscache”(软件包”dnscache-run”),这非常简单。无需配置任何内容。它捕获DNS请求(端口53)并缓存响应,下一次Linux要求该域时,dnscache立即返回IP。尽管可以通过更改两个参数来改进此程序:

echo 16000000 > /etc/sv/dnscache/env/CACHESIZE
echo 16777216 > /etc/sv/dnscache/env/DATALIMIT

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/11770.html,未经允许,请勿转载。