我正在尝试设置一个包含几个具有不同访问权限的不同设备组的网络。从物理上讲,设备通过墙上端口或几个可用的 WiFi 网络之一连接到网络。我使用的硬件是几个 Cisco SG200-08 智能交换机、一组 UniFi WiFi AP 和一个 EdgeRouter Lite,它运行 Vyatta-Linux 的一个分支,称为 EdgeOS。
由于连接的设备变化很大,我不想维护 MAC 地址列表来管理访问权限,而是根据我将它们连接到的墙上端口或 WiFi 网络将设备隐式地分配到一个组。
我目前对于如何做到这一点的想法如下:
- 为不同的设备组定义不同的 VLAN(为简单起见,假设 VLAN 10 用于具有完全访问权限的受信任系统,而 VLAN 20 用于只允许访问特定资源的访客)。
- 然后,智能交换机可以自动为不同的墙上端口分配 VLAN ID。
- 事实证明,UniFi AP 可以使用不同的访问凭据同时广播最多 4 个 WiFi 网络,然后根据流量来自哪个 WiFi 网络使用 VLAN ID 标记流量。
- 最后,EdgeRouter 通过管理不同 VLAN 的访问权限将所有内容联系在一起。
我遇到的问题是,我拥有的一些设备使用各种自动发现方法,以便其访问软件(UPNP、Windows 网络共享、专有协议等)找到它们。我希望每个人都可以访问的设备(来自 VLAN 10 和 20)也可以被每个人发现(即来自两个 VLAN)。因此,我需要找到一种正确转发广播的方法,也许还需要做其他几件事……
以下是我目前对于如何做到这一点的想法:
- 设置一个 DHCP 服务器,在 192.168.1.1 中分配值。10.0/24至 VLAN 10
- 设置第二个 DHCP 服务器,在 192.168.1.1 中分配值。20.0/24至 VLAN 20
- 让 DHCP 服务器告诉其客户端子网掩码是 255.255。0.0(希望提示他们尝试发现两个地址范围内的设备)
- 在 VLAN 之间设置 ARP 代理和广播数据包转发(尚不确定如何实现这一点。也许只是桥接 2 个 VLAN?)
- 添加防火墙规则,丢弃所有跨 VLAN 数据包,但广播数据包或 VLAN-10-IP 与访客可访问的设备匹配的数据包除外。
因此,我的问题是:
我上面描述的设置方式是否有意义,或者是否存在完全不同的、更好的方法来实现访问控制?(我当然希望保留将计算机隐式地分配给不同访问组的便利性,只需将它们连接到几个可用的 WiFi 网络之一或将它们插入特定的墙上端口即可。)
我描述的设置是否确实允许跨 VLAN 发现 (UPNP-) 设备?Windows 计算机及其网络共享如何?
在 Linux 中,是否可以让 DHCP 服务器在一个子网中分配地址(例如 192.168.10.0/24),但为其客户端提供不同的子网掩码(例如 255.255.0.0)?
额外积分:我可以以某种方式从 EdgeRouter 上的 EdgeOS GUI 执行此操作吗,还是需要从命令行进行设置?
我是否只需在 VLAN 之间设置通用网桥并丢弃“非法”数据包,或者是否有更好的方法(更安全、性能更好......)来链接两个网络以允许设备发现和访问?
是否可以只创建两个完全独立的 VLAN(无桥接),然后让路由器将设备“映射”到另一个网络?即在 VLAN 20 中“伪造”一个 IP 地址为 192.168.20.5 的系统,然后将其所有流量转发到 VLAN 10 中 IP 地址为 192.168.10.5 的真实系统?这样做是否可以使映射的虚拟系统与将该系统实际连接到相应其他 IP 下的网络之间没有区别?
还有一点需要注意:并非所有需要跨网络共享的设备都运行 Linux。因此,我不能直接通过虚拟接口(如 eth0.10 和 eth0.20)将设备“连接”到两个 VLAN。
PS:我读到过,VLAN 并不是提供访问控制的最安全方式,因为有几种简单的方法可以破解它们(双重标记等)。但听起来只要小心避免使用本机 ID 和中继端口,就可以轻松防止这些情况。还有其他更根本的原因不将 VLAN 用于此目的吗?如果有,有什么替代方案?