我只是想了解 VLAN 如何工作。所以我想到在几台 ubuntu 机器上进行设置,但是却不起作用。我想我对 VLAN 有一些错误的理解。如有错误,请纠正我。
以下是我遵循的步骤:
在 Ubuntu 机器 1 上:
$ sudo modprobe 8021q
$ ifconfig eth0 0.0.0.0 up
$ sudo vconfig add eth0 6
$ sudo ifconfig eth0.6 192.168.0.100 broadcast 192.168.0.255 netmask 255.255.255.0
$ sudo ifconfig eth0 up
在 Ubuntu 机器 2 上:
$ sudo modprobe 8021q
$ ifconfig eth0 0.0.0.0 up
$ sudo vconfig add eth0 6
$ sudo ifconfig eth0.6 192.168.0.200 broadcast 192.168.0.255 netmask 255.255.255.0
$ sudo ifconfig eth0 up
这两台机器都连接到我所在组织的网络。我听说不需要强制配置交换机/路由器的端口和 VLAN 映射(包含特定端口到特定 VLAN 的映射的信息)。它们自己会动态学习。是真的吗?我想是的,我的 NIC 也支持 VLAN
完成上述设置后,我就能看到具有相应IP的接口了。
/proc/net/vlan/config 中的条目如下:
VLAN Dev name | VLAN ID
Name-Type: VLAN_NAME_TYPE_RAW_PLUS_VID_NO_PAD
eth0.6 | 6 | eth0
/proc/net/vlan/eth0.6 中的条目
eth0.6 VID: 6 REORDER_HDR: 1 dev->priv_flags: 1
total frames received 0
total bytes received 0
Broadcast/Multicast Rcvd 0
total frames transmitted 232
total bytes transmitted 19220
Device: eth0
INGRESS priority mappings: 0:0 1:0 2:0 3:0 4:0 5:0 6:0 7:0
EGRESS priority mappings:
从机器 1:
$ ping 192.168.0.200
它不起作用。当我尝试使用 wireshark 时,我能够看到 ARP 数据包流,但无法找到相应的 MAC 地址。
答案1
您需要了解您的交换机是否能够支持 VLAN,以及支持哪种倾向。正如前面所说,这不是必需的,但是如果您的服务器连接到不同的交换机,例如,一个知道 VLAN,而另一个不知道,这可能会导致问题。理想情况下,对于每台服务器,您将交换机端口配置为“标记 VLAN”接口,然后在服务器连接到的每个交换机上配置 VLAN 6。然后您需要弄清楚:
a)两台服务器都在同一个交换机上,如果是这样那么以上就足够了。
b) 服务器位于两个独立的交换机上,两者之间有直接连接。在这种情况下,您必须以与配置服务器端口相同的方式配置交换机之间的端口。
c) 第一个服务器的交换机与第二个服务器的交换机之间至少有一个交换机。在这种情况下,您需要使服务器之间的每个交换机都具有匹配的 VLAN,并确保交换机之间的连接配置为标记的 VLAN 6。
答案2
尝试使用交叉电缆直接连接机器。如果 ping 成功(应该可以),则表示交换机存在问题。
对于 VLAN,您需要访问中继端口(通常交换机上的所有端口都是普通的“访问”端口,它们只承载未标记*流量 - 中继端口承载标记流量)。根据交换机的不同,如果它接收到访问端口的标记流量,其中一些会丢弃数据包,其中一些会删除(剥离)标记,(或者如果它是无名交换机,则会执行几乎任何“奇怪”的事情)。
*带标签 = 带有 VLAN 头的数据包,未带标签 = 不带 VLAN 头的“普通”数据包