阻止VAP访问互联网(使用ebtables)

阻止VAP访问互联网(使用ebtables)

我正在尝试找到一种方法将智能家居设备连接到我的本地网络,但拒绝它们访问互联网。

我没有设置绑定到 IP 地址的单独规则,而是尝试在 DD-WRT 路由器上创建一个虚拟 WiFi,该路由器可以访问本地网络,但会丢弃互联网绑定的数据包。

默认情况下,任何新的虚拟 WiFi 都会与桥接接口的主池混合在一起。

这并不是一个完全不常见的问题,标准方法似乎是将虚拟接口移动到自己的网桥中,并使用不同的子网和一整套iptables规则。例如dd-wrt:阻止VAP访问互联网

我们当然可以做得更好。

我希望能够添加一条ebtables规则来获得我想要的效果。像这样的非法规则:

ebtables -t broute -I BROUTING -i wl0.1 -o $(get_wanface) -j REJECT

-o并且REJECT在这种情况下无效,所以我能得到的最接近的是:

ebtables -t broute -I BROUTING -i wl0.1 -p IPv4 --ip-destination ! 192.168.1.0/24 -j DROP

这里的设计旨在挂钩 broute 表(在全局链的早期)并将数据包从桥接路由器中删除。它的目标数据包是任何进入虚拟 WiFi 并打算发送到本地子网以外的地方的数据包。

这种作品。也许是我第一次进行本地/广域网测试,但之后我的诊断应用程序挂起,网络感觉非常不健康。

我认为这是因为 ebtables 无法对 IP 做任何花哨的事情,所以 REJECT 的概念在这里并不适用。这是一个问题,因为 DROP 会让电话摆脱困境,而我无法处理 DROP 数据包的去向(我什至不知道它们去哪里/如何拦截它们/如何拒绝它们等)

这种ebtables方法有效还是注定失败?

答案1

总而言之:

ebtables -F INPUT
ebtables -A INPUT -i wl0.1 -p IPv4 --ip-destination 192.168.1.1/24 -j ACCEPT
ebtables -A INPUT -i wl0.1 -p IPv4 --ip-destination 255.255.255.255 -j ACCEPT
ebtables -A INPUT -i wl0.1 -p IPv4 -j DROP
ebtables -A INPUT -i wl0.1 -p IPv6 -j DROP
ebtables -L --Lc
  1. (可选)刷新(清除)任何预先存在的ebtables规则
  2. 接受通过受限 WiFi 发送到本地子网的任何内容
  3. 接受通过受限 WiFi 发送到广播地址的任何内容
  4. 丢弃任何其他来自受限制 WiFi 的内容(例如 IPV4)
  5. 丢弃任何来自受限制 WiFi 的其他内容,例如 IPV6
  6. (可选)显示刚刚添加的规则+计数器

回想一下 - 本练习的目的是创建以下配置:

br0 -
  - eth0   Wired ethernet  |  192.168.1.0/24  |     INTERNET
  - wl1    5   GHz WiFi    |  192.168.1.0/24  |     INTERNET
  - wl0    2.4 GHz WiFi    |  192.168.1.0/24  |     INTERNET
  - wl0.1  2.4 GHz WiFi    |  192.168.1.0/24  |  NO INTERNET

(注意 - 同一网桥内的所有接口,全部位于同一子网中,大多数有互联网,一个没有)

当我可以删除其他所有内容时,为什么要在 DROP 规则上指定协议?我发现与协议无关......

ebtables -A INPUT -i wl0.1 -j DROP

...适用于已建立的 WiFi 连接。但是,对于新的 WiFi 连接,他们无法进行身份验证。我认为这是因为规则拦截了 WPA2-PSK 所需的非 IP 流量。

希望这对某人有帮助。我的用例是将 Kasa 智能家居设备加入我的网络,并让我的本地智能家居系统可以访问它们,但阻止它们打电话回家或自我更新。 (自我更新部分是主要动机,因为我听到有关 TPLINK 关闭开放协议的故事)。

相关内容