Linux 中是否有类似‘route’的工具来配置转发条目(目标 mac 地址 --> 接口)

Linux 中是否有类似‘route’的工具来配置转发条目(目标 mac 地址 --> 接口)

我在 Linux 中配置转发表时遇到问题。
我们将第 3 层的路由表称为 IP 表,将第 2 层的转发表称为 MAC 表。
现在我想在转发表中添加一个条目。我知道route可以使用工具命令在路由表中添加路由条目,例如:

#[root]# route add -net 192.168.10.0 网络掩码 255.255.255.0开发 eth0

那么,是否有像“路由”这样的工具可以让我在转发表中添加条目,例如:

#[root]# '命令名称' 添加 01:02:03:04:05:06开发 eth1

我所需要的是如何将目标 MAC 地址绑定到固定的网络接口?!


谢谢大家的回复。现在看来我没有清楚地介绍我的目标,所以你们大多数人都想知道我的要求。我们现在正在进行一个数据中心网络实验,主要关注交换机的转发表大小。在这种情况下,它是一个胖树拓扑,另一个研究团队开发了一种新的寻址和路由方法,可以保证两个属性:多路径和小转发表大小。这里我们把第 2 层表称为转发表,因为 Cisco 也这么叫。这个网络中有一个控制器,所以所有的转发表都可以通过这个控制器的工作来获得。现在的实验是研究如何将转发表从控制器写入交换机。也就是说,如何写入像MAC_ADDR--->输出接口。请注意,此网络就像一个大的“局域网”,不需要进行 IP 路由。

答案1

您应该能够使用‘arp’实用程序来执行此操作。

arp -i eth0 -s

答案2

在 Linux 上,您应该始终使用命令ip来更改网络配置。该route命令存在,但不能让您访问所有 Linux 路由功能。现在,MAC 转发通常称为桥接,您可以使用该brctl工具来实现。但从问题中不清楚您如何使用 MAC 地址。

答案3

首先,我要说几点。路由是寻找方向的过程。转发 TCP/IP 数据包的过程称为转发。这就是为什么 sysctl 被调用net.ipv4.ip_forward,netfilter 的链被调用FORWARD。我应该补充一下,有动态和静态路由。而 swithes 所做的被称为(惊讶)交换

OSI 的第二级交换机使用 MAC_Dest-PortNum 对应表只是因为这些端口是第二级的——这足以将以太网帧切换到特定端口(或在没有特定表条目的情况下广播它)。

Linux 的网络接口不仅仅是交换端口,它们还是接口转发 TCP/IP 数据包(数据报)涉及查找(在路由表缓存中)相应的输出接口。我从未听说过 Linux 支持交换

结论:如果您要让数据包找到通过 Linux 系统的路径,则必须使用路由表。您可以使用 arptables/ebtables/iptables 对这些数据包进行一些欺骗,但由于您没有描述为什么你需要它吗?你的目标是否可以实现以及如何实现还不太清楚。

答案4

据我所知,您需要告诉内核,发往特定 MAC 的以太网帧应传送到特定接口。但是,这应该自动完成;只要您的两个接口桥接在一起,以太网帧就会穿过桥接并顺利找到目的地。当然,您必须遵守某些准则,包括不要在网络上的多个点之间设置太多交换机。

如果您已经将系统作为网桥运行,而以太网帧没有到达正确的位置,则您的网络可能有错误;您需要仔细检查以确保网络布线中没有任何环路等。

如果您拥有更大的网络,那么 IP 子网将是最佳选择;这样,您就能够运行功能齐全的路由器,以任何需要的方式移动第 3 层数据包。通常,您会更喜欢 IP 子网划分,而不是在第 2 层使用巧妙的技巧。除非您使用 MAC 地址作为日志记录的密钥,否则您不需要使用 MAC 地址。您当然不想将任何安全性建立在它们之上,因为 MAC 地址很容易被伪造/克隆。

相关内容