如何确定Azure网站的出站IP地址?

22

有没有一种方法可以确定网站(而不是Web角色)的出站IP地址?

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

如何正确做到这一点?


1
你想要实现什么目标?由于 Azure 网站的轻量级特性,最好不要依赖可能会改变的信息,比如当前 IP。 - Simon Opelt
1
我有一个网站调用外部REST接口,我想通过IP锁定它。虽然我们已经对其进行了身份验证和SSL加密,但由于涉及高度敏感的数据,我希望增加这一层保护。 - Richie Lai
4个回答

30

Azure网站可以使用每个规模单元中的4个IP地址之一来随机分配IP地址。

有关每个规模单元的IP地址列表以及确定您的站点规模单元的说明,请参阅此处

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

从2015年7月20日起,此帖子将不再更新IP地址。 相反,您现在可以在使用新门户(portal.azure.com)的Web应用程序属性中找到此信息。
要查找出站IP地址: 1.使用新门户(portal.azure.com)浏览到特定Web应用程序的详细信息。 2.在Web应用程序的详细信息顶部,有一个名为“所有设置”的链接。 点击该链接。 3.点击“所有设置”将打开一个Web应用程序信息列表,您可以进一步深入了解。 要深入了解的特定信息是“属性”。 单击“属性”选项。 4.在“属性”UX中,有一个文本框显示一组出站IP地址。 使用“出站IP地址”文本框旁边的图标,您可以选择所有地址。 然后按Ctrl + C将地址复制到剪贴板中。

7
这些“出站IP地址”是静态的吗? - Jorik
有什么脚本或API调用可以获取它,而不需要通过GUI菜单点击呢? - Snowy
1
您还可以从 https://resources.azure.com (https://resources.azure.com/subscriptions/YOUR-SUBSCRIPTION-GUID/providers/Microsoft.Web/sites) 找到 IP 地址。 - jtmnt

6
您可以通过PowerShell获取“OUTBOUND IP ADDRESSES”属性。以下是命令:
(Get-AzureRmResource -ResourceGroupName inhabit-adminservices -ResourceType Microsoft.Web/sites -ResourceName YOUR_RESOURCE_NAME).Properties.OutboundIpAddresses -Split ","

其中 YOUR_RESOURCE_NAME 是资源组的名称。


1
似乎Azure网站会随机使用任何数据中心的IP地址进行出站流量。您可以在此处下载IP地址列表:http://msdn.microsoft.com/en-us/library/dn175718.aspx 或者,使用Azure云服务和Azure VPN的组合。VPN将确保您获得所有出站流量的静态IP地址。遗憾的是,他们没有为其网站服务预见到这一点。

1
只要不删除云服务的部署,它的IP地址就不会改变。在我看来,不需要VPN。 - ckonig

-1
<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";
    }
}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接