openwrt 路由器上的 iptables:记录来自同一子网上的客户端到主机的连接

openwrt 路由器上的 iptables:记录来自同一子网上的客户端到主机的连接

我正在尝试使用运行 OpenWRT 14.07 Barrier Breaker 的路由器设置自动局域网唤醒设置。我的想法是,路由器监控我想要唤醒的主机的任何连接尝试,如果记录了此类事件,它会发送魔术包来唤醒主机。我一直尝试使用 iptables 将任何此类连接尝试写入日志文件,然后我可以从另一个脚本中检查它。对于 iptables,我得出了以下规则:

iptables -I FORWARD 1 -d 192.168.1.20 -p tcp -j LOG --log-prefix "WAKE_UP_EVENT"

192.168.1.20 是我想要唤醒的主机的固定 IP。然后我可以logread在 bash 脚本中使用它来监控日志,并在发现时发送魔术包WAKE_UP_EVENT。无论如何都是这样的。

虽然尝试使用 SSH 从家庭网络之外的客户端(例如互联网)进行连接时,这种方法很有效,但对于与家庭网络内的主机位于同一子网的客户端,这种方法却行不通。如果我理解正确的话,原因是 FORWARD 规则适用于任何“通过”iptables 的数据包,但在这种情况下,数据包会停留在同一个网络内,并且与 iptables 没有联系。

所以有两个问题:

1)我对该行为的理解正确吗?

2)有没有什么方法可以实现我想要做的事情,无论是使用 iptables 还是其他方法?

我已经尝试了 4 个小时来让它工作,但无济于事,也没有找到有用的信息。希望有人能给我一些有用的意见。提前谢谢!

答案1

默认情况下,桥接流量不会到达 iptables。您可以在以下位置启用它/etc/sysctl.conf

# disable bridge firewalling by default
net.bridge.bridge-nf-call-arptables=0
net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=1

然后重新加载设置:

sysctl -p

参考:OpenWRT:Netfilter/Nftables

相关内容