以太网交换机不更改数据包的 MAC 地址是否有任何特殊原因?
是使用 MAC 地址识别终端主机还是其他任何东西?
以太网交换机不更改数据包的 MAC 地址是否有任何特殊原因?
是使用 MAC 地址识别终端主机还是其他任何东西?
如果交换机要更改 MAC 地址,这将完全破坏网络。
MAC 地址是本地网络上的主机使用的唯一标识符。
如果交换机要更改目标 MAC,则该帧将不会传送到适当的主机。在这种情况下,例如,如果帧被淹没,目标主机将丢弃它,因为它不再以主机为目的地。
如果交换机要更改源 MAC 地址,目标主机将使用此 MAC 地址进行任何响应(包括更新任何带有错误数据的 ARP 条目)。这将导致我已经描述过的相同情况,仅适用于所有返回流量。
这可能会进一步产生问题,例如 802.1X 和其他使用 MAC 地址来识别/分类设备的机制。
可以开发机制来做到这一点吗?我相信他们可以。但此时没有理由这样做,这只会使网络复杂化并增加不必要的处理。我们还没有接近耗尽可用的 MAC 地址池,因此不需要像 MAT 这样的东西(不知道 MAC 地址转换的概念是否存在于任何地方,所以也许我只是创造了一个术语?)。
数据报地址的重写发生在第 3 层,例如,当运行 NAT 的网关(路由器或防火墙)重写内部网络上主机的 IP 地址时,它们都出现在网关本身的一个(或几个)外部 IP 地址上。
在第 2 层级别(我们使用 MAC 地址来区分主机和交换机进行数据报的移动,即帧)没有发生类似事情的原因如上面的评论中所述,确实没有必要。
在使用 NAT 的第三层情况下,NAT 解决了许多问题:
所以,如果我们坚持 NAT 的例子,真的不需要 NAT 的第二层对应物。
希望这能说明为什么交换机不重写 MAC 地址。我从头顶上想出的唯一第 3 层情况是 NAT,其他人当然可以提供其他需要 IP 重写的第 3 层情况的示例(以及为什么这些技术在第 2 层级别没有真正意义) .
重写 MAC 地址会增加相当大的复杂性(交换机必须了解更高级别的协议,如 arp,以便它可以重写地址解析),会使故障排除更加困难,会阻止像 STP 这样的协议工作,并且通常是 PITA。它通常也不需要。
这并不是说这是不可能的。ebtables(iptables 的第 2 层对应物)确实有一些 MAC 地址转换选项。如果您的交换机不使用 per-vlan MAC 表,并且您想要进行一些第 2 层过滤,这会很有用。