在Azure虚拟networking中设置DNS

我有几个云服务,以及在Azure中运行Redis的虚拟机。 根据我的理解,我需要创build一个虚拟networking,以便云服务可以在虚拟机上与Redis进行通信。 那很简单。 现在我想要做的就是设置DNS,所以我不必在任何地方指定IP地址。

我find的文章都涉及集成一个现场DNS服务器,但我没有。 反正有使用godaddy,还是简单的呢? 那么在当前的虚拟机上安装一个简单的DNS服务呢?

我想我的问题可以概括为:我需要做些什么来使云服务可以通过DNS名称与我的VN进行通信?

VN在Azure中有一些“隐藏”function可以帮助您。 首先,是的,你是对的。 如果您创build虚拟networking,名称parsing将不起作用,除非您提供您自己的DNS服务器并将其设置为允许dynamic更新。 您不能使用公共DNS服务为Windows Azure虚拟networking提供DNS名称parsing。

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

  • 像往常一样创buildVNet(及其子网)
  • 提供DNS服务器地址。 将此地址设置为xxx.xxx.xxx.4(4将始终是给定SubNet中分配的第一个IP地址!)!
  • 在那个干净的VNet上,用Windows Server创build一个新的虚拟机。 该虚拟机将获得xxx.xxx.xxx.4 IP地址
  • 在这台机器上安装和configurationDNS服务器angular色
  • 请勿设置本机的静态IP地址!
  • 照常创build其他虚拟机

需要注意的事项:

  • 切勿将静态IP地址分配给Windows Azure中的任何虚拟机。 他们必须有DHCP分配的IP地址
  • 首先要小心创buildDNS机器,以便获得.4 IP地址
  • 只要您不删除它,您的DNS虚拟机将保留其IP地址(.4)。

这个架构已经被certificate是有效的,可以在Windows Azure IaaS(又名虚拟机)

我有同样的问题,我相信我已经想出了一个合理的解决scheme,不涉及任何额外的机器,是很less的工作。

简而言之,您将后端和前端放在同一个虚拟networking和子网中,以便为它们提供相同的DNS服务器。 然后,在前端服务上configurationDNS后缀search列表,以便在执行名称parsing时使用后端的DNS后缀。

脚步:

  1. login到您的后端虚拟机,并执行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. 创build一个名为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并在WebRole节点下添加以下XML,将启动任务添加到Azure云服务项目中:

     <Startup> <Task commandLine="startup.cmd" executionContext="elevated" taskType="background"> </Task> </Startup> 
  7. 假设你已经指定你的站点和后端应该在同一个子网中,你就完成了。 如果没有,请将此添加到ServiceConfiguration节点内的ServiceConfiguration文件中:

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

希望能帮助那些在同一个问题上磕磕绊绊的人!

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

(点击查看大图)
DNS procedure