【问题标题】:How to determine Azure website outgoing IP Address?如何确定 Azure 网站的传出 IP 地址?
【发布时间】:2014-02-22 09:49:25
【问题描述】:

有没有办法确定网站(不是 webrole)的传出 IP 地址?

我已经进行了反向查找 *.azurewebsites.net,它返回一个地址,但是当我手动检查它(通过让 web 应用程序访问我控制的 web 服务器)时,它显示了一个完全不同的 IP。

这样做的正确方法是什么?

【问题讨论】:

  • 你想要达到什么目的?由于 azure 网站的轻量级特性,最好不要依赖像当前 IP 那样会发生变化的信息。
  • 我有一个调用外部 REST 接口的网站,我想通过 IP 锁定该接口。我已经有了 auth 和 ssl,但我想要这层保护,因为我们正在处理高度敏感的数据。

标签: azure ip-address


【解决方案1】:

Azure 网站可以使用每个缩放单元 4 个 IP 地址中的一个随机 IP。

有关每个缩放单位的 IP 地址列表以及有关如何确定站点的缩放单位的说明,请查看here

更新:似乎现在可以在新的 Azure 门户中找到所有缩放单元的 4 个 IP 地址,并且论坛帖子将不再更新。

从 2015 年 7 月 20 日起,此帖将不再更新 IP 地址。取而代之的是,现在可以在网络中找到此信息 使用新门户 (portal.azure.com) 的应用程序属性。

要查找出站 IP 地址:

  1. 使用 portal.azure.com 上的新门户浏览特定 Web 应用的详细信息。

  2. 在您的网络应用详细信息的顶部,有一个“所有设置”链接。点击链接。

  3. 单击“所有设置”将打开一个 Web 应用程序信息列表,您可以进一步深入了解这些信息。要深入研究的具体信息是“属性”。点击“属性”选项。

  4. 在“属性”用户体验中,有一个显示出站 IP 地址集的文本框。使用 “出站 IP 地址” 文本框旁边的图标,您可以选择所有地址。然后按 Ctrl+C 将地址复制到剪贴板。

【讨论】:

【解决方案2】:

您可以通过 PowerShell 获取“出站 IP 地址”属性。这是命令:

(Get-AzureRmResource -ResourceGroupName inhabit-adminservices -ResourceType Microsoft.Web/sites -ResourceName YOUR_RESOURCE_NAME).Properties.OutboundIpAddresses -Split ","

其中 YOUR_RESOURCE_NAME 是资源组的名称。

【讨论】:

    【解决方案3】:

    Azure 网站似乎会随机使用数据中心的任何 IP 地址进行出站流量。您可以在此处下载 IP 地址列表:http://msdn.microsoft.com/en-us/library/dn175718.aspx

    或者结合使用 Azure 云服务和 Azure VPN。 VPN 将确保您获得所有出站流量的静态 IP 地址。很遗憾他们没有为他们的网站服务预见到这一点。

    【讨论】:

    • 只要不删除云服务的部署,它的IP就不会改变。无需 VPN 恕我直言。
    【解决方案4】:
    <script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request["check"] == "1")
        {
            Response.Clear();
            Response.Write(HttpContext.Current.Request.UserHostAddress);
        }
        else { 
            Response.Write("Your IP: " + HttpContext.Current.Request.UserHostAddress + "<br />") ;
            Response.Write("Server Outbound IP: " + GetOutBoundAddress()) ;
        }
    }
    
    public string GetOutBoundAddress()
    {
        System.Net.WebClient wc = new System.Net.WebClient();
    
        try
        {
            return wc.DownloadString(Request.Url + "?check=1");
        }
        catch (Exception)
        {
            return "not found";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2011-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 2021-11-26
      • 1970-01-01
      相关资源
      最近更新 更多