首先,我对 VLAN 比较陌生。我有一个 ZyXEL GS-1524 交换机和两个我想分开的网络,但它们需要使用相同的路由器。路由器在端口 22 上,端口 17 和 18 属于第一个网络,所有其他端口属于第二个网络。
问题是我的交换机要求所有端口都在 VLAN 1 上。只为第一个网络创建 VLAN 2 似乎不够,因为相同的端口属于 VLAN 1,而连接到属于 VLAN 1 的端口的任何东西都会能够到达它。
因此我创建了两个新的 VLAN:第一个网络的 VLAN 2 和第二个网络的 VLAN 3。我还更改了 PVID,以便在 17 或 18 上未标记的内容被标记为 VLAN 2 和其余的 VLAN 3。这样,未标记的内容被强制保留在通过 PVID 分配的 VLAN 中。
现在,如果连接的设备标记其数据包会怎样?标记的数据包不会重新标记。如果应该在 VLAN 2 上的设备将其数据包标记为 VLAN 3,我想不会有任何问题,因为它的端口不在 VLAN 3 中。但是,所有端口都在 VLAN 1 中——交换机没有给我任何选择。这是否意味着只要一方或双方(不确定)将其数据包标记为 VLAN 1,所有设备都可以相互访问?那将是对安全的破坏!
根据手册第 8.2 节,如果端口设置为静态 VLAN,则无论是否标记,在该端口上接收到的数据包都将发送到配置的 VLAN。
我最近刚买了一台二手 GS-1548,它运行与 GS-1524 相同的固件并出现相同的问题。
简而言之,基于 Web 的管理 UI 不允许从 VLAN 1(固定管理 VLAN)中删除端口。所有端口始终是 VLAN 1 的一部分,无论是标记模式还是未标记模式。您可以自由地从其他 VLAN 中删除端口,但“非成员”模式在 VLAN 1 中不可切换。
快速谷歌搜索显示此限制仅在客户端实现——在浏览器中运行的 JavaScript 代码中。一位名为berry120的 Blogger 用户发布了有关如何使用浏览器内置的 Web 开发人员工具手动绕过此检查的说明。
我更进一步并编写了一个用户脚本,它可以透明地绕过检查并允许您以与其他 VLAN 完全相同的方式管理 VLAN 1。你可以在这里找到它。
(同样的问题和修复也适用于ZyXEL Switch 1500 系列中的其他型号:ES-1528 和 ES-1552。)