问题描述
为了加快DNS查找,我想安装DNS缓存或代理。
我可以看到至少三个我认为可以完成工作的程序:bind9,pdnsd或dnsmasq。
我想确保如果我安装其中之一,从性能或安全性的角度来看,不要让它配置不当。那么,人们会建议什么?安装后我应该立即进行任何配置更改吗?
最佳思路
-
安装bind9
-
将resolv.conf指向127.0.0.1
为此,请按照以下步骤操作:
安装Bind9
-
打开“ Ubuntu软件中心”(“应用程序”->“ Ubuntu软件中心”)
-
搜索bind9
-
检查以显示”Technical Items”
-
标记bind9并安装
更新/etc/resolv.conf
-
打开网络管理器(系统->首选项->网络管理器)
-
查找并编辑连接(有线或无线)
-
切换“ IPV4配置”选项卡
-
在”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