将Linux BIND DNS服务器用于Active Directory域
说明
Active Directory依赖DNS才能正常运行。由于Windows DNS完全基于BIND DNS版本9,因此BIND服务器也可以托管Active Directory域。
我们将基于Linux的BIND DNS服务器用于Active Directory的环境的一个示例是具有很大的LinuxUnix安装基础的环境。在这种情况下,我们可能希望将Active Directory区域托管在我们现有的基础结构上。
另一个示例是让来自第三方供应商的DNS设备(例如Infoblox)为内部名称服务提供支持。这些设备通常基于BIND,功能非常强大,并提供基本BIND安装中没有的高级企业功能,就像我们将要做的那样。
优点
Linux BIND服务器是一种非常轻巧且快速的DNS服务器。在中型到大型环境中,不需要很多硬件即可为其供电。可以说,另一个好处是,Linux可以更加安全,因为已知漏洞更少。
缺点
我们将失去一些Active Directory功能。没有复杂的第三方程序包,与Windows DNS不同,BIND域区域可能只有一个主机。 Active Directory环境中的Windows名称服务器具有多主机功能,可为我们提供更高的可用性。
另一个缺点是,大多数Windows环境没有强大的Linux技能集。我们可能会发现资源无法正确维护和管理Linux BIND DNS服务器。
服务器配置
我们用于本实验的服务器具有以下配置。提供此信息是为了使其更容易理解。我不包括硬件规范,因为这些规范很大程度上取决于我们环境的唯一性。
| 主机名 | 操作系统 | 角色 | IP地址 | 域 | 
|---|---|---|---|---|
| NS01 | CentOS 6.5 | DNS名称服务器 | 172.30.0.5 | 公司内部 | 
| DC01 | Windows Server 2012 R2 | 域控制器 | 172.30.0.10 | 公司内部 | 
名称服务器将为Active Directory创建以下区域。必须在我们的第一个域控制器DC01升级为Active Directory域控制器之前创建它们。没有区域,DC01将无法注册所需的DNS记录,以使Active Directory正常运行。
| DNS域区域 | 我们测试的区域 | 
|---|---|
| fqdn域名 | 公司内部 | 
| _msdcs.fqdn域名 | _msdcs.corp.theitroad.test | 
| _sites。fqdn域名 | _sites.corp.theitroad.test | 
| _tcp.fqdn域名 | _tcp.corp.theitroad.test | 
| _udp.fqdn域名 | _udp.corp.theitroad.test | 
第一个域区域是必需的。仅当我们要将记录组织到不同的数据库中时才需要其余区域,这可能是出于管理或者性能方面的原因。如果不创建这些区域,则会在第一个区域的数据库中自动创建它们。
安装和配置BIND
- 使用具有管理特权的帐户登录到CentOS服务器。
 - 安装BIND。
 
yum install bind
- 在文本编辑器(如VI或者Nano)中打开BIND配置文件。配置文件位于此处。 
/ etc / named.conf - 查找Option指令。它应该从以下几行开始。
 
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;
- 用DNS服务器替换侦听端口选项的IP地址。
 - 将allow-query选项的值localhost替换为允许运行查询的网络。例如172.30.0.0/24. 我们还可以输入值any以允许任何客户端提交查询。
 - 使用新值,以上各行现在应看起来与此相似。
 
options {
        listen-on port 53 { 172.30.0.5; };
        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     { 172.30.0.0/24; };
        recursion yes;
创建Active Directory域区域
- 在配置文件仍然打开的情况下,添加以下行。请记住重命名区域的完全限定域名以匹配环境。
 
zone "corp.theitroad.test" IN {
        type master;
        file "dynamic/corp.theitroad.test";
        allow-update { 172.30.0.0/24; 192.168.1.0/24; };
};
zone "_msdcs.corp.theitroad.test" IN {
        type master;
        file "dynamic/_msdcs.corp.theitroad.test";
        allow-update { 172.30.0.0/24; 192.168.1.0/24; };
};
- 保存配置文件,然后退出文本编辑器。
 - 导航到动态数据库的默认区域数据库位置。我们正在这里创建数据库,以使我们的Active Directory客户端计算机能够自动注册其DNS记录。
 
cd /var/named/dynamic
- 基于空模板创建两个新的数据库文件。
 
cp ../named.empty corp.theitroad.test
cp ../named.empty _msdcs.corp.theitroad.test
- 在文本编辑器中打开corp.theitroad.test数据库文件。它看起来应该像下面的示例。
 
$TTL 3H
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
对于corp.theitroad.test域,我们需要对其进行修改,使其看起来像这样。
$TTL 3H
@       IN SOA  ns01.corp.theitroad.test. admin.corp.theitroad.test. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns01.corp.theitroad.test.
ns01               IN     A     172.30.0.5
- 保存更改并退出文本编辑器。
 - 打开_msdcs.corp.theitroad.test的数据库,并将其修改为如下所示。
 
$TTL 3H
@       IN SOA  ns01.corp.theitroad.test. admin.corp.theitroad.test. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      ns01.corp.theitroad.test.
- 保存更改并退出文本编辑器。
 - 启动BIND守护程序。
 
service bind start
- 将BIND配置为在启动时自动启动。
 
chkconfig bind on
配置DNS服务器自行查询
- 在文本编辑器(如VI或者Nano)中打开resolv.conf配置。
 
vi /etc/resolv.conf
- 对其进行修改,使其看起来如下所示,替换突出显示的文本以匹配环境。
 
search corp.theitroad.test search _msdcs.corp.theitroad.test nameserver 127.0.0.1
- 保存更改并退出文本编辑器。
 
将Windows Server升级为域控制器
你们都准备好了。剩下的一切就是让我们将Windows服务器指向用于DNS的linux BIND服务器,然后将其升级到Active Directory域控制器。所需的DNS记录将自动注册,除了多主复制外,我们还将具有功能齐全的Active Directory域。

