我为个人电脑、打印机等设置了一个私有局域网,并为互联网连接的设备和设备配置了一个单独的访客网络。访客网络配置为虚拟适配器,在非桥接模式下具有 AP/Net 隔离,并配有单独的 DHCP 服务器,运行良好。
YouTube 手机应用程序和网站允许您连接到同一网络上的智能电视,并将您正在观看的视频放在电视上。
我希望能够将所有“智能”设备连接到访客网络,并且仍能使用该功能,例如,以典型的防火墙 DMZ 方式从连接到专用网络的设备观看电视上的视频。目标是,如果智能设备受到攻击,它无法在我的专用网络中打开漏洞。使用 DD-WRT 配置此类路由/拓扑的首选方法是什么?
答案1
这是一个合理的担忧——将智能设备保持在访客网络上是可以理解的,但是他们的本地连接到主机网络上的其他设备/计算机大多会失败(取决于防火墙和设备对广播的使用)。
以下是我在 dd-wrt 上解决这个问题的方法。有多个步骤和几种替代方案。
在这里,我假设智能设备位于访客网络上,并且它们需要能够被主机网络上的机器发现并与之通信……但也可以采用下面描述的机制进行相互设置。
首先我们需要配置主客边界。使用 iptables 阻止所有从客户机到主机(或至少从智能设备)的新数据包,但允许所有数据包从主机到客户机。这样,主机(到客户机)发起的任何通信都将被允许,但反之亦然。这应该是一个足够安全的安排。
许多智能设备通过广播让其他设备发现自己,而问题在于广播通常不会在子网/接口边界之间中继。因此,即使我们将 iptables 配置为允许从客户机到主机的广播(或者说,开放客户机和主机网络之间的所有流量),设备发现将不起作用。
因此,如果我们能找到一种机制,将智能设备的广播转发到我们的主机网络机器(如手机/电脑),这些机器就会回复各个设备,建立连接,通信就会正常进行。
我找到了两种方法来做到这一点,下面将对此进行解释(有关更多详细信息,请参阅我在 dd-wrt 论坛上的回答)。
中继
这是一个非常简单的实用程序,碰巧 dd-wrt 上也有 :)。顾名思义,它只是从一个接口读取广播消息,然后将它们发送到另一个接口。没有太多选项,但至少它可以作为守护进程运行。
有了这个,我能够将来自我的客户网络上的设备发出的广播消息中继到我的主机网络上的机器,并且机器能够发现这些设备并与它们通信。但我最终选择了 samplicator,如下所述。
取样器
https://github.com/sleinen/samplicator这是一个有趣的工具,它可以在给定端口上接收 UDP 数据报并将其发送到一组接收器。我发现设备正在使用哪些端口发送广播,然后在这些端口上的备用 Linux 机器上运行 samplicator。samplicator 开始将这些数据包发送到我在其配置文件中指定的目标设备。
同时,在 iptables 中,我仅允许客户机通过这些端口向主机发送新数据包(并且仅向目标设备发送)。因此,这些数据包现在能够到达目标主机,并且通信开始。使用 samplicator 的一个好处是,我不会向主机网络发送不必要的广播(例如 DHCP)!
我在这里省略了一些细节。这些方法之一应该适用于您所描述的情况。