如何在.net standard 2.0中创建Linux支持的防火墙规则?

问题描述 投票:0回答:1

目前我们正在使用

NetFwTypeLib
COMReference 为应用程序添加防火墙规则,但它仅适用于 Windows

public static bool AddRule(Firewall Rule){
            INetFwRule firewallRule = (INetFwRule)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FWRule"));
            firewallRule.Action = NET_FW_ACTION_.NET_FW_ACTION_ALLOW;
            firewallRule.Description = rule.RuleDescription;
            firewallRule.Direction = NET_FW_RULE_DIRECTION_.NET_FW_RULE_DIR_IN;
            firewallRule.Enabled = true;
            firewallRule.ApplicationName = rule.ApplicationPath;
            firewallRule.RemoteAddresses = "LocalSubnet";
            firewallRule.InterfaceTypes = "All";
            firewallRule.Name = rule.RuleName;

            switch (rule.Protocol)
            {
                case FirewallRule.ProtocolType.TCP:
                    firewallRule.Protocol = (int)NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP; break;
                case FirewallRule.ProtocolType.UDP:
                    firewallRule.Protocol = (int)NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP; break;
                default:
                    throw new ArgumentOutOfRangeException("rule", "The Protocol property of the firewall rule contains an invalid value!");
            }

            INetFwPolicy2 firewallPolicy = (INetFwPolicy2)Activator.CreateInstance(Type.GetTypeFromProgID("HNetCfg.FwPolicy2"));
            firewallPolicy.Rules.Add(firewallRule);
            return true;

} 这种和平的代码仅在 Windows 中受支持,所以我如何将这种和平的代码替换到其他库中,以便我们的代码也可以在 Linux 上运行。

c# linux asp.net-core-6.0 .net-standard-2.0 windows-firewall
1个回答
0
投票

没有一个库可以涵盖所有防火墙产品。正如评论中提到的,大多数 Windows 用户都使用内置的 Windows 防火墙。有些使用其他产品,例如 ZoneAlarm。 Linux 也是如此:Ubuntu 有

ufw
,其他发行版使用
iptables
。即便如此,没有人强迫你在 Ubuntu 上使用
ufw
,如果你愿意的话,你可以使用完全不同的防火墙。每个防火墙产品都有不同的 API,您需要单独处理它们。

另请注意,在 StackOverflow 上询问书籍或图书馆推荐通常不是主题,这就是为什么我会投票结束这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.