你目前正处于脱机状态,正在等待 Internet 重新连接

如何在 Windows Server 2003 和 Windows 2000 Server 中禁用 DNS 服务器服务的远程管理

Support for Windows Server 2003 ended on July 14, 2015

Microsoft ended support for Windows Server 2003 on July 14, 2015. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

重要说明:本文包含有关如何修改注册表的信息。修改注册表之前,一定要先对其进行备份,并且一定要知道在出现问题时如何还原注册表。有关如何备份、还原和修改注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 Microsoft Windows 注册表说明
简介
本文描述如何禁用运行以下操作系统之一的 DNS 服务器的 DNS 远程管理:
  • Microsoft Windows Server 2003
  • Microsoft Windows 2000 Server
您可以使用本文提及的方法增强组织中运行 DNS 服务器服务的计算机的安全。

有关影响 Windows Server 2003 和 Windows 2000 Server 中 DNS 服务器服务的问题的更多信息,请访问下面的 Microsoft 网站:
更多信息

概述

默认情况下,DNS 服务器服务允许通过使用许多接口进行远程管理。DNS 服务器服务启动时,会绑定到临时范围中的动态端口。此端口由 DNS Microsoft 管理控制台 (MMC) 管理单元和 DNS Windows Management Instrumentation (WMI) 提供程序使用。您可以使用下面的注册表项来控制 DNS 服务器服务是否允许远程管理:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters


数值名称:RpcProtocol
数值类型:REG_DWORD
数值数据:0x4
下列数值可用于 RpcProtocol 注册表项:
  • 0x1
    该值对应于 DNS_RPC_USE_TCPIP 设置
  • 0x2
    该值对应于 DNS_RPC_USE_NAMED_PIPE 设置
  • 0x4
    该值对应于 DNS_RPC_USE_LPC 设置
注意:值 0x4 会将 DNS RPC 接口限制为仅供本地过程调用。这样将仅允许本地管理。

禁用远程管理的影响

将 RpcProtocol 注册表项设置为 0x4 时,会禁用 DNS 服务器服务的远程管理。因此无法使用 RPC 或 Windows Management Instrumentation (WMI) 来管理 DNS 服务器。这种情况下,远程位置的 DNS 服务器管理工具将不再运行。但是,您仍然可以使用本地管理工具管理 DNS 服务器,而且仍然可以通过使用终端服务连接来执行 DNS 服务器的远程管理。

将 RpcProtocol 设置为 0x4 不会影响 DNS 查询、DNS 动态更新、DNS 区域复制等功能。

注意:如果满足以下条件,则 DNS 服务器服务的本地管理和配置可能不起作用:
  • 要管理的服务器的主机名包含 15 个字符。
  • 您使用主机名来选择服务器。
要解决此问题,请在使用 DNS 服务器管理工具管理计算机时,指定该计算机的完全限定域名 (FQDN)。

禁用 DNS 服务器服务的远程管理

警告:如果使用注册表编辑器或其他方法错误地修改了注册表,则可能会出现严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证可以解决这些问题。修改注册表需要您自担风险。

要通过运行 DNS 服务器服务的计算机的 RPC 功能禁用远程管理,请按照下列步骤操作:
  1. 依次单击“开始”和“运行”,键入 Regedit,然后单击“确定”。
  2. 找到并单击下面的注册表子项:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters
  3. 在“编辑”菜单上,指向“新建”,然后单击“DWORD 值”。
  4. 在“新值 #1”框中,键入 RpcProtocol,然后按 Enter。
  5. 右键单击“RpcProtocol”,然后单击“修改”。
  6. 在“数值数据”框中,键入 4,然后单击“确定”。
  7. 退出注册表编辑器,然后重新启动 DNS 服务器服务。要重新启动 DNS 服务器服务,请按照以下步骤操作:
    1. 依次单击“开始”和“运行”,键入 cmd,然后单击“确定”。
    2. 在命令提示符下,键入以下命令并按 Enter:
      net stop dns && net start dns

将 RpcProtocol 注册表值部署到多台计算机

您可以使用脚本来部署 RpcProtocol 注册表值。这样您就可以更轻松地在多台计算机上禁用 DNS 服务器服务的远程管理。为此,请按照下列步骤操作:
  1. 使用具有修改 DNS 服务器权限的帐户登录到域。例如,以域管理员身份登录。
  2. 创建所有 DNS 服务器的列表。为此,请在命令提示符处运行以下命令:
    dsquery * -filter "(servicePrincipalName=DNS*)" -attr dNSHostName -l > dns_servers.txt
    如果需要,手动编辑创建的 dns_servers.txt 文件以指定所有 DNS 服务器。例如,此命令仅捕获配置为 DNS 服务器的域控制器。因此,必须手动添加配置为成员服务器的 DNS 服务器。

    注意:可以使用 DNS 管理单元中每个区域的“DNS zone 属性”对话框的“名称服务器”选项卡,来确定要添加到此列表中的 DNS 服务器的名称。
  3. 如果需要,在命令提示符处使用 cd 命令转到保存 dns_servers.txt 文件的目录。
  4. 键入下面的命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do reg add \\%i\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters /v RpcProtocol /t REG_DWORD /d 4 /f
    此命令会同时添加 RpcProtocol 注册表项和值 0x4。
  5. 停止所有计算机上的 DNS 服务器服务。为此,请键入以下命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do sc \\%i stop DNS
  6. 启动所有计算机上的 DNS 服务器服务。为此,请键入以下命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do sc \\%i start DNS

验证多台计算机上是否设置了 RpcProtocol 注册表项

要查询服务器和验证是否设置了 RpcProtocol 注册表项,请按照下列步骤操作:
  1. 登录到已设置 RpcProtocol 注册表项的 DNS 服务器。
  2. 将以下脚本复制到一个文本文件,然后将该文件命名为 Dnsquery.cmd:
    Echo Comparing registry value for: > dns_errors.txt echo HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters >> dns_errors.txt echo Data Value for "RpcProtocol" >> dns_errors.txt echo. >> dns_errors.txt echo. >> dns_errors.txt Echo Errorlevel 1 - Failed to compare registry values >> dns_errors.txt Echo Errorlevel 2 - Reg values compared are different >> dns_errors.txt echo. >> dns_errors.txt echo. >> dns_errors.txt echo ===================================================== >> dns_errors.txt set _MachineName= for /f %%i in (dns_servers.txt) do ( call :TEST %%i ):TESTSet _MachineName=%1echo %_MachineName%reg.exe compare "HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters" "\\%_MachineName%\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters" /v RpcProtocolif %_MachineName% == "" echo 0 > nulif %errorlevel% == 0 echo 0 > nulif %errorlevel% == 1 Echo Computername: %_MachineName% Errorlevel returned: 1 - Failed >> dns_errors.txtif %errorlevel% == 2 Echo Computername: %_MachineName% Errorlevel returned: 2 - Different >> dns_errors.txt:Endrem exit
    注意:此脚本用于比较远程计算机上的 Parameters 注册表子项和运行该脚本的计算机上的 Parameters 注册表子项。

    重要说明:此脚本中不能存在尾随空格字符。
  3. 双击 Dnsquery.cmd 以运行它。

从多台计算机中删除 RpcProtocol 注册表值

要撤消设置 RpcProtocol 注册表值的操作,请按照下列步骤操作:
  1. 使用具有修改 DNS 服务器权限的帐户登录到域。例如,以域管理员身份登录。
  2. 启动命令提示符,然后使用 cd 命令转到保存 Dns_servers.txt 文件的目录。
  3. 键入下面的命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do reg delete \\%i\HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters /v RpcProtocol /f
  4. 停止所有计算机上的 DNS 服务器服务。为此,请键入以下命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do sc \\%i stop DNS
  5. 启动所有计算机上的 DNS 服务器服务。为此,请键入以下命令,然后按 Enter:
    for /f %i in (dns_servers.txt) do sc \\%i start DNS
属性

文章 ID:936263 - 上次审阅时间:05/11/2007 13:26:00 - 修订版本: 2.1

Microsoft Windows Server 2003 Standard Edition, Microsoft Windows Server 2003 Enterprise Edition, Microsoft Windows Server 2003 Datacenter Edition, Microsoft Windows Server 2003, Standard x64 Edition, Microsoft Windows Server 2003, Enterprise x64 Edition, Microsoft Windows Server 2003, Datacenter x64 Edition, Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems, Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems, Microsoft Windows 2000 Server, Microsoft Windows 2000 Advanced Server, Microsoft Windows 2000 Datacenter Server

  • kberrmsg kbhowto kbinfo kbtshoot kbregistry KB936263
反馈