![如何修复 ad-hoc 网络中的路由](https://linux22.com/image/196823/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%20ad-hoc%20%E7%BD%91%E7%BB%9C%E4%B8%AD%E7%9A%84%E8%B7%AF%E7%94%B1.png)
我有 4 个通过 ad-hoc 网络连接的树莓派。他们的地址如下:
169.254.1.1
169.254.1.2
169.254.1.3
169.254.1.4
我需要按如下方式修复路线:
169.254.1.1-->169.254.1.2-->169.254.1.3-->169.254.1.4
目前,我正在将 BATMAN 协议用于网状自组织网络。
我尝试过ip路由添加命令但它不起作用。
编辑
我尝试使用 ebtables 来过滤来自MAC地址使用
$ebtables -A INPUT -s [*mac address*] -j DROP
规则添加正确,但不起作用,也许我的语法有问题......
答案1
除非你使用的是非常旧的蝙蝠侠,否则蝙蝠侠会继续前进第2层
2007 年初,BATMAN 开发人员开始尝试在第 2 层(以太网层)而不是第 3 层上进行路由的想法。为了与第 3 层路由守护程序区分开来,选择了后缀“adv”(表示:高级)。它不是根据通过 UDP/IP 交换的信息来操作路由表,而是提供虚拟网络接口并自行透明地传输以太网数据包。自 2.6.38 起,batman-adv 内核模块已成为官方 Linux 内核的一部分。
这意味着ip route
条目不会执行任何操作,如果您想控制路由,您需要通过内核接口直接与 BATMAN 交互(/proc
如果我没记错的话,在 )。
这可能已经严重过时了,但当时我可以使用蝙蝠控制获取有关特定 BATMAN 节点正在执行的操作的详细信息,包括邻居列表、第 2 层 ping、第 2 层跟踪路由和内部调试表。
它可能会或可能不会覆盖邻居和路由表,我从未尝试过。
我的笔记提到了/sys/kernel/debug/batman_adv/bat0/neighbors
and /sys/class/net/*/batman_adv
(所以它是 on /sys
,而不是 on /proc
),但我不再运行 BATMAN,我忘记了详细信息,并且您可能必须在内核模块中的某处启用调试。