IP地址范围与子网掩码

时间:2015-11-28 04:57:24

标签: asp.net-mvc ip-address subnet whitelist

我对如何计算子网掩码很新。

我们要求将我们的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地址范围,但具有子网掩码。 e.g。

                 

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

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

1 个答案:

答案 0 :(得分:1)

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

规范的答案是https://serverfault.com/questions/49765/how-does-ipv4-subnetting-work/226445,但我想消化需要几个小时。这是“基本数学以外的理解”版本。

如果你有a.b.x.0 - a.b.y.255(x≤y),那么

  • / 24s的数量是n = y + 1-x
  • 这是一个子网,如果n是2的幂(1,2,4,8,16,32,64,128,256) x是n的倍数({{ 1}}没关系,否则你必须把它拆开
  • 然后,第三个八位字节掩码为m = 256-n
  • 生成的网络掩码为255.255.m.0

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

x = 0*n = 0

abcx的算法是相同的 - abcy,ax0.0 - ay255.255和x.0.0.0 - y.0.0.0,除了我们不是在谈论/ 24s而是IP,/ 16s和/ 8s,netmasks分别变为255.255.255.m,255.m.0.0和m.0.0.0。

希望这会有所帮助。