在 Azure 虚拟网络中设置 DNS

在 Azure 虚拟网络中设置 DNS

我有几个云服务,以及一个在 Azure 中运行 Redis 的虚拟机。据我所知,我需要创建一个虚拟网络,以便云服务可以与虚拟机上的 Redis 通信。这很容易。现在我想要做的是设置 DNS,这样我就不必到处指定 IP 地址了。

我找到的文章都涉及集成现场 DNS 服务器,但我没有。有没有办法使用 godaddy 或 dnsimple 来实现这一点?在当前 VM 上安装一个简单的 DNS 服务怎么样?

我想我的问题可以总结为我需要做什么才能使我的云服务能够通过 DNS 名称与我的 VN 通信?

答案1

Azure 中的 VN 有一些“隐藏”功能可以帮助您。首先,是的,您说得对。如果您创建虚拟网络,则名称解析将不起作用,除非您提供自己的 DNS 服务器并将其设置为允许动态更新。您不能使用公共 DNS 服务为 Windows Azure 虚拟网络提供 DNS 名称解析。

所以这是您的解决方案。您必须启动“清理”,因为一旦 VNet 中有正在运行的虚拟机,您就无法更改 DNS 服务器 IP 地址。

  • 照常创建 VNet(及其子网)
  • 提供 DNS 服务器地址。将此地址设置为 xxx.xxx.xxx.4(4 始终是给定子网中分配的第一个 IP 地址!)!
  • 在该干净的 VNet 上,使用 Windows Server 创建新的 VM。该 VM 将获得 xxx.xxx.xxx.4 IP 地址
  • 在此计算机上安装并配置 DNS 服务器角色
  • 请勿设置此机器的静态 IP 地址!
  • 照常创建其余虚拟机

需要注意的事项:

  • 切勿为 Windows Azure 中的任何 VM 分配静态 IP 地址。它们必须具有 DHCP 分配的 IP 地址
  • 注意首先创建 DNS 机器,以便它获得 .4 IP 地址
  • 只要您不删除它,您的 DNS VM 将保留其 IP 地址 (.4)。

该架构已被证明是有效的,并且可以在 Windows Azure IaaS(又称虚拟机)中运行

答案2

我遇到了同样的问题,我相信我已经找到了一个合理的解决方案,它不需要任何额外的机器,而且工作量很少。

简而言之,您将后端和前端放在同一个虚拟网络和子网中,以便它们被赋予相同的 DNS 服务器。然后在前端服务上配置 DNS 后缀搜索列表,以便它们在执行名称解析时使用后端的 DNS 后缀。

脚步:

  1. 登录到您的一台后端虚拟机并执行ipconfig
  2. 从输出中获取Connection-specific DNS Suffix

    ipconfig 的输出

  3. 将的值设置$dnsSuffix为以下脚本中步骤 2 的值。

    $dnsSuffix = 'xxxxxx.yyyyy.uswest.internal.cloudapp.net';
    
    $nics = Get-WmiObject `
      -Class win32_networkadapterconfiguration `
      -Filter 'IPEnabled = true';
    $nics | % {
      $nicSuffixes = $_.DNSDomainSuffixSearchOrder;
      if ($nicSuffixes -notcontains $dnsSuffix) {
        $_.DNSDomainSuffixSearchOrder = $dnsSuffix + $_.DNSDomainSuffixSearchOrder;
      }
    };
    
    Invoke-WmiMethod `
        -Class win32_networkadapterconfiguration `
        -Name setDNSSuffixSearchOrder `
        -ArgumentList @(@($dnsSuffix)),$null;
    
  4. 将该脚本命名为 Set-DnsSuffixSearchList.ps1 并将其包含在您的项目中,将文件的属性设置为“始终复制”,如下所示:

    Set-DnsSuffixSearchList.ps1 属性

  5. 创建一个名为的文件startup.cmd,其中包含以下内容,并设置“始终复制”属性:

    powershell -Command "Set-ExecutionPolicy Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1
    
    # Set the DNS SearchList so that backend hosts are resolvable using their shortened names.
    powershell .\Set-DnsSuffixSearchList.ps1 >> "%TEMP%\StartupLog.txt" 2>&1
    
  6. ServiceDefinition.csdef通过在节点下编辑并添加以下 XML,将启动任务添加到 Azure 云服务项目WebRole

    <Startup>
      <Task
        commandLine="startup.cmd"
        executionContext="elevated"
        taskType="background">
      </Task>
    </Startup>
    
  7. 假设您已经指定站点和后端应位于同一子网中,则您已完成此操作。如果没有,请将其添加到节点ServiceConfiguration.Cloud.cscfg内的文件中ServiceConfiguration

      <NetworkConfiguration>
        <VirtualNetworkSite name="yourVirtualNetwork" />
        <AddressAssignments>
          <InstanceAddress roleName="yourCloudServiceName">
            <Subnets>
              <Subnet name="yourSubnetName" />
            </Subnets>
          </InstanceAddress>
        </AddressAssignments>
      </NetworkConfiguration>
    

希望这能帮助遇到同样问题的人!

答案3

在新门户中,您可以在公共 IP 地址资源中设置您的 DNS 名称。以下是一张描述如何配置它的图片:

(点击可放大)
DNS 程序

相关内容