DNS委派是什么?,第1张

以下是最常见的顶级域:

com,用于商业组织。

edu,用于教育机构。

org,用于非赢利组织。

net,用于计算机网络组织。

gov,用于美国政府组织。

两字母或三字母国家/地区代码,如 jp 是日本的代码。

不同组织的域名在每个顶级域下面相应地分支展开。可以进一步沿树状结构细分出组织内各部门的更多域名(称为子域)。最后,将主机名加在名称结构的前面构成 FQDN,如“server2msdnmicrosoftcom”。事实上,“msdnmicrosoftcom”也是一个 FQDN,它指的是 microsoftcom 中的某个 Web 服务器群集。

DNS 工作原理

DNS 是一个分布式数据库系统,它提供将域名转换成对应 IP 地址的信息。这种将名称转换成 IP 地址的方法称为名称解析。

一般来说,每个组织有其自己的 DNS 服务器,并维护域的名称映射数据库记录或资源记录。当请求名称解析时,DNS 服务器先在自己的记录中检查是否有对应的 IP 地址。如果未找到,它就会向其它 DNS 服务器询问该信息。

例如,当要求 Web 浏览器访问“msdnmicrosoftcom”站点时,它就会通过以下步骤来解析该域名的 IP 地址:

Web 浏览器调用 DNS 客户端(称为解析器),并使用上次查询缓存的信息在本地解析该查询。

如果在本地无法解析查询,客户端就会向已知的 DNS 服务器询问答案。如果该 DNS 服务器曾经在特定的时间段内处理过相同的域名(“msdnmicrosoftcom“)请求,它就会在缓存中检索相应的 IP 地址,并将它返回给客户端。

如果该 DNS 服务器找不到相应的地址,客户端就会向某个全局根 DNS 服务器询问,后者返回顶级域权威 DNS 服务器的指针。在这种情况下,“com”域权威服务器的 IP 地址将返回给客户端。

类似地,客户端向“com”服务器询问“microsoftcom”服务器的地址。然后,客户端将原始查询传到“microsoftcom”服务器。

因为“microsoftcom”服务器在本地维护“msdnmicrosoftcom”域的权威记录,所以它将最终结果返回给客户端,并完成特定 IP 地址的查询。

注意,可以将 DNS 资源记录缓存到网络上任意数量的 DNS 服务器中。第 2 步中提到的 DNS 服务器可能不包含“msdnmicrosoftcom”缓存记录。但是,它可能有“microsoftcom”的记录,更可能有“com”域的记录。这可省去客户端获得最终结果所需的一次或几次查询,从而加快了整个搜索过程。

为了维护 DNS 缓存中的最新信息,缓存记录有一个与信息关联的“生存时间”设置(类似于牛奶的保鲜期)。当记录到期时,必须对它们再次进行搜索。

DNS 资源记录

如前所述,每个 DNS 数据库都由资源记录构成。一般来说,资源记录包含与特定主机有关的信息,如 IP 地址、主机的所有者或者提供服务的类型。

资源记录类型

说明

解释

SOA

起始授权机构

此记录指定区域的起点。它所包含的信息有区域名、区域管理员电子邮件地址,以及指示辅 DNS 服务器如何更新区域数据文件的设置等。

常用的资源记录类型

A 地址 此记录列出特定主机名的 IP 地址。这是名称解析的重要记录。

CNAME 标准名称 此记录指定标准主机名的别名。

MX 邮件交换器 此记录列出了负责接收发到域中的电子邮件的主机。

NS 名称服务器 此记录指定负责给定区域的名称服务器。

DNS 区域

通常,DNS 数据库可分成不同的相关资源记录集。其中的每个记录集称为区域。区域可以包含整个域、部分域或只是一个或几个子域的资源记录。

管理某个区域(或记录集)的 DNS 服务器称为该区域的权威名称服务器。每个名称服务器可以是一个或多个区域的权威名称服务器。

在域中划分多个区域的主要目的是为了简化 DNS 的管理任务,即委派一组权威名称服务器来管理每个区域。采用这样的分布式结构,当域名称空间不断扩展时,各个域的管理员可以有效地管理各自的子域。

有时,区域和域是很难分辨的。

区域是域的子集。可以将它看作域名称空间的某个分支(或子树)。例如,Microsoft 名称服务器可以同时是“microsoftcom”区域、“msdnmicrosoftcom”区域和“marketingmicrosoftcom”区域的权威名称服务器。但是,可以将子域的区域(如“msdnmicrosoftcom”)委派给其它专用名称服务器管理。如果设置的区域包含整个域的资源记录,那么该区域与该域的范围是相同的。

对于 Windows 2000,区域信息或者以传统文本文件格式存储,或者集成到 Active Directory 数据库中。稍后,我们将详细阐述 DNS 与 Active Directory 如何协作。

主 DNS 服务器和辅 DNS 服务器

为保证服务的高可用性,DNS 要求使用多台名称服务器冗余支持每个区域。

某个区域的资源记录通过手动或自动方式更新到单个主名称服务器(称为主 DNS 服务器)上。主 DNS 服务器可以是一个或几个区域的权威名称服务器。

其它冗余名称服务器(称为辅 DNS 服务器)用作同一区域中主服务器的备份服务器,以防主服务器无法访问或宕机。辅 DNS 服务器定期与主 DNS 服务器通讯,确保它的区域信息保持最新。如果不是最新信息,辅 DNS 服务器就会从主服务器获取最新区域数据文件的副本。这种将区域文件复制到多台名称服务器的过程称为区域复制。

Active Directory 和 DNS 的关系

Active Directory 是 Windows 2000 中新增的目录服务。该服务存储所有网络资源的信息,如计算机、共享文件夹、用户等等。它还通过标准的 Internet 协议(轻量目录访问协议,LDAP)将此类信息提供给用户和应用程序。有关 Active Directory 的详细信息,请参阅 Technet 文章设置 Active Directory 域 。

与 Microsoft Windows NT® 40 中的域控制器相比,Active Directory 与 DNS 的关系更加密切。实际上,DNS 是支持 Active Directory 所必需的。通常,安装 Active Directory 服务器时,如果网络上找不到 DNS 服务器,就会在安装过程中安装 DNS 服务器。

支持域控制器的定位器服务

Windows 2000 中最重要的新概念之一就是:计算机不再主要用网络基本输入/输出系统 (NetBIOS) 名称来标识,而是使用 DNS 完全合格的域名称 (FQDN) 来标识,如“server1duwamishonlinecom”。

因此,要登录并访问 Windows NT 域中的资源,Windows 2000 计算机必须查找 DNS 服务器,后者帮助定位 Active Directory 域控制器。换句话说,DNS 用作域控制器的定位器服务。

与 Active Directory 集成

Windows 2000 DNS 服务器的另一个重要功能是:DNS 区域可以集成到 Active Directory 中,以提供增强的容错和安全功能。每个与 Active Directory 集成的区域将自动复制到 Active Directory 域的所有域控制器中。

不过,仍可以将 Windows 2000 DNS 服务器配置为基于传统文件的 DNS 服务器。但是,要提供 DNS 服务容错功能,除主 DNS 服务器外,还必须手动安装辅 DNS 服务器。

配置 Duwamish Online 的 DNS 服务

Duwamish Online 要求使用外部和内部域名称解析。

在外部,DNS 服务将“[url]wwwDuwamishOnlinecom[/url]”解析为 Web 服务器的 IP 地址。Duwamish Online 应用程序使用内部名称解析来解析服务器的名称。要从 COM+ 列队组件 (QC) 访问消息队列 (MSMQ) 公共队列,必须使用 Active Directory,而后者又要求使用 DNS。有关 MSMQ 和网络体系结构的详细信息,请参阅 Duwamish Online Message Queuing Configuration 上的文章 。

在 Windows 2000 中安装 DNS 服务相对比较简单。但是,外部和内部 DNS 信息的安全要求是不同的。在本节中,我们将讨论这些安全问题和可能的解决方案。我们将讨论(消息队列配置使用的)Active Directory 服务与 Duwamish Online Web 群中 DNS 之间的关系。还要告诉您如何注册域名,如何安装带有 Windows 2000 的 DNS 服务器。

公用和专用 DNS 信息的安全问题

最初,我们安装了两台 DNS 服务器:一台主 DNS 服务器和一台用于冗余的辅 DNS 服务器。在这些 DNS 服务器中设置了两个区域:一个用于外部 Internet 域“DuwamishOnlinecom”,另一个用于内部域“InternalDomaincom”。

如前所述,安装用于内部域的 DNS 服务器是 Windows 2000 Active Directory 域的新要求。使用该原始配置,将 DNS 服务器同时设置为内部域和外部域的“多主”,例如,外部网络接口卡 (NIC) 的 IP 地址为 1921681001,内部 NIC 的 IP 地址为 1010101。

允许 Internet 用户向服务器查询外部区域。但是,因为同一 DNS 服务器同时管理外部和内部区域,所以外部用户也可以向服务器查询内部区域。Internet 用户可以使用基本网络工具(如名称服务搜索,NSLookup)访问所有内部域 DNS 信息。

理论上,无法将任何网络数据包路由到内部域,直接攻击内部服务器。但是,向外界泄露的内部信息越少,操作的安全性越高。这可防止他人利用后端服务器(此处存储重要业务信息)的潜在漏洞,进一步窃取机密信息。

朋友们好,我也是一个刚刚接触Linux的 ,对于Linux下的DNS配置有点复杂,我也在网上搜索了好久,经过我的整理做了这个教程。希望给广大Linux新手朋友们一点帮助。

任务1:构建主域名服务器

任务2:构建辅助域名服务器

任务3:测试DNS服务

任务4:缓存DNS服务的配置与测试

任务5:DNS转发器的配置

任务6:新建子域及子域委派。

建立两个虚拟机

1#ifconfig

2#netconfig

3ip address 192168131

netmask: 2552552550

default gateway: 19216813154

primary nameserver: 192168131

4# service network restart

5ifconfig

6rpm -ql |grep bind

--查看安装的和dns相关的软件包。

bind-utils-924-2

ypbind-1172-2

bind-624-2

bind-libs-924-2

7#rpm -qa |grep caching

caching-nameserver-73-3

8#rpm -ql caching-nameserver

--可以看到好到十一个文件。

有主配置文件和区域文件。

/var/named/namedca--目前互联网上的的根域服务器清单。

9#service named start

10#cat /var/named/namedca

我们现在配置主dns服务器。

1ll /etc/namedconf

-rw-r--r-- 1 root root 1323 Aug 26 2010 /etc/namedcom

2ll /var/named/

--可以看到九个文件

3vi /etc/namedconf

默认用六个配置。

我们复制

zone"localhsot" IN {

type master;

file "localhostzone";

allow-update {nane; };

};

zone "00127in-addrarpa" IN {

type master;

file "localhostzone";

allow-update {none; };

};

粘贴到下面,修改一下域名和区域。

zone "xapccom" IN {

type master;

file "xapccomzone";

allow-update {none; };

};

zone "13168192in-addrarpa" IN {

type master;

file "xapccomrev";

allow-update {none;};

};

:wq

4#clear

5#cd /var/named

6#ll

7#cp localhostzone xapccomzone

8#cp namedlocal xapccomrev

9#vi xapccomzone

--我们要修改里面的配置了

@ IN SOA root (

42 ; serial(dadams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS @

IN A 172001

IN AAAA ::1

---------------这是系统默认的配置。我们要修改了

@ IN SOA dns1xapccom rootxapccom (

42 ; serial(dadams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS dns1xapccom

IN NS dns2xapccom

IN MX 5 mailxapccom

dns1 IN A 192168131

dns2 IN A 192168132

www IN CNAME dns1xapccom

ftp IN CNAME dns2xapccom

mail IN CNAME dns2xapccom

:wq

10#vi xapccomrev

@ IN SOA localhostrootlocalhost (

132323232 ; Serial

28808 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Mimimum

IN NS localhost

1 IN PTR localhost

-----------以上是默认的配置,我们要修改了

@ IN SOA dns1xapccom rootxapccom (

132323232 ; Serial

28808 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Mimimum

IN NS dns1xapccom

IN NS dns2xapccom

1 IN PTR dns1xapccom

1 IN PTR wwwxapccom

2 IN PTR dns2xapccom

2 IN PTR ftpxapccom

:wq

11# named-checkconf

--如果没有提示说明成功了

12# named-checkzone xapccom xapccomzone

13#service named restart

14#nslookup

service 192168131-----联系一下。

15#ifconfig

16#ping 192168131

17#netstat -ntl

18#cat /etc/resolvconf

nameserver 192168131

19#nslookup wwwxapccom

server: 192168131

Adderss: 192168131#53

wwwxapccom cononical name = dns1xapccom

Name: dns1xapccom

Address: 192168131

20#nslookup ftpxapccom

server: 192168131

Adderss: 192168131#53

ftpxapccom canonical name = dns2xapccom

Name: dns2xapccom

Address: 192168132

----以上都的正向解析。

----下面开始反相解析了

21nslookup 192l68132

Server: 192168131

Address: 192168131#53

213168192in-addrarpa name = ftpxapccom

213168192in-addrarpa name = dns2xapccom

22cat /etc/resolvconf

nameserver 192168131

---默认保存在这个文件中,会上这个文件中去找。

23#ping dns1xapccom

24 #nslookup

server ip地址 --这里可以临时改变DNS服务器。

set type=mx

xapccom

Server: 192168131

Address: 192168131#53

xapccom mail exchamger = 5 mailxapccom

set type=a

mailxapccom

Server: 192168131

Address: 192168131#53

mailxapccom comomical name = dns2xapccom

Name: dns2xapccom

Address: 192168132

exit

上面是正向和反向的配置。

二:现在我们配置辅助服务器。

好了,我们现在进入第二台虚拟机上

1#ifconfig

2#netconfig

ip address: 192168132

netmask: 2552552550

default gateway : 19216813254

primary nameserver: 192168132

3#service network restart

4#ifconfig

5#ping 192168131

6# rpm -qa | grep bind

bind-utils-924-2

ypbind--1172-3

bind-9244-2

bind-libs-924-2

7#rpm -q cachimg-nameserver

cachim-nameserver-73-3

8vi /etc/namedconf

zone"localhsot" IN {

type master;

file "localhostzone";

allow-update {nane; };

};

zone "00127in-addrarpa" IN {

type master;

file "localhostzone";

allow-update {none; };

};

-----这是它默认的配置,我们要添加配置内容。

zone "xapccom" IN {

type slave;

file "slaves/xapccomzone";

masters {192168131; };

};

zone "13168192in-addrarpa" IN {

type slave;

file "slaves/xapccomrev";

masters {192168131;};

};

:wq

9#ll /var/named/

--可以看到九个文件

10#ll /var/named/slaves/

total 0

11#service named start

12#ll /var/named/slaves

-rw---- 1 named named 436 xapccomrev

-rw---- 1 named named 424 xapccomzone

13#nslookup ftpxapccom

Server: 192168132

Address: 192168132#53

ftpxapccom canonical name = dns2xapccom

Name: dns2xapccom

Address: 192168132

14#nslookup 192168131 --反向解析

Server: 192168132

Address: 192168132#53

113168192in-addrarpa name = wwwxapccom

113168192in-addrarpa name = dns1xapccom

我们可不可以做 有些区域我是辅助的,有些区域我是主服务器。

我们要做下一个实验了

1#vi /etc/namedconf

zone "xapccom" IN {

type slave;

file "slaves/xapccomzone";

masters {192168131; };

};

zone "13168192in-addrarpa" IN {

type slave;

file "slaves/xapccomrev";

masters {192168131;};

};

---- 这是前面配置好的结果,我们现在要在添加配置。

zone "pcgjcom" IN {

type master;

file "pcgjcomzone";

allow-update {none; };

};

:wq

2# cd /var/named

3#ll

4#cp localhostzone pcgjcomzone

5#vi pcgjcomzone

@ IN SOA @ root (

42 ; serial(dadams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS @

IN A 172001

IN AAAA ::1

---------------这是系统默认的配置。我们要修改了

@ IN SOA dnspcgjcom rootpcgjcom(

42 ; serial(dadams)

3H ; refresh

15W ; retry

1W ; expiry

1D ) ; minimum

IN NS dnspcgjcom

dns IN A 192168132

:wq

6#service named restart

7#nslookup dnspcgjcom

Server: 192168132

Address: 192168132#53

Name: dnspcgjcom

Address: 192168132

8#nslookup dns1xapccom

Server: 192168132

Address: 192168132#53

Name: dns1xapccom

Address: 192168131

现在反向解析的问题。所以要会到主服务器上配置。

9#vi /xapccomrev

只增加一行配置。

2 IN PTR dnspcgjcom

注意: 132323232 ; Serial要改为 132323233 ; Serial 要在新的配置上加‘1’这样可以更新。

:wq

10#service named restart

11#nslookup 192168132

Server: 192168131

address: 192168131#53

213168192in-addrarpa name = ftpxapccom

213168192in-addrarpa name = dns2xapccom

213168192in-addrarpa name = dnspcgjcom

现在我们在回到客户端:

12#cat slaves/xapccomrev

可以看的配置文件

如:

2 PTR dnspcgjcom

PTR ftpxapccom

PTR dns2xapccom

13#nslookup 192168132 --反向解析

Server: 192168132

Address: 192168132#53

213168192in-addrearpa name = ftpxapccom

213168192in-addrearpa name =dns2xapccom

213168192in-addrearpa name = dnspcgjcom

14#nslookup dnspcgjcom

Server: 192168132

Address: 192168132#53

Name: dnspcgjcom

Address: 192168132

好了 !

现在我们要在做一个新的实验

DNS的转发

我们还是在辅助dns服务器上配置

1#service named stop

2#ll

3vi /etc/nameconf

我们要添加两个转发配置,我们还要把科研解析的配置删除掉。只保留“pcgjcom”因为他不能解析服务器。

statistics-file "/var/named/data/name_statstxt"

forward only;

forwarders {192168131;};

:wq

如果不放心的话,我们可以查看有没有错误。

4#named-checkconf

5#service named restart

这台计算机已经不是辅助的DNS服务器了

6# ll

7#ll slaves/

可以看到两个配置文件。

8#rm slaves/

9# nslookup wwwxapccom

Server: 192168132

Address: 192168132#53

nom-authoritative answer;---非权威

wwwxapccom camomical name = dns1xapccom

Name: dns1xapccom

Address: 192168131

10#nslookup dnspcgjcom

Server: 192168132

Address: 192168132#53

Name: dnspcgjcom

Address: 192168132

我们能不能让部分区域转发,两个域,我让这个区域转发给你,其他域,我可以找根。

我们还在辅助dns上修改配置文件。

1#vi /etc/namedconf

我们们要注释掉两个配置内容。在新建一个区域。

// forward only;

// forwarders {192168131; };

zone "xapccom" IN {

type forward;

forward only;

forwarder {192168131; };

};

:wq

2#service named restart

3#nslookup ftpxapccom

Server: 192168132

Address: 192168132#53

Nom-authoritative answer;

ftpxapccom camomical name = dns2xapccom

Name: dns2xapccom

Address: 192168132

4#nslookup 192168132

它解析不了,因为没有让这个区域转发,也找不到根。

所以我们可以让一个区域转发,其他区域找根。

DNS服务器的主要测试方法;

我们使用nslookup,dig和host等专用工具可以对DNS服务器进行较全面的测试。

使用nslookup测试DSN服务器1

(1)进入nslookup命令交换环境

# nslookup

(2)设置使用指定的DNS服务器

server 19216812

(3)测试localhost主机域名的正向解析

localhost

(4)测试localhost主机域名的反向解析

127001

在辅助dns上练习一下:

1#nslookup

server 192168131

Default server: 192168131

Address: 192168131#53

192168132

Server: 192168131

Address: 192168131#53

213168192in-addrarpa name=dnspcgjcom

213168192in-addrarpa name=ftpxapccom

213168192in-addrarpa name=dns2xapccom

exit

使用nslookup测试DSN服务器2

(1)测试互联网中的域名解析

wwwyahoocomcn

(2)测试testcom域中的A记录

host1testcom

(3)测试testcom域中的PTR记录

192168111

(4)测试testcom域中的CNAME记录

wwwtestcom

使用nslookup测试DSN服务器3

(1)测试testcom域中的NS记录

set type=ns

testcom

(2)测试testcom域中的MX记录

set type=mx

testcom

(3)设置进行A记录的测试

set type=a

使用dig命令测试DNS服务器1

dig @dns域名或ip 区域 记录类型

eg: dig @192168132 xapccom NS

意思是到192168132这个网段来挖掘xapccom这个区域中的NS记录,结果会显现NS所以得记录。

我们在辅助dns上演示一下

1#dig @192168132 xapccom NS

2ll /var/name/namedca

--保存了所有的根域服务器的域名解析,dns的清单这个文件是怎么是得到的那。它就是用dig命令得到的。

dig @aroot-serversnet NS/var/named/namedca

好了 下面我们在讲一个重要的内容。

DNS子域的委派。

这两台服务器是父子关系。但两个人各有各得dns服务器来解析。

好了,我们现在从辅助dns上开始吧。

1:#pwd

/var/named

2: #vi /etc/namedconf

zone "0in-addrarpa" IN {

type master;

file"namedzero";

allow-update{none; };

};

zone "pcgjcom" IN {

type master;

file "pcgjcomzone";

allow-update {none; };

};

zone "xapccom" IN {

type forward;

forward only;

forwarders {192168131; };

};

----上面是前面修改好的我们要删除一些配置,

下面在添加一些内容。

zone "caxapccom" IN {

type master;

file "caxapccomzone";

ailow-update {none; };

};

:ok

我们还要新建一个caxapccomzone文件

2#ll

3#cp pcgjcomzone caxapccomzone

4#vi caxapccomzone

@ IN SOA dnspcgjcom rootpcgjcom(

42 ; serial(dadams)

3H ; refresh

15W ; retry

1W ; expiry

1D ) ; minimum

IN NS dnspcgjcom

dns IN A 192168132

----这是前面我们修改好的文件,我们要修改它。

@ IN SOA dnscaxapccom rootcaxapccom(

42 ; serial(dadams)

3H ; refresh

15W ; retry

1W ; expiry

1D ) ; minimum

IN NS dnscaxapccom

dns IN A 192168132

www IN A 192168131

:wq

5:# service named restart

6:# nslookup wwwcaxapccom

Server: 192168132

Address: 192168132#53

Name: wwwcaxapccom

Address: 192168131

现在我们来的主服务器,看看主服务器能不能解析,它能解析它的孙子吗?

7:#nslookup wwwcaxapccom

---不能解析的,因为没有做委派,所以不能解析。

8:#vi /etc/namedconf

做委派是时候不需要修改主配置文件。

我们只需要修改xapccomzone这个住配置文件就好了

9:#vi xapccomzone

@ IN SOA dns1xapccom rootxapccom (

42 ; serial(dadams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS dns1xapccom

IN NS dns2xapccom

IN MX 5 mailxapccom

dns1 IN A 192168131

dns2 IN A 192168132

www IN CNAME dns1xapccom

ftp IN CNAME dns2xapccom

mail IN CNAME dns2xapccom

-------这是前面我们修改好的, 我们还要修改此文件。

@ IN SOA dns1xapccom rootxpaccom(

42 ; serial(dadams)

3H ; refresh

15M ; retry

1W ; expiry

1D ) ; minimum

IN NS dnscaxapccom

IN NS dns1xapccom

IN NS dns2xapccom

IN MX 5 mailxapccom

dns1 IN A 192168131

dns2 IN A 192168132

www IN CNAME dns1xapccom

ftp IN CNAME dns2xapccom

mail IN CNAME dns2xapccom

dnsca IN A 192168132

:wq

10:#services named restart

11:#nslookup wwwcaxapccom

Server: 192168131

Address: 192168131#53

Non-authoritative amswer:

Name: wwwcaxapccom

Address: 192168131

ok了, 所以的实验都完成了

我们可以的课后练习一下。

任务1:构建主域名服务器

任务2:构建辅助域名服务器

任务3:测试DNS服务

任务4:缓存DNS服务的配置与测试

任务5:DNS转发器的配置

任务6:新建子域及子域委派。

大家好,我叫 Pierre Ricca,是一名专注研究 Active Directory 和 PowerShell 脚本的高级现场工程师。自 2010 年 11 月开始在微软法国分部担任 PFE。我工作的一个重要部分是实施运行状况检查、风险评估并向我们在法国地区的主要客户传播相关技术知识。

简介

我们的客户曾在现场多次要求我提供有关优化 DNS 解析的建议和最佳实践。尽管每位客户的 DNS 拓扑结构各不相同,但还是可以提供一些通用建议。

您可能注意到,若在域控制器上安装 DNS 服务器,即可在 Active Directory 实例上托管 DNS 区域。在 Active Directory 中托管 DNS 区域具有若干优点:不仅可以充分利用 Active Directory 复制的优势,还能为同一 DNS 区域设置多个“主”DNS 服务器 (SOA)。

我发现在一些客户环境中,客户仅通过一个 DNS 区域托管整个林的所有 DNS 记录。客户环境由一个根域 (“contosocom”) 和几个子域(“child1contosocom”、“child2contosocom”、“child3contosocom” 和 “child4contosocom”)构成。

下方的屏幕截图显示其在 DNS 服务器管理控制台中的外观。

在本示例中,大家可以看出这里仅包含一个正向查找区域 (“contosocom”),其中每个子域都是该区域的子命名空间。如果在运行 DCPROMO 创建新子域之前未安装“DNS 服务器”角色,通常会显示这种配置。您会发现,父 DNS 区域中也托管该 “_MSDCS” 子命名空间。

此配置有一个主要弱点:如果您在子域中安装 DNS 服务器,将无法选择托管特定于该子域的 DNS 记录,只能托管整个 “contosocom” 区域,因而会影响 Active Directory 复制性能及 Active Directory 实例大小。

很多时候,在这种环境中,我们建议将各子域 DNS 记录拆分为单独的 DNS 域,并从根 DNS 域委派各子区域。下方的屏幕截图展示了一个“推荐”配置示例。

本文将展示一项拆分解决方案,说明如何将大 “contosocom” DNS 域拆分为各子域的特定 DNS 子域。

DNS 区域拆分技术发展史

自 Windows Server 2003 起,当您开始安装新的 Active Directory 林时,DCPROMO 将会创建两个独立的 DNS 区域,也就是 “_MSDCSyourDomaincom” 和 “yourDomaincom”。下面是一个 “dom2k3com” 域示例:

此行为允许这些不同的 DNS 区域具有不同的复制范围。默认情况下,将根域的 “_MSDCS” 区域复制到“All DNS servers in the Active Directory forest”,但仅将域 DNS 域复制到“All DNS servers in the Active Directory domain”。您可以在区域属性的“General”选项卡中查看并更改这些设置:

在通过 Windows 2000 Server 创建林的情况下,DCPROMO 无法区分 “_MSDCS” 区域与根域区域,此区域直接在根域区域托管。如果要拆分 “_MSDCS” 区域并使其符合 “Windows Server 2003” 的默认行为,则必须手动拆分这些区域。这篇技术文章详细介绍了该项流程:“当从Windows 2000 升级到 Windows Server 2003 后,如何为全林性 DNS 应用程序目录分区重新配置 _MSDCS 子域”http://supportmicrosoftcom/kb/817470/en-us。

子域 DNS 记录迁移

下面提到的技术文章 (KB 817470) 允许拆分 “_MSDCS”,方法是新建一个空的 “_MSDCS” DNS 区域,然后强制各域控制器将其 DNS 记录注册到新的 DNS 区域中。

遗憾的是,我们不能针对当前的客户场景使用相同的方法,因为我们需要将现有的全部子域记录(包括静态记录)迁移到新的专用子域区域。在我们的场景中,每个子域均已投入运行数年,并针对每个子域呈现了数千个 DNS 记录。手动重新创建这些 DNS 记录太过复杂耗时。我们的唯一解决方案是编写脚本!

下面是我们采用的方法。

请注意,本文展示的脚本均作为示例提供,微软不支持这些脚本。在应用本解决方案之前,请务必备份您的 DNS 区域,并保证能够在发生意外时进行恢复。根据我的经验,本解决方案从开始到完成可能需要几个小时的时间。强烈建议在下班时间应用此解决方案。迁移期间无法使用 DNS 动态注册。

步骤 1:导出 DNS 区域。

首先,我们需要将当前的 DNS 区域导出到文件中。幸运的是,“DNSCMD” 命令允许将 DNS 区域导出到文件中。下面是一个使用示例:

Dnscmd /zoneexport contosocom exportdns

此命令将在 “%SYSTEMROOT%\DNS\” 文件夹中创建一个名为 “exportdns” 的文件(例如:“C:\Windows\system32\dns\exportdns”)。

步骤 2:为每个子域创建一个特定的 DNS 文件。

现在,我们需要将平面 “exportdns” 文件拆分为特定于各子域的文件,然后需要将子域的 DNS 记录导出到对应的文件。

下面是一个 “exportdns” 内容示例:

MyComputer1234child1 [AGE:3606209] 1200 A 172234

MyComputer5678 [AGE:1782367] 1200 A 172567

MyComputer90ABchild2 [AGE:2457912] 1200 A 172901

MyComputerCDEFchild2 [AGE:1982627] 1200 A 172101112

我们应当分析 “exportdns” 根据子域筛选 DNS 记录,然后为每个子域创建一个特定的新 dns 文件。

从上面的示例中,我们应该提取 “child1dns” 的以下信息:

MyComputer1234 [AGE:3606209] 1200 A 172234

我们应该提取 “child2dns” 的以下信息:

MyComputer90AB [AGE:2457912] 1200 A 172901

MyComputerCDEF [AGE:1982627] 1200 A 172101112

注意,当提取到 “child1dns” 时,“exportdns” 中的 “MyComputer1234child1” 将被转换为 “MyComputer”(不含 “child1”,child2 的记录标志完全相同)。另外注意,“exportdns” 的 “MyComputer5678” 记录直接呈现到 “contosocom” 的根目录,不会被提取到任何子域 DNS 文件。

我已经创建了一个示例脚本,该脚本可以自动提取并转换这些 DNS 记录,然后将结果导出到 “childdns” 文件。请注意,此脚本作为示例提供,微软不支持该脚本。下面是使用方法示例:

\Extract-DNSZonePS1 -inputFile “C:\Scripts\exportdns” -outputFile “C:\Scripts\child1contosocomns” -extractZoneName "child1"

您可以针对每个子域重复此操作。

步骤 3:导入子 DNS 域

现在,我们将具有针对每个子区域的特定 DNS 文件(在上一步中生成)。

我们需要将这些“子”文件导入 DNS 服务器。首先将这些文件复制到 “%SYSTEMROOT%\DNS\” 文件夹(例如:“C:\Windows\system32\dns\”)。

接着,打开 DNS 服务器管理控制台。右键单击“Forward Lookup Zones”,然后选择“New Zone…”。

单击“Next”,选择“Primary zone”,确保取消选中“Store the zone in Active Directory”(因为我们希望从文件加载该区域),然后单击“Next”。

输入要导入的子区域名称(例如:child1contosocom),然后单击“Next”。

选择“Use this existing file”,验证该名称是否与要导入的子 DNS 文件的名称相符,然后单击“Next”。

选择“Do not allow dynamic updates”(我们不希望在未完成迁移流程时允许动态更新),然后单击“Next”和“Finish”。您可以在 DNS 迁移结束后重新启用动态更新。

针对每个子域重复此操作。现在,您将会在 DNS 服务器管理控制台中看到您的根域和子域具有单独的区域。

步骤 4:将子 DNS 区域复制到林中的所有 DNS 服务器

在此步骤中,我们将对林中的所有 DNS 服务器启用子区域复制。您可以在迁移结束后,将复制范围切换为“全域性”。

从 DNS 管理控制台中,右键单击子 DNS 区域,然后打开区域属性。

单击“Type: Primary”文本旁边的 Change。选中“Store the zone in Active Directory”框,然后单击“OK”。当显示提问时,单击“Yes”以确认 Active Directory 集成。

接着,单击“Replication: All DNS servers in this domain”文本旁边的“Change”。选中“To all DNS servers running on domain controllers in the forest”,然后单击“OK”。

最后的配置如下:

单击“OK”,针对每个子域重复此操作。

步骤 5:还原 DNS 记录 ACL

现在,我们需要还原 DNS 记录 ACL。如果要保护动态 DNS 更新的安全,那么这个步骤显得尤其重要。当将动态 DNS 更新设置为“Secure”时,DNS 服务器将检查 DNS 记录 ACL,以便验证成员服务器是否有权修改该 DNS 记录。

遗憾的是,“DNSCMD /zoneexport” 并未导出 ACL 信息。我们需要将各 DNS 记录 ACL 从“旧”父区域复制到新子区域中对应的 DNS 记录。同样,我也为它创建了一个示例脚本。此脚本需要“PowerShell Active Directory 模块”,我们可将其安装为 Windows Server 的一项可选功能,或者也可以作为“远程服务器管理工具”的一部分安装到 Windows 客户端。请注意,此脚本作为示例提供,Microsoft 不支持该脚本。下面是使用方法示例:

\Copy-DNSACLps1 -SourceZoneDN "DC=contosocom,CN=MicrosoftDNS,DC=ForestDnsZones,DC=contoso,DC=com" -TargetZoneDN "DC=child1contosocom,CN=MicrosoftDNS,DC=ForestDnsZones,DC=contoso,DC=com" -TargetDNSZoneShortName "child1"

下面是脚本结果示例:

您需要针对每个子域重复此步骤。现在,如果转到 DNS 记录的 Security 选项卡,会发现这些成员服务器对其记录具有完全访问权限。

步骤 6:重新启用动态更新

如果您的环境使用动态 DNS 更新,那么需要进行重新启用。转到子 DNS 区域属性,然后在“Dynamic updates:”字段中选择“Secure only”或“Nonsecure and secure”(如果不确定,请重新使用与根 DNS 区域相同的设置)。

步骤 7:清除旧 DNS 记录并委派子域区域。

在清除旧 DNS 记录前,请务必确保:

- 具有“旧”根 DNS 区域备份并能对其进行还原。

- DNS 解析可以妥善处理根 DNS 记录和子 DNS 记录。

- 动态更新运行正常。

- 目前未发现任何问题。

要清除旧 DNS 记录,请打开 DNS 服务器平台,浏览“旧”根 DNS 区域。务必确保不要委派新子区域!右键单击根 DNS 区域中的 “child1” 子区域,然后选择“Delete”。

现在,“Child1” 已经从 “contosocom” 的“子区域”中消失,但 “child1contosocom” 仍然显示为自治 DNS 区域。

为了能够在托管 “contosocom”(而非托管 “child1contosocom”)的 DNS 服务器上解析 “child1contosocom”,我们需要从 “contosocom” 区域为 “child1” 创建一个委派。右键单击 “contosocom” 区域,然后选择“New delegation…”。

单击“Next”,键入子域的名称(例如:child1),然后单击“Next”。

从此列表中,添加托管 “child1contosocom” 区域的所有服务器(该列表可能较长,具体取决于环境大小),然后依次单击“Next”和“Finish”。

现在,在 DNS 服务器控制台中,您将会发现 “child1” 成为 “contosocom” 的委派。

针对每个子域重复此操作。最终,您的 DNS 将如下所示:

现在迁移就完成了!如果愿意,您可以更改子 DNS 区域的复制范围。检查是否所有 DNS 区域的 DNS 记录均保持一致。另外,如果愿意,还可以考虑为您的新子区域重新启用帐龄和清理功能。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » DNS委派是什么?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情