我正在尝试熟悉配置 VLAN (802.1Q)。在我的 TL-SG108PE 交换机中,我已将端口 5 标记为 VLAN 507,并将端口 6 设为该 VLAN 的一部分(未标记):
端口 6 连接到分配 IP 地址(DHCP)的路由器。
端口 5 连接到运行 Debian 11 的 Pi 设备,我正在尝试让 VLAN 在该设备上正常工作:
auto eth0.507
iface eth0.507 inet dhcp
但是 Pi 没有出现在网络上(这是我试图解决的最终问题,但是等等,这个问题是不同的)。
但是,如果我将 Pi 的网络配置恢复为非 VLAN 默认值:
auto eth0
iface eth0 inet dhcp
— 它可以顺利地工作,就像连接到交换机上的非 VLAN 端口一样!
怎么会这样呢?
如果我的理解正确,由于端口 5 已标记,交换机将向从其发出的所有数据包添加额外的数据包头,而 Pi 未配置为识别 VLAN 507,因此应该不是能够连接。
那么,为什么系统表现得好像端口 5 是非 VLAN 的呢?
是不是 Pi 只是忽略了网络数据包上的 VLAN 标头,然后就识别它们了?
答案1
当路由器尝试发送未标记的数据包(DHCP 回复您的 Pi)时,交换机将使用该端口的“PVID”设置作为隐含的 VLAN 标记。如果您尚未将端口 6 的 PVID 从默认值更改为其他值,则未标记的数据包将被视为属于 VLAN 1,而不是 VLAN 507。
此外,端口 6 还具有二未标记的 VLAN(1 和 507 都在同一端口上配置为未标记)。这不会正常工作 – 这意味着路由器将接收来自两个都VLAN,如果没有 VLAN 标签,就无法正确区分它们,也无法对它们做出正确的响应。
在“802.1Q PVID设置”中,确保端口6的PVID设置为507。
在“802.1Q VLAN”中,将 VLAN 1 配置为将端口 6 设置为“非成员”,仅保留 1-5 和 7-8 未标记。
(有些交换机强制每个端口只使用一个未标记的 VLAN,并自动设置其 PVID 以匹配,但并非所有交换机都这样做。)