gpt4 book ai didi

linux - Linux内核路由器代码在哪里替换MAC地址

转载 作者:太空宇宙 更新时间:2023-11-04 04:49:44 31 4
gpt4 key购买 nike

路由器会将收到的数据包的源MAC地址替换为上一跳地址,将目的MAC地址替换为下一跳地址。

Linux 提供了作为路由器的功能。我的问题是内核代码是如何实现转发包过程中更新mac地址的功能的?这部分代码在哪里

我尝试在/net/ipv4中查找代码,但找不到任何内容...

最佳答案

实际情况并非如此。

IP 不依赖于以太网,因此发生的情况取决于下层的底层协议(protocol)。

如果它是本地产生的 IP 数据包,或者是已路由到另一台主机的 IP 数据包,也会发生同样的情况。

Linux 的 IPv4 堆栈在任何方面都不依赖于以太网,事实上内核支持许多其他链路层协议(protocol)。 IP 是一种 WAN 协议(protocol),您可以在不同的底层协议(protocol)之间进行路由。一些例子是

  • ppp、slip(串行线路)
  • PPTP、GRE(用于隧道,主要是 VPN)
  • ATM 上的 IP
  • token 环(我认为主要是遗留的)
  • 环回和虚拟(仅用于本地通信)
  • Wifi(尽管这实际上与以太网基本相同)

因此,当将 IP 帧从一个以太网接口(interface)路由到另一个以太网接口(interface)时,实际发生的情况是链路层被完全剥离,然后在路由后形成新的链路层。如果协议(protocol)不是以太网,则将使用适合该协议(protocol)的适当链路层数据包。

因此没有人“更改 MAC 地址”,而是链路层数据包完全重建。

关于linux - Linux内核路由器代码在哪里替换MAC地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4423832/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com