我想在本地主机(服务器)上拥有强大的 DNS 缓存服务器。因此我需要将名称服务器更改为本地主机。
我该如何改变它?根据这个配置,似乎我不能通过编辑器来改变它,那么我该如何改变它呢?
root@asqar# cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 4.2.2.4 search asqar.net
我正在使用,
bind9
如何设置 DNS 缓存,任何配置?
答案1
如果您想在本地机器上使用 DNS 缓存,请使用 dnsmasq,而不是 BIND。
除非您确实需要本地迭代名称服务器,否则请卸载 BIND。
sudo apt-get purge bind9
现在来看看 dnsmasq。有两种使用 dnsmasq 的方法。
1:如果您使用 NetworkManager 来管理网络,那么您已经安装了 dnsmasq-base 包;您只需通过编辑来启用 NetworkManager 控制的 dnsmasq 实例NetworkManager.conf
sudo gedit /etc/NetworkManager/NetworkManager.conf
并确保
dns=dnsmasq
存在。接下来在此 dnsmasq 实例中启用缓存。创建一个名为的新配置文件,例如,local
sudo gedit /etc/NetworkManager/dnsmasq.d/local
并添加一行
cache-size=150
将默认缓存大小从零更改。然后重新启动网络管理器
sudo restart network-manager
它还将使用新的非零缓存大小启动或重新启动 NetworkManager 控制的 dnsmasq 实例。
这仅适用于 Ubuntu 12.10 或更高版本。在 Ubuntu 12.04 中,NetworkManager 控制的 dnsmasq 配置无法自定义,并且缓存大小为零。
2:使用 dnsmasq 的另一种方法是将其作为服务器运行。为此,请安装软件包dnsmasq
并通过编辑/etc/dnsmasq.conf
和设置cache-size
为大于零的值来配置它。
在 Ubuntu 12.10 中,如果 NetworkManager 控制的 dnsmasq 实例被禁用,则 dnsmasq 服务器将把查询转发到外部名称服务器;如果 NetworkManager 控制的 dnsmasq 实例被启用,则 dnsmasq 服务器将把查询转发到地址为 127.0.1.1 的 NetworkManager 控制的 dnsmasq 实例。
在 Ubuntu 12.04 中可以实现同样的事情,但是需要一些额外的手动配置步骤,因为在 Ubuntu 12.04 中,NetworkManager 控制的 dnsmasq 实例在 127.0.0.1 上监听,这与 dnsmasq 服务器的默认配置冲突。
答案2
这可能会有所帮助,我不认为它会在 ubuntu 上正常工作,但你应该能够轻松地适应它。
一个简单的named.conf,将所有DNS查询转发到另一个名称服务器,并缓存答案以供重复使用。在OpenBSD 4.7 BETA下测试
$ named -v BIND 9.4.2-P2
这种配置有助于最大限度地减少浏览网页时发出的重复名称服务器查询。这不仅适用于使用无线连接的笔记本电脑,也适用于希望有效利用 LAN/WAN 链接的部门。
The Access Control List (acl) limits useage of this forward-only nameserver to my local 192.168.222.0/24 subnet. The queries are forwarded to a dnscache namerver running on my OpenBSD firewall at 192.168.222.10. The cache size is limited to two MB, which probably is too much for a notebook or laptop. The comments show how to calculate this
使用无限精度计算器 bc(1) 计算字节数。
// 缓存和仅转发配置
// Access Control List acl clients { 192.168.222.0/24 ; }; options { forward only ; forwarders { 192.168.222.10 ; } ; allow-query { clients ; } ; // max-cache-size is in bytes : echo '2 * 1024^2' | bc max-cache-size 2097152 ; empty-zones-enable yes; } ; # After editing this file please use 'named-checkconf' to validate!
要在 OpenBSD 下启用此功能,假设上述配置已保存为 /var/naned/etc/caching-forward-only.conf,您必须将以下内容添加到 /etc/rc.conf.local:
named_flags='-4 -c /etc/caching-forward-only.conf'
请注意,应用程序使用 /etc/resolv.conf 来查找应使用哪个名称服务器。因此,对于部门名称服务器,所有客户端都应在 /etc/resolv.conf 中拥有该名称服务器的 IP 地址。
对于我在车库里的小部门,客户端在 /etc/resolv.conf 中有以下内容
nameserver 192.168.222.25
参考 :http://www.daemonforums.org/showthread.php?t=4471
或者试试这个,似乎更以 Ubuntu 为中心:http://soledadpenades.com/articles/ubuntu/using-bind-as-a-local-caching-name-server/