有没有免费的Linux软件来确定两个网络设备是否连接? php 课程也可以很好......
我想画一下网络拓扑。我可以用zenmap确定网络中的设备(它将结果保存到文件),但我不知道哪个设备连接到哪个设备......(zenmap也可以绘制拓扑,但它不会将其保存到文件)
答案1
听起来你正在尝试“规划”一个网络,从对“外面”的零知识到对从给定点可到达的每个设备的全面了解。
Linux 命令ethtool
可以告诉你你的接口是否物理连接到其他东西。所以这是一个好的开始。当然,如果您连接的设备是路由器或交换机,那么您还有其他工作要做。
这实际上是一个深刻而复杂的问题。除了 ping 之外,没有普遍认可的“嘿,我在这里”协议,而 ping 常常出于安全原因而被禁用。
然而,继续,接下来要处理的是您当前的子网掩码。这应该告诉您可以通过该接口进行通信的 IP 地址范围。扫描子网中每个可能的 IP 地址通常是最可靠的方法(使用类似的工具nmap
来完成)。最好有一个协议支持此目的,例如 ping、Cisco 设备的 CDP 或 Windows Vista/XP 系统的 LLTD。
如果您正在处理多个 LAN 路由器,那么您可以使用 FIB 中的路由(route
orip route show
命令)来了解应间接可达的其他子网。然后,您可以扫描其他已知可到达的 IP 范围。
然而,如果我们谈论的是整个互联网,或者一个非常大的子网,那么这就变得不切实际了。在这种情况下,可行的解决方案通常是依赖“发现”或“会合”服务,例如 IGMP 或 Bonjour。然后,您只能了解那些希望了解的设备。但这比尝试对整个互联网进行端口扫描要好。
答案2
traceroute
可能是一个好的开始:它显示了您自己的主机和远程主机之间的跳数。我不知道有什么方法可以获取一对遥控器的此类信息,除非在traceroute
其中一个遥控器上运行。
答案3
如果您的设备列表包含 IP 地址和网络掩码,您可以通过为每个子网创建一个顶点、为每个设备创建一个顶点以及设备列表中每个(子网、设备)之间的边来创建基本第 3 层图。
这将产生纯第 3 层拓扑,这可能是一个不错的开始。此外,如果您的网络有些复杂,这也不会很好地工作。例如,如果您有重复或重叠的子网(可能使用 NAT 或 MPLS VPN),则特定 IP 范围内的所有设备都已连接的假设可能不成立。