不明白 IPNetwork.Contains 结果

Don't understand IPNetwork.Contains result

我正在使用 Microsoft.AspNetCore.HttpOverrides.IPNetwork class 检查 IP 地址是否在子网中,但结果不是我所期望的

void Main()
{
    var ipnw = new Microsoft.AspNetCore.HttpOverrides.IPNetwork(
                                  IPAddress.Parse("10.10.10.1"), 30);

    // expect these to be true 
    Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.0")));
    Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.1")));
    Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.2")));
    Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.3")));

    // expect these to be false 
    Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.4")));
    Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.5")));
    Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.6")));
    Console.WriteLine(ipnw.Contains(IPAddress.Parse("10.10.10.7")));

}

我都弄错了,我不明白为什么。我在 https://tehnoblog.org/ip-tools/ip-address-in-cidr-range/ 找到了一个免费的在线网站来检查(糟糕的界面),它显示了我的期望...

我做错了什么?

根据 https://github.com/dotnet/aspnetcore/issues/6674,MS 的 IPNetwork class 包含实现中存在错误。该错误已修复,但尚未发布。在我阅读它时,它希望 CIDR 前缀的地址是来自 CIDR prefix/length.

的第一个地址

这意味着它不喜欢“10.10.10.1/30”,而是想要“10.10.10.0/30”,这确实给出了预期的结果。