我有一个带有两个 Wi-Fi 接口 ( ath0
, ath1
) 的 dd-wrt 路由器。我希望所有的东西都ath0
没有任何类型的 WAN 访问。仅 LAN(往返于设备)。
我将如何以最简单和最强大的方式做到这一点?
在我通过添加一个虚拟 AP、一个新的 AP 网桥以及一些高级路由和防火墙设置来尝试使用 ath1 之前。ath0
虽然这过于复杂,但我认为为此目的使用我的,无论如何都未使用的(5GHz)接口应该更容易。
我使用 OpenVPN 作为客户端,这让事情变得更复杂一些。当使用旧方法的 iptables 防火墙时,我总是必须手动重新设置防火墙设置,因为 /etc/ 中的文件-I
由于 VPN 的原因覆盖了我的规则(在顶部),只要它结束就允许所有 WAN 访问VPN。由于 squashFS,我找不到阻止这种情况的方法,并且在保存设置/重新启动路由器后总是不得不手动覆盖它并不是很好。另外我不确定它是否会在以后再次覆盖它。
我也不想ath0
拥有 VPN 访问权限。我不能将 iptables 与源 IP 一起使用,因为它应该适用于该 SSID/接口上的所有客户端,并且一旦它们连接,我就不会真正提前知道 IP。
我已尝试查找此内容,但除了过于先进的虚拟 AP/网桥解决方案外,我找不到任何适合我的情况。
假设您在路由器上也有
ebtables
(或ebtables-nft
)iptables
,并且所有(W)LAN 接口都是桥从设备到同一个主设备(比如命名bridge0
):(请注意,标记值
0xabcd
是任意的。)这会导致从“LAN 端”进入路由器的所有流量都“停留在”广播域内。原因是,
ebtables
'INPUT
不包括从桥从/端口到另一个(即 L2 转发)的流量。对于路由器本身的目标(来自ath0
并因此被标记),我们不希望它们在 L3 上转发(即能够从“LAN”转到“WAN”/VPN/...) .作为替代方案,您也可以在不依赖 iptables 或数据包标记的情况下执行此操作:
虽然未经测试,但
-d Unicast
应该保持 DHCP 等工作。如果您还需要 IPv6(L3 上路由器的流量)工作,您可能需要/想要一个额外的链来处理更多异常(这也将允许您使用另一种方法允许 DHCP),例如:但正如您所看到的,后一种方法要笨拙得多。
PS我对所有WRT或类似的东西都没有经验,所以我不知道应该如何让xtables规则在它们上持久化。(公平地说,AFAIK 无论如何它都是特定于发行版的,即使在“典型的”Linux 发行版上也是如此。)