我们有一个Azure云服务(经典),这是我们的网络应用程序。我们如何告诉服务阻止所有实例上的特定IP?
我知道,当通过IIS 8+文件设置时,我们可以使用IIS web.config动态IP限制(DIPR)阻止。配置动态IP限制
这有两个问题: 1)我们不能从应用程序中添加到始终块列表;2)即使我能做到这一点,它也只能在那个实例上使用。
是否没有办法阻止/IP过滤来自门户的通信量?它能在我们的云服务中设置吗?
发布于 2018-10-10 05:23:31
是否没有办法阻止/IP过滤来自门户的通信量?它能在我们的云服务中设置吗?
每次实例启动时,它都会查看为角色配置的端点,并打开防火墙中所需的端口。我们在代码中要做的只是简单地,禁用这些规则,并创建新的规则,这些规则仅限于几个IP地址/ IP地址范围。
该解决方案的核心是IPAddressRestrictionManager.cs类,它解析来自ServiceConfiguration.cscfg的设置(在部署应用程序时可以修改该设置),并在每个实例上修改防火墙。
首先,您需要安装NuGet包:
PM> Install-Package WindowsAzure.IPAddressRestriction如果要将IPAddressRestrictionManager链接到ServiceConfiguration,则需要向角色添加以下设置:

设置的语法不难理解:
IPAddressRestriction.Enabled = true或false
IPAddressRestriction.Settings ==或=- (端口之间的分隔符为";")
最后,您需要将所有内容都连接到WebRole/WorkerRoler.cs中。
public class WebRole : RoleEntryPoint
{
private IPAddressRestrictionManager restrictionManager;
public override bool OnStart()
{
RoleEnvironment.Changing += OnRoleEnvironmentChanging;
ConfigureIPAddressRestrictions();
return base.OnStart();
}
private void ConfigureIPAddressRestrictions()
{
if (restrictionManager == null)
restrictionManager = new IPAddressRestrictionManager();
restrictionManager.RemoveRestrictions();
if (restrictionManager.IsEnabledInConfiguration())
restrictionManager.ApplyFromConfiguration();
}
/// <summary>
/// Force restart of the instance.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void OnRoleEnvironmentChanging(object sender, RoleEnvironmentChangingEventArgs e)
{
if (e.Changes.Any(o => o is RoleEnvironmentChange))
e.Cancel = true;
}
}有关更多细节,您可以参考此文章。
https://stackoverflow.com/questions/52726839
复制相似问题