为什么交换机不重写 mac 地址?

网络工程 以太网 协议理论 MAC地址
2021-07-28 18:54:04

以太网交换机不更改数据包的 MAC 地址是否有任何特殊原因?

是使用 MAC 地址识别终端主机还是其他任何东西?

3个回答

如果交换机要更改 MAC 地址,这将完全破坏网络。

MAC 地址是本地网络上的主机使用的唯一标识符。

如果交换机要更改目标 MAC,则该帧将不会传送到适当的主机。在这种情况下,例如,如果帧被淹没,目标主机将丢弃它,因为它不再以主机为目的地。

如果交换机要更改源 MAC 地址,目标主机将使用此 MAC 地址进行任何响应(包括更新任何带有错误数据的 ARP 条目)。这将导致我已经描述过的相同情况,仅适用于所有返回流量。

这可能会进一步产生问题,例如 802.1X 和其他使用 MAC 地址来识别/分类设备的机制。

可以开发机制来做到这一点吗?我相信他们可以。但此时没有理由这样做,这只会使网络复杂化并增加不必要的处理。我们还没有接近耗尽可用的 MAC 地址池,因此不需要像 MAT 这样的东西(不知道 MAC 地址转换的概念是否存在于任何地方,所以也许我只是创造了一个术语?)。

数据报地址的重写发生在第 3 层,例如,当运行 NAT 的网关(路由器或防火墙)重写内部网络上主机的 IP 地址时,它们都出现在网关本身的一个(或几个)外部 IP 地址上。

在第 2 层级别(我们使用 MAC 地址来区分主机和交换机进行数据报的移动,即帧)没有发生类似事情的原因如上面的评论中所述,确实没有必要。

在使用 NAT 的第三层情况下,NAT 解决了许多问题:

  • IP 地址用于全球通信,并且必须共享有限的可用 IP 地址池。通过使用 NAT,可以确保大量内部主机可以共享更少(通常只有一个)在公共 Internet 上可见的 IP 地址。
  • 有些人认为重写IP地址是为了通过伪装内部机器的IP地址来增加一层安全性。

所以,如果我们坚持 NAT 的例子,真的不需要 NAT 的第二层对应物。

  • MAC 地址并非全局用于寻址 Internet 上的数据报,而是用于将帧发送到本地子网上的正确主机。由于本地子网相对较小,并且可能的 MAC 地址数量非常多,因此不会“耗尽”第 2 层级别的可用 MAC 地址。(手动将 NIC 的 MAC 地址重新配置为任意值的选项不会改变这一点)
  • 对于转发时重写数据报地址的有争议的安全优势:由于 MAC 地址仅在本地子网内使用,相对而言,从安全角度来看,通常可以更好地控制该子网(物理上以及大多数所涉及的设备)与第 3 层情况下的对应物,即整个互联网(我们作为连接的用户和网络工程师在实践中没有安全控制)相比。

希望这能说明为什么交换机不重写 MAC 地址。我从头顶上想出的唯一第 3 层情况是 NAT,其他人当然可以提供其他需要 IP 重写的第 3 层情况的示例(以及为什么这些技术在第 2 层级别没有真正意义) .

重写 MAC 地址会增加相当大的复杂性(交换机必须了解更高级别的协议,如 arp,以便它可以重写地址解析),会使故障排除更加困难,会阻止像 STP 这样的协议工作,并且通常是 PITA。它通常也不需要。

这并不是说这是不可能的。ebtables(iptables 的第 2 层对应物)确实有一些 MAC 地址转换选项。如果您的交换机不使用 per-vlan MAC 表,并且您想要进行一些第 2 层过滤,这会很有用。

http://ebtables.netfilter.org/examples/example1.html