如何部署CentOS 6 BIND DNS服务器
说明
Bind是最受欢迎的命名服务之一。
本教程将将CentOS服务器准备成为DNS服务器。该服务器不会托管任何域,但是在以后的教程中,我们将学习使用此基本服务器设置它们。
目标
- 创建一个基础DNS服务器,该服务器可用于递归查找和缓存查询。
- 准备用于托管域区域的主DNS服务器。
系统配置
使用的服务器具有以下配置。一些信息将在教程中引用,并在此处显示,以简化后续操作。
主机名 | 操作系统 | IP地址 | 角色 | BIND版本 |
---|---|---|---|---|
ns01 | CentOS 6.4 | 172.30.1.5 | bind | 9.x |
Bind服务器角色
在安装Bind之前,应先了解如何在环境中使用它。有几个选项可供选择,并且根据我们使用的配置的不同而不同。
|||
|--- |
|Cache-Only|此角色不包含和域或者区域。它纯粹作为一个缓存系统存在,以提高名称解析性能。每次查找都会转发到另一个DNS服务器。从服务器返回的结果在本地缓存|
|Master|主服务器是网络中承载的域或者区域的所有者。它是环境中唯一的读写DNS服务器|
|Slave|从属服务器是一个只读的命名服务器,它承载主服务器拥有的区域。这些通常用于冗余,如果主机停机进行维护,则允许名称解析服务继续|
安装Bind
我们需要先安装必备软件包,然后才能继续。
- 使用Yum和CentOS存储库安装BIND。
yum install bind
- 启动BIND名为start的服务
- 配置"BIND"以在启动时启动。 " chkconfig命名于"
配置Bind
打开Bind的配置文件时,首先会看到全局选项,这些选项会影响服务器以及我们可能添加到主机域的每个区域。我在下面详细介绍了我们将遇到的默认选项。
全局选项和设置
- 将Bind的配置文件打开到文本编辑器中。
nano / etc / named.conf
- 查找options指令。它位于配置文件的顶部,应类似于CentOS服务器上的以下示例。
options { listen-on port 53 { 127.0.0.1; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { localhost; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };
- 从上面的输出中可以看到,有很多默认选项。下面是我们现在需要了解的四个。
监听端口53 |
---|
定义IPv4的端口BIND侦听 |
定义IPv6的端口BIND侦听 |
DNS区域文件和状态的默认目录根 |
允许查询此服务器的IP地址或者子网 |
- 分配一个IP地址或者多个IP地址,Bind会监听这些请求。我们将分配eth0的地址和本地环回。 `监听端口53 {172.30.1.5; 127.0.0.1;或者,要允许Bind侦听分配给服务器的所有可用IP地址,请输入any;而不是IP地址。
- 为了允许客户端查询DNS服务器,我们需要修改allow-query选项。默认情况下,它仅允许来自本地主机的查询。我们将对其进行修改,以允许来自BIND服务器所在网络的查询。
allow-query {172.30.1.0/24; 127.0.0.1; };
我们可以分配任意多个值,但是每个值都必须以分号结尾。与监听选项一样,我们可以输入any;允许任何人提交查询的权限。 - 保存更改并退出文本编辑器。
- 在BIND中加载新配置。服务名为重载
配置防火墙
在我们打开适当的端口之前,我们的客户将无法连接到我们的服务器。我们使用named.conf文件中listen-on选项定义的值来确定要打开的端口。默认情况下,IPv4和IPv6均使用53.
- 启动System-config-firewall-tui工具。
system-config-firewal-tui
- 通过按Tab键导航到``自定义''按钮。
- 向下滚动受信任的服务列表并启用DNS。
- 通过按Tab键导航到``关闭''按钮。
- 按下Tab键导航至OK按钮。
将DNS服务器指向自身进行查找
除非我们将服务器指向其自身以在其网络设置中进行DNS查找,否则它将无法响应来自客户端及其自身查找的查询。在客户端可以使用此服务器之前,我们需要配置该服务器用于DNS名称解析的位置。
- 在文本编辑器中打开resolv.conf文件。
nano / etc / resolv.conf
- 清除所有现有选项,然后添加以下内容。我们这样做是因为它是目前环境中唯一的DNS服务器,并且该服务器还不是任何域的成员。域名服务器127.0.0.1
- 保存更改并退出文本编辑器。
- 更改立即生效。我们不需要重新启动任何服务。
测试服务器
为了验证一切正常,我们应该执行一些DNS查询。我们可以使用一些工具来执行此操作,例如nslookup,ping或者dig。由于服务器不托管任何域,因此我们必须针对公共域(例如Google)进行测试。在我们的示例中,我们将使用dig工具检查名称解析。
dig google.com
如果一切顺利,我们应该会看到类似的输出,其中显示了我们刚刚查询的完全限定域名的每条记录。
[Hyman@localhost named]# dig google.com ; >><< DiG 9.8.2rc1-RedHat-9.8.2-0.23.rc1.el6_5.1 >><< google.com ;; global options: +cmd ;; Got answer: ;; ->><<HEADER>><<- opcode: QUERY, status: NOERROR, id: 28565 ;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 4, ADDITIONAL: 4 ;; QUESTION SECTION: ;google.com. IN A ;; ANSWER SECTION: google.com. 300 IN A 74.125.226.134 google.com. 300 IN A 74.125.226.128 google.com. 300 IN A 74.125.226.131 google.com. 300 IN A 74.125.226.129 google.com. 300 IN A 74.125.226.136 google.com. 300 IN A 74.125.226.137 google.com. 300 IN A 74.125.226.133 google.com. 300 IN A 74.125.226.130 google.com. 300 IN A 74.125.226.135 google.com. 300 IN A 74.125.226.142 google.com. 300 IN A 74.125.226.132 ;; AUTHORITY SECTION: google.com. 11184 IN NS ns1.google.com. google.com. 11184 IN NS ns3.google.com. google.com. 11184 IN NS ns4.google.com. google.com. 11184 IN NS ns2.google.com. ;; ADDITIONAL SECTION: ns2.google.com. 183984 IN A 216.239.34.10 ns1.google.com. 183984 IN A 216.239.32.10 ns3.google.com. 183984 IN A 216.239.36.10 ns4.google.com. 183984 IN A 216.239.38.10 ;; Query time: 44 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Sat Mar 8 10:10:56 2014 ;; MSG SIZE rcvd: 340
注意上面突出显示的SERVER值。这验证了我们的查询是从我们的DNS服务器而不是其他服务器进行的。