判断两个 IP 地址是否可以通信

determine if two IP addresses can communicate

我必须验证两个 IP 地址是否可以通信。我还必须考虑第一个 IP 是否在更高的子网中。我设法通过导入 netaddr (python) 检查 IP 是否在同一网络中,但我卡住了。

您始终可以通过检查 IP 地址是否在同一网络/范围内来检查 IP 理论上是否可以相互通信。这可以简单地通过使用 Python 3.3 模块 ipaddress 来实现。这是一个小例子,我创建了两个 IPv4Address 实例和一个 IPv4Network 实例。使用这个标准库模块,您可以简单地检查 IPvAddress 的实例是否在 IPv4Network.

的实例中
>>> import ipaddress
>>> ip1 = ipaddress.IPv4Address('192.168.0.1')
>>> ip2 = ipaddress.IPv4Address('192.168.0.2')
>>> ip3 = ipaddress.IPv4Address('192.168.1.1')
>>> net = ipaddress.IPv4Network('192.168.0.0/24')
>>> ip1 in net
True
>>> ip2 in net
True
>>> ip3 in net
False
>>> 

请注意,模块 IP 地址仅通过 Python 3.3.

到达

另一件要记住的事情是,无法保证您指定的 IP 地址实际上可以相互通信。可能在特定机器或网络中存在一些防火墙规则。这只是一种理论方法,绝不适用于现实生活。