带子网掩码的 IP 地址范围

IP Address range with subnetmask

我对子网掩码的计算方式还很陌生。

我们需要在我们的 asp.net 网站上将 IP 地址范围列入白名单。

199.83.128.1 - 199.83.135.254
198.143.32.1 - 198.143.63.254
149.126.72.1 - 149.126.79.254
103.28.248.1 - 103.28.251.254
185.11.124.1 - 185.11.127.254
45.64.64.0 - 45.64.67.255
192.230.64.1 - 192.230.127.254

ASP.NET IPSecurity 有一个选项可以阻止 IP 地址范围,但有子网掩码。 例如

    <add ipAddress="xx.xx.xx.xx" subnetmask="x.x.x.x" allowed="true"/>
  </ipSecurity>

有人可以帮助我如何使用子网掩码得出上面的地址范围列表吗?

忘掉 .1 和 .254,为简单起见,它们应该是 .0 和 .255。我不认为一个组织可以控制 1024 个 IP,除了第一个和最后一个。

标准答案是 https://serverfault.com/questions/49765/how-does-ipv4-subnetting-work/226445,但我想需要几个小时才能消化。这是 "no understanding beyond basic math" 版本。

如果您有 a.b.x.0 - a.b.y.255(x ≤ y),则

  • /24的个数为n = y+1-x
  • 如果 n 是 2 的幂(1、2、4、8、16、32、64、128、256),则这是一个子网并且 x 是倍数n 的(x = 0*n = 0 可以),否则你必须将它分开
  • 第三个八位字节掩码是 m = 256-n
  • 生成的网络掩码是 255.255.m.0

你的结果是(请随意检查我的数学,这是你的安全不是我的):

45.64.64.0   / 255.255.252.0
103.28.248.0 / 255.255.252.0
149.126.72.0 / 255.255.248.0
185.11.124.0 / 255.255.252.0
192.230.64.0 / 255.255.192.0
198.143.32.0 / 255.255.224.0
199.83.128.0 / 255.255.248.0

a.b.c.x - a.b.c.y、a.x.0.0 - a.y.255.255 和 x.0.0.0 - y.0.0 的数学运算相同。 0,除了我们谈论的不是 /24s,而是 IP、/16s 和 /8s,并且网络掩码分别变为 255.255.255.m、255.m.0.0 和 m.0.0.0 .

希望对您有所帮助。