如何使用OpenWRT 14.07,Barrier Breaker设置静态/持久ARP表项?


5

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

我试图为我的家庭服务器设置一种方法,当客户端尝试访问它时,使用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表项?

Answers:


3

我能够使用

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地址。


1
您需要ip-full安装包以使这些命令起作用。
Sourav Ghosh

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,但是这个命令stil lworks在内核14.04上)在teh文件/ etc / network / interfaces中br-lan接口的节中。

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


好。所以我arp通过安装在OpenWRT中获得了一个工作命令opkg install net-tools-arp。当我现在使用arp -s 192.168.1.20 00:11:22:33:44:55 -i br-lan它时,它在arp表中显示为:192.168.1.20 ether 00:11:22:33:44:55 CM br-lan。所以我希望它可以工作,但仍然没有。sudo arpsend -D -e 192.168.1.20 wlan0在我的笔记本电脑上运行,它只是挂起并且不会回馈任何东西。
packoman 2015年

此外,我找不到post-up脚本,但在编辑时/etc/ethers,我发现这是为了在日志中启动:Mon Jun 15 21:11:49 2015 daemon.info dnsmasq-dhcp[1395]: read /etc/ethers - 1 addresses。那么我还能尝试一下吗?有关调试/测试的建议吗?到目前为止感谢您的帮助BTW!
packoman 2015年

哦。关于设备:桥接设备被调用br-lan,因此应该是好的。
packoman 2015年

@packoman我在答案中犯了一个小错误,现在已经纠正了,关于文件放在哪一行。请重新阅读我的答案。对于那个很抱歉。
MariusMatutiae 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.