Azure App Service内部DNS解析

时间:2017-07-21 17:28:08

标签: azure dns azure-web-sites

我有一个Azure Web App,它通过VPN / VNET集成与第三方系统进行通信。部分通信依赖于能够解析DNS名称。

当应用程序部署到虚拟机时,我们只需使用

这样的条目更新hosts文件

123.45.67.89 RPGMDR500-0R

通讯工作正常。由于通信的设置方式,我不能只在代码中使用IP地址。在通信中,DNS名称被发送回给我们,我们必须将其解析为该IP地址。

有没有办法只使用App服务?实际上,我们希望应用程序将此自定义DNS名称解析为IP地址。

更新 我更新了我们的VNET DNS服务器以使用DNS的虚拟机设置。

VNET using DNS

使用nameresolver,我可以看到DNS正在到达应用服务,但前提是我指定了DNS IP地址。默认情况下,它仍然使用默认服务器(不确定如何)。 (抱歉停电,不确定这些数据有多敏感。)

nameresolver

5 个答案:

答案 0 :(得分:1)

在Azure Web App中,您无法在 hosts 文件中添加条目,因为不允许这样做。

在继续之前,您可能想要检查网络应用是否可以首先执行名称解析。 Azure Web App内置了 nameresolver.exe 。您可以运行以下命令:

System.Net

Kudu Nameresolver.exe Demo

您可以在代码中进行名称解析。这是stackoverflow上的讨论主题:How to get the IP address of the server on which my C# application is running on?

使用string url = "www.facebook.com"; IPAddress[] addressList = Dns.GetHostAddresses(url);

{{1}}

答案 1 :(得分:0)

据我所知,我们无权访问azure web app中的磁盘C.所以我们无法在azure web app中更改hosts文件。

图片如下:

enter image description here

以下是一种解决方法,如果使用http访问vnet,则可以使用HttpRequestHeaders类更改请求主机头以更改代码中的dns名称。

更多细节,您可以参考下面的代码示例。

HttpClient client = new HttpClient();
client.BaseAddress = new Uri(@"http://111.111.111.70");
client.DefaultRequestHeaders
      .Accept
      .Add(new MediaTypeWithQualityHeaderValue("application/json"));//ACCEPT header

HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, @"http://111.111.111.70");
request.Headers.Host = "DNS name";

var re=  client.SendAsync(request).Result;

答案 2 :(得分:0)

设置它需要很多开销,但您可以在Azure虚拟网络中设置DNS服务器,然后在应用程序中使用VNet集成功能。然后,您的应用将使用您可以根据需要配置的VNet的DNS。

答案 3 :(得分:0)

Here is documentation for the Azure app service正在访问网络中的VM。 据说,如果应用程序服务和虚拟机位于不同的网络中,则需要设置专用的DNS服务器。

但是我没有尝试过,听说我抱怨我们没有使用VNET集成来同步网络的选项

答案 4 :(得分:-1)

您可以将角色DNS服务器添加到该Webapp可以访问的同一vnet中的一个Vm中。 将该DNS服务器设置为仅将所有请求转发到另一个vnet中的AAD DNS服务器。