我们有很多机器,当其中一台机器上的客户要求我们屏蔽一些 IP 时,这可能是一件非常痛苦的事情。我们运行游戏服务器,所以一般需要屏蔽的IP可以是任意IP、任意端口等。
我想编写一个小应用程序来简化在 Server 2008 中添加 IP 禁令。有没有什么好的方法可以做到这一点,无论是通过 IPSec 还是 Windows 防火墙?有些机器关闭了防火墙,因此首选 IPSec,但两者都可以。
我们有很多机器,当其中一台机器上的客户要求我们屏蔽一些 IP 时,这可能是一件非常痛苦的事情。我们运行游戏服务器,所以一般需要屏蔽的IP可以是任意IP、任意端口等。
我想编写一个小应用程序来简化在 Server 2008 中添加 IP 禁令。有没有什么好的方法可以做到这一点,无论是通过 IPSec 还是 Windows 防火墙?有些机器关闭了防火墙,因此首选 IPSec,但两者都可以。
非常感谢您提供的链接。我能够使用以下代码来实现这一点。您仍然需要获取 FWManager 对象才能使用。
private void btnBlock_Click(object sender, EventArgs e)
{
String IP = txtAddress.Text;
txtAddress.Clear();
if (IsAddressValid(IP))
{
INetFwRule2 firewallRule = (INetFwRule2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
firewallRule.Name = "BrutalNT: IP Access Block " + txtAddress.Text;
firewallRule.Description = "Block Incoming Connections from IP Address.";
firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_BLOCK;
firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
firewallRule.Enabled = true;
firewallRule.InterfaceTypes = "All";
firewallRule.RemoteAddresses = txtAddress.Text;
INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
firewallPolicy.Rules.Add(firewallRule);
String msg = "IP Address \"" + IP + "\" Blocked Successfully!";
MessageBox.Show(msg, "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
String msg = "IP Address \"" + IP + "\" was Invalid!";
MessageBox.Show(msg, "Failed", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
前段时间我也在寻找类似的解决方案。最后我们选择了一些不同的方法来解决我们的问题,但我仍然记得有一个用于 Windows 防火墙的 API。不幸的是,我没有保存 URL,但你可以用谷歌搜索“C# windows firewall API”。这里有几个链接:
编辑 类似的问题:使用 C# 在 Windows Server 上添加和删除 IPSec 策略的选项是什么?
祝你好运!