![跨 VLAN 共享和选择性资源的自动发现](https://linux22.com/image/624993/%E8%B7%A8%20VLAN%20%E5%85%B1%E4%BA%AB%E5%92%8C%E9%80%89%E6%8B%A9%E6%80%A7%E8%B5%84%E6%BA%90%E7%9A%84%E8%87%AA%E5%8A%A8%E5%8F%91%E7%8E%B0.png)
我有一个具有多个 VLAN 的网络,每个 VLAN 包含具有不同访问权限的资源或客户端。
为了简单起见,假设我有 3 个 VLAN:
- ID 10:包含特权客户端和仅可供这些特权客户端访问的私有资源
- ID 20:包含仅有权访问公共资源的来宾客户端
- ID 30:包含特权客户端和来宾客户端均可访问的公共资源
在此设置中,我想使自动发现和访问权限管理正常工作,以便 VLAN 10 中的客户端可以发现和访问 VLAN 10 和 30 中的资源,而 VLAN 20 中的客户端可以发现和访问 VLAN 20 和 30 中的资源。我需要自动发现的资源类型不同(Windows 网络共享、打印机、安全摄像头、Apple 设备等),因此有几种不同的机制在起作用,对其中大多数我都不了解。
是否可以使这样的设置通用地工作,以便 VLAN 10 上的设备看到由 VLAN 10 和 VLAN 30 组成的单个网络,并且行为就像每个人都插入同一个交换机一样,而 VLAN 20 上的设备看到由 VLAN 20 和 VLAN 30 上的所有设备组成的网络?
我是否需要在 VLAN 10 和 30 之间创建一座桥,并在 VLAN 20 和 30 之间创建第二座桥?这是否也会隐式桥接 VLAN 10 和 20(不可接受)?如果是这样,我是否可以通过防火墙规则禁止这种隐式桥接(例如丢弃从 VLAN 10 到 VLAN 20 的所有数据包,反之亦然)?
对此类布局进行子网划分的最佳方法是什么?我该如何设置 DHCP 来实现它?我目前的想法如下:
- 192.168。10.x 代表 VLAN10,192.168。20.x 代表 VLAN20,以及 192.168.三十.x 代表 VLAN三十
- 子网 255.255.0.0 适用于所有人(以便设备跨 VLAN 发送广播)
是否有可能在基于 Vyatta-Linux 的路由器上实现这样的设置,尤其是 DHCP 部分?它似乎根据我提供的子网来确定要监听哪些接口。因此,要让它监听 eth0.10(VLAN 10),我需要给它子网 192.168.10.0/24,但我希望告诉 DHCP 客户端子网是 255.255.0.0,而不是 255.255.255.0。
我需要设置哪些其他服务/转发(例如 ARP 代理)才能合理地确保所有常见的自动发现机制都能正常工作?
任何帮助将非常感激。
答案1
您和 @joeqwerty 在评论中就该问题进行了激烈的讨论,我将对此发表一些看法。
让我们从一个简单的基础开始:有多种标准和大量专有的“自动发现”协议——即客户端和服务器主机或程序相互定位的协议。将“自动发现”说成是一个整体实体是在回避整个问题。始终记住这一点。
您已将网络划分为多个虚拟 LAN。广播不会在这些虚拟 LAN 之间进行通信。许多(大多数?)自动发现协议都是基于广播的,因此它们无法找到其他 VLAN 中的主机。
仅仅将网络桥接在一起对您没有帮助,因为实际上,您只会将所有网络重新组合成一个大 LAN。划分为多个 VLAN 的所有其他原因都已不复存在。
在 VLAN 之间选择性转发协议会使事情变得有趣。
标准的基于 IP 的自动发现协议,如 NetBIOS“浏览”、mDNS(称为“ZeroConf”或“Bonjour”)等,可以通过适当的应用层网关软件在 IP 子网(通常通过路由器上的逻辑子接口 1 对 1 映射到 VLAN)之间转发。有多家供应商提供各种产品可以做到这一点(例如,使用您最喜欢的搜索引擎并搜索“在子网之间转发 bonjour”,您会找到很多东西。)
专有的自动发现协议将更加成问题。您必须希望有人编写了软件来跨 VLAN 或子网转发它们。仅在第 2 层工作的协议将更加成问题,因为为了处理交换机维护的用于记录 MAC 地址所关联 VLAN 的邻接表,任何跨 VLAN 网关软件都必须具有某种代理 MAC 功能。
您所寻求的并非不可能,但必须根据具体协议进行处理。没有“魔杖”解决方案可以帮助您实现所寻求的结果。