在 Ubuntu Server 14.04 中设置缓存 DNS 服务器
域名服务 (DNS) 是一种将 IP 地址和完全限定域名相互映射的命名服务。运行 DNS 的计算机称为名称服务器。
在这里,我使用转发器、正向查找和保留查找来安装和配置缓存服务器。在大多数地方,我们需要预留查找。缓存服务器不会保存任何域名,它仅作为指向服务器工作。在深入讨论之前,我们需要了解 DNS 服务器及其工作原理。
什么是 DNS?
这是了解 DNS 及其工作原理的简单方法。
如果我们需要在浏览器中访问howtoing.com,系统会寻找howtoing.com。在 .com 的末尾会有一个 (.) 那么这是什么?
(.)代表命名空间根服务器,全局可用的根服务器共有13个。当我们访问 howtoing.com 时,它会根据操作系统配置要求命名服务器。在Ubuntu中,我们曾经在/etc/resolv.conf中配置名称服务器,当访问howtoing.com时,如果根名称服务器不这样做,我的浏览器会询问根名称服务器拥有我请求的域信息,它将缓存我请求的信息并将我的请求转发到(TLD)顶级域名称服务器,即使在 TLD 名称服务器中我的请求也不是可用时,它将被缓存并转发到权威名称服务器。
在域名注册时,我们的域名注册者将定义我们的域名应使用哪个权威名称服务器。因此,权威名称服务器拥有我们的域名信息,当我们的请求到达 ANS 时,它将回复 howtoing.com 具有 111.111.222.1 的查询,同时它将缓存在权威名称服务器中并将请求发送回浏览器。上述每个步骤都在几毫秒内完成。
希望您现在了解什么是 DNS 及其工作原理。现在让我们在 Ubuntu Server 14.04 LTS 中设置一个缓存 DNS 服务器。
第1步:安装DNS服务器
首先,看一下我的本地 DNS 服务器信息,例如静态 IP 地址和主机名,这些信息用于本文目的。
IP Address: 192.168.0.100
Hostname: dns.tecmintlocal.com
要验证上述设置是否正确,我们可以使用“hostnamectl”和“ifconfig”命令。
hostnamectl
ifconfig eth0 | grep inet
接下来,我们在设置 DNS 缓存服务器之前更新默认存储库并进行系统升级。
sudo apt-get update && sudo apt-get upgrade -y
现在,使用以下命令安装 DNS 软件包 bind 和 dnsutils。
sudo apt-get install bind9 dnsutils -y
安装 dns 后,移至 /etc/bind 下的绑定配置目录。
/etc/bind/
ls -l
步骤2:设置DNS缓存服务器
首先,我们在这里设置和配置缓存服务器。使用 vim 编辑器打开并编辑文件 named.conf.options。
sudo vim named.conf.options
现在,这里的单词“转发器”用于缓存域名请求。所以,在这里我们将使用我的路由器作为转发器。取消注释该行前面的 //,如图所示。
forwarders {
192.168.0.1;
};
使用 wq! 保存并退出文件。现在是时候启动绑定服务器进行小测试了。
sudo /etc/init.d/bind9 start
如果我们需要测试缓存是否有效,可以使用dig命令来检查缓存是否有效。
举个例子,我们现在要挖 ubuntu.com,一开始它不会被缓存,所以可能需要几毫秒,一旦缓存就会以闪电般的速度。
dig @127.0.0.1 ubuntu.com
dig 命令是一个用于 DNS 查找的工具。要了解有关 Dig 命令的更多信息,请阅读以下主题。
- 10 个有用的 Dig 命令示例
在这里,我们可以在上图中看到,第一次挖掘时,我的查询花费了 1965 毫秒,并显示哪个 IP 地址绑定到 ubuntu.com。
让我们再尝试一次,看看查询时间。
酷!,在第二次尝试中,我们在 5 毫秒内得到了查询。希望您现在知道什么是缓存服务器。上图显示,共有13根服务器正在缓存Ubuntu.com,因为数百万人已经访问了Ubuntu官方网站。
步骤3:设置主DNS服务器
创建一个MASTER DNS服务器,这里我将域名定义为howtoinglocal.com,使用vim编辑器编辑文件named.conf.local。
sudo vim /etc/bind/named.conf.local
输入 DNS-Master 条目,如下所示。
zone "tecmintlocal.com" {
type master;
file "/etc/bind/db.tecmintlocal.com";
};
- 区域:域中的主机详细信息
- 类型:主 DNS。
- 文件:存储区域信息的位置。
通过从 db.local 制作副本来创建区域文件 db.howtoinglocal.com(正向查找)。
sudo cp db.local db.tecmintlocal.com
现在使用 vim 编辑器打开并编辑复制的区域文件。
sudo vim db.tecmintlocal.com
接下来,添加以下示例条目,我已将其用于教程目的。我也将同样的方法用于其他虚拟机设置。根据您的要求修改以下条目。
;
; BIND data file for local loopback interface
;
$TTL 604800
@ IN SOA tecmintlocal.com. root.tecmintlocal.com. (
2014082801 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.tecmintlocal.com.
ns IN A 192.168.0.100
clt1 IN A 192.168.0.111
ldap IN A 192.168.0.200
ldapc IN A 192.168.0.211
mail IN CNAME clt1.tecmintlocal.com.
使用 wq! 保存并退出文件。
最后,使用以下命令重新启动绑定 DNS 服务。
sudo service bind9 restart
我们需要确认上述区域设置是否有效。让我们使用 dig 命令进行检查。从本地主机查询运行以下命令。
dig @127.0.0.1 mail.tecmintlocal.com
让我们 ping 并测试 clt1.howtoinglocal.com,在此之前我们需要将 dns 服务器条目更改为 localhost 并重新启动网络才能生效。
打开并编辑网络接口设置并输入 DNS 条目。
sudo vim /etc/network/interfaces
如下更改界面中的 DNS 条目。
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
network 192.168.0.0
broadcast 192.168.0.255
dns-nameservers 127.0.0.1
dns-search tecmintlocal.com
添加条目后,使用以下命令重新启动网络。
sudo ifdown eth0 && sudo ifup eth0
如果重启网络没有生效,就需要重启。现在让我们 ping 并检查 clt1.howtoinglocal.com,在其回复时,我们需要获取我们为主机名 clt1 定义的 IP 地址。
ping clt1.tecmintlocal.com -c 3
设置反向 DNS 查找
再次打开并编辑文件 named.conf.local。
sudo vim /etc/bind/named.conf.local
现在添加以下反向 DNS 查找条目,如图所示。
zone "0.168.192.in-addr.arpa" {
type master;
notify no;
file "/etc/bind/db.tecmintlocal192";
};
使用 wq! 保存并退出文件。现在创建一个db.howtoinglocal192文件,正如我在上面的主文件中提到的用于反向查找,将db.127复制到db.howtoinglocal192 使用以下命令。
sudo cp db.127 db.tecmintlocal192
现在,打开并编辑文件 db.howtoinglocal192 以设置反向查找。
sudo vim db.tecmintlocal192
输入以下条目,根据您的要求修改以下条目。
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA ns.tecmintlocal.com. root.tecmintlocal.com. (
2014082802 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
100 IN PTR ns.tecmintlocal.com.
111 IN PTR ctl1.tecmintlocal.com.
200 IN PTR ldap.tecmintlocal.com.
211 IN PTR ldapc.tecmintlocal.com.
使用重新启动绑定服务。
现在,验证保留查找条目。
host 192.168.0.111
当我们使用如上所示的 IP 地址进行反向查找时,它希望使用如上图所示的名称进行回复。
我们也使用 dig 命令进行检查。
dig clt1.tecmintlocal.com
在这里,我们可以看到答案部分中的查询的答案,因为域名clt1.howtoinglocal.com具有IP地址 192.168.0.111。
第四步:设置客户端
只需将客户端计算机中的 IP 地址和 dns 条目更改为我们的本地 dns 服务器 192.168.0.100,如果是这样,我们的客户端计算机将从本地 DNS 服务器获取分配的主机名。
让我们使用以下一系列命令检查客户端的主机名。
ifconfig eth0 | grep inet
hostname
dig -x 192.168.0.100
了解 dns 中的区域文件条目,此图将为您提供一个小解释,说明我们在区域文件条目中定义的内容。
就是这样!在本文中,我们了解了如何设置本地 DNS 服务器供办公室或家庭使用。
很快您就可以阅读有关如何使用各种工具对 DNS 服务器进行故障排除并修复它的文章。有许多工具可用于对 DNS 服务器进行故障排除。阅读下面的文章以了解一些故障排除技巧。
用于 DNS 故障排除的 8 个 Nslookup 命令