当我在Python 2.7中运行以下代码时,我对所有这些检查都是正确的。
from netaddr import *
testip = '192.168.2.5'
testnetwork = '192.168.3.0/23'
if testip in IPNetwork(testnetwork):
print "Logic Fail"
if IPAddress(testip) in IPNetwork(testnetwork):
print "Logic Fail"
if testip in IPSet([testnetwork]):
print "Logic Fail"
if IPAddress(testip) in IPSet([testnetwork]):
print "Logic Fail"
输出是:
Logic Fail
Logic Fail
Logic Fail
Logic Fail
答案 0 :(得分:0)
对于192.168.3.0/23
网络,范围是:
192.168.2.1 - 192.168.3.254
因此您的IP地址192.168.2.5
属于此范围。不确定你想要实现什么,但是考虑到指定的python代码按预期工作
答案 1 :(得分:0)
这不是一个奇怪的结果,你指定的CIDR曾经被称为" supernetting",所以:
192.168.3.0/23
有效涵盖
192.168.2.1
通过
192.168.3.254
为您提供大约512个可能的地址 / 23与此网络掩码相同
255.255.254.0
这是3被撞回2
的地方为了帮助可视化,您可以使用在线子网计算器,例如http://mxtoolbox.com/subnetcalculator.aspx