使用 Windows 防火墙拒绝访问 50,000 个特定 IP 地址

Але*_*цев 5 windows firewall

我需要在 Windows 防火墙中拒绝访问大约 50,000 个 IP 地址;netsh advfirewall只允许我添加大约700。这如何实现?

Aar*_*ron 0

看起来您可以使用 ac# app 以编程方式将规则添加到 Windows 防火墙。您需要添加对 的引用FirewallAPI.dll,该引用位于c:\windows\system32

做这样的事情:

using NetFwTypeLib; // Located in FirewallAPI.dll
...
INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(
Type.GetTypeFromProgID("HNetCfg.FWRule"));
firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK;
firewallRule.Description = "Block this!";
firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
firewallRule.Enabled = true;
firewallRule.InterfaceTypes = "All";
firewallRule.RemoteAddresses = "x.x.x.x" //or x.x.x.x,x.x.x.x,... See Note 1
firewallRule.Name = "Block IP x.x.x.x";

INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(
    Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
firewallPolicy.Rules.Add(firewallRule);
Run Code Online (Sandbox Code Playgroud)

注意 1:您可以尝试创建 50,000 个单独的规则(此代码添加 1 条规则)或将 50,000 个远程 IP 添加到 1 条规则。

这是用于入站阻止,如果您想要出站阻止也请更改方向。

参考文献:改编自有什么方法可以使用 C# 在 Windows 中关闭“互联网”?https://msdn.microsoft.com/en-us/library/aa366458(VS.85).aspx