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

pac*_*man 6 openwrt wake-on-lan arp

标题说明了一切,但这里是长版本:

我正在尝试为我的家庭服务器设置一种方法,以便在客户端尝试访问它时使用 WakeOnLan 自动打开它。我的想法是路由器(OpenWRT 14.07,Barrier Breaker)监视我想唤醒使用的主机的任何连接尝试,iptables如果它注册了这样的事件,它会发送魔术包来唤醒主机。在 SF 上进行了大量尝试和帮助之后,我已经让 iptables 为桥接设备和本地网络工作(请参阅此处)。

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

如果我理解正确,解决方案应该是创建一个静态 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 条目?

Mar*_*iae 2

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

   00:11:22:33:44:55 192.168.1.2
   aa:bb:cc:dd:ee:ff 192.168.1.3
Run Code Online (Sandbox Code Playgroud)

依此类推,然后添加以下行

   post-up arp -f /etc/ethers
Run Code Online (Sandbox Code Playgroud)

(我不知道 iproute2相当于arp -f ,但该命令在内核 14.04 上仍然有效)在文件/etc/network/interfaces中br-lan接口的节中。

至于为什么你的命令;我不知道,对我来说看起来不错。您的桥接接口的名称是什么?在您的示例中,它是br-lan,您应该根据您的需要进行更改。