检查子网冲突

时间:2015-12-04 16:43:36

标签: python networking

我正在编写一个获得/ 16并将其分解为不同子网(/ 24,23,27等)的脚本。我意识到我可能遇到冲突的子网,我正在寻找一种方法来检查它。我没有在ipcalc或netaddr中找到任何具体解决此问题的内容。谢谢你或你的帮助

def subnetting(self, cidrBlock, subnets):
            networks = subnets
            cidrblock = cidrBlock
            assigned_subnets = []
            ipnetwork = IPNetwork(cidrblock)
            subnet_list = ipnetwork.subnet(int(subnets))
            for subnet in subnet_list:
                    assigned_subnets.append(subnet)
            return assigned_subnets

2 个答案:

答案 0 :(得分:0)

要比较两个子网以查看它们是否发生冲突,您需要将最小的掩码应用于两者,以查看它们是否相等。如果他们是平等的,那么你就会发生冲突。

我将假设10.10.0.0/16网络。如果您创建10.10.0.0/2310.10.1.0/24,则可以通过将/23255.255.254.0)的掩码应用于10.10.0.010.10.1.0来比较它们。 / p>

10.10.0.0 AND 255.255.254.0 = 10.10.0.0
10.10.1.0 AND 255.255.254.0 = 10.10.0.0

他们是平等的,所以他们重叠并发生冲突。

答案 1 :(得分:0)

尝试使用ipconflict

ipconflict 10.0.1.0/24 10.0.1.0/22

输出:

conflict found: 10.0.1.0/24 <-> 10.0.1.0/22