是否可以执行第 2 层(MAC 地址)跟踪路由?

网络工程 ip MAC地址 层2 第3层 跟踪路由
2021-07-13 06:19:51

我了解 layer2 & layer3 和 MAC & IP 之间的区别。我了解地址解析协议等。但是有什么方法traceroute可以显示第 2 层信息吗?例如,我想发现路由器远端最近交换机的 MAC 地址。

所以,它是:桌面→路由器→交换机,我想检查交换机的MAC。如果可能的话,第 2 层和第 3 层信息一直到 8.8.8.8 会很好,但我不喜欢我的机会。

我看不出它是如何实现的,但我不知道一切。仅仅因为我想不出办法去做,并不一定意味着它不能以某种方式完成。

在所有第 3 层数据包都封装在第 2 层帧中之后,也许有一种方法可以将第 2 层报头保留在相反的方向,而不是被路由器以某种方式剥离?

3个回答

但是有没有办法做一个traceroute来显示第2层信息?

简短的回答:没有。

更长的答案:traceroute 利用 IP 的 TTL 功能。以太网中没有这样的概念,因此没有traceroute。

例如,我想发现路由器远端最近交换机的 MAC 地址。

交换机不一定有 MAC 地址(在连接到路由器的 VLAN 中)。使用 LLDP 或 CDP,您可以询问路由器它发现了哪些相邻设备。使用管理型交换机,您可以 ping 它(或仅向其 IP 地址发送任何类型的数据包)并检查路由器的 ARP 表。

一直到 8.8.8.8 的第 2 层和第 3 层信息会很好,

L3/IP 没有问题(跟踪路由),支持 ICMP TTL 的跃点超出有了 L2 就没有办法了。

在所有第 3 层数据包都封装在第 2 层帧中之后,也许有一种方法可以将第 2 层报头保留在相反的方向,而不是被路由器以某种方式剥离?

不可以。路由器在路由时会解封数据包并转储该帧。当然,如果路由器具有数据包捕获功能,您可以使用它从远端捕获;也可能有替代的、类似的方法(可能是 sFlow)。没有对路由器的这种控制,就没有办法。

第 2 层信息在每个第 3 层入口接口处被剥离并丢弃。在传出接口上添加了一个全新的第 2 层报头。你要求路由器做一些完全不同的事情。

还要记住,并非每个第 2 层链路都有 MAC 地址。

你的想法有些问题。

Traceroute 之所以起作用,是因为第 3 层数据包的 TTL 会被路由器减少,并且路由器应该在 TTL 到期时发回 ICMP 消息。Traceroute 发送 TTL 为 1 的数据包,因此第一个路由器使 TTL 过期并返回 ICMP 消息,然后 traceroute 发送 TTL 为 2 的数据包,因此第二个路由器使 TTL 过期并返回消息,依此类推。

交换机是透明设备,不会以任何方式改变第 2 层帧(除了在中继链路上添加或删除 VLAN 标记),以太网没有 TTL 字段。

是的,第 3 层设备(如路由器)会剥离第 2 层帧以转发数据包。这是必要的,因为第 3 层设备必须为下一个接口构建一个新的帧,这可能是一个完全不同的协议,使用不同的寻址,或者根本没有寻址。即使下一个接口是以太网,第一个 LAN 上的帧在第二个 LAN 上也没有用,因为第二个 LAN 上不存在 MAC 地址。

请记住,整个世界都不是以太网。事实上,带有 Wi-Fi 接口的设备比带有以太网接口的设备更多。