将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域。