如何使用 OpenWRT 14.07、Barrier Breaker 设置静态/持久 ARP 条目?

如何使用 OpenWRT 14.07、Barrier Breaker 设置静态/持久 ARP 条目?

标题说明了一切,下面是完整版本:

我正在尝试设置一种方法,当客户端尝试访问我的家庭服务器时,使用 WakeOnLan 自动打开它。我的想法是路由器(OpenWRT 14.07,Barrier Breaker)监控任何连接到我想要唤醒的主机的尝试iptables,如果它记录了这样的事件,它会发送魔术包来唤醒主机。经过多次尝试和 SF 的帮助,我已经让 iptables 适用于桥接设备,因此本地网络(看这里)。

不幸的是,我现在遇到了一个问题,如果主机关闭,则不存在该主机的 ARP 条目,因此当地的当客户端无法解析 IP 时,它们不会发送任何数据包(如果我理解正确的话)。对于从互联网访问的外部客户端,它可以正常工作。

如果我理解正确的话,解决方案应该是创建一个静态 ARP 条目,这样路由器就会响应任何请求,然后客户端就会发送它们的数据包。以下我尝试使用ip neigh add 192.168.1.20 lladdr 00:de:ad:be:ef:00 nud permanent dev br-lan并运行,arp我看到了服务器的条目,但它仍然不起作用。

我已经确认,当服务器开启或最近关闭(几分钟前)时,客户端发送数据包,并由 记录下来iptables

因此问题是:

1)我做错了什么?

2) 如何实现静态/持久 ARP 条目?

答案1

我能够使用

ip neighbor replace 192.168.0.1 lladdr 11:22:33:44:55:66 nud permanent dev eth0

或者如果尚未请求

ip neighbor add 192.168.0.1 lladdr 11:22:33:44:55:66 nud permanent dev eth0

将 IP 地址设置为 MAC 地址。

答案2

获得静态 ARP 条目的正确方法是设置一个外部文件,通常称为 /etc/ethers,格式如下:

   00:11:22:33:44:55 192.168.1.2
   aa:bb:cc:dd:ee:ff 192.168.1.3

等等,然后添加以下行

   post-up arp -f /etc/ethers

(我不知道iproute2相当于ARP-F,但此命令在内核 14.04 上仍然有效)在br-lan文件中的接口/etc/网络/接口

至于为什么你的命令;我不知道,它对我来说看起来没问题。你的桥接接口的名字是什么?在你的例子中是br-lan,你应该根据你的需求进行改变。

相关内容