我在哪个vlan?

我在哪个vlan?

我的问题:有什么方法可以检测我在哪个vlan吗? tcpdump 可以显示这个吗?或者我可以强制一个 GENERAL 开关对我说吗?

答案1

我不确定您所说的通用交换机是什么意思,但对于大多数交换机来说,当您连接到“访问”端口时,无法看到您所在的 VLAN。

也就是说,使用 CDP (Cisco) 和 LLDP (Juniper) 协议,您可以找出您所在的 VLAN。在访问端口上启用 CDP/LLDP 可以说存在安全风险(信息泄露),因此可能无法在您的网络上启用它。您可以使用 tcpdump 拆解 CDP/LLDP 数据包来查找 VLAN 号。

对于思科 CDP:

sudo tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether[20:2] == 0x2000' 

对于瞻博网络 LLDP:

sudo tcpdump -nn -v -i eth0 -s 1500 -c 1 '(ether[12:2]=0x88cc or ether[20:2]=0x2000)'

答案2

传统上,从客户端计算机上,您无法判断自己位于哪个 VLAN。您可以查看 IP 地址和子网掩码并确定 IP 位于哪个子网,但不能确定 VLAN。但是,那Wireshark 维基有一些关于捕获 VLAN 标签的有趣信息。

在 VLAN 上捕获时,您不一定会看到数据包中的 VLAN 标记。

例如,至少在某些操作系统中,您可能有多个可以捕获的网络接口设备 - 一个与物理网络适配器对应的“原始接口”,以及一个在其上发生流量的“VLAN 接口”。 VLAN 标记已删除。操作系统的网络堆栈将连接到 VLAN 接口,并且该接口在网络堆栈中将显示为具有比正常情况更小的 MTU 的以太网接口(为 VLAN 标记留出空间)。在这些操作系统上,为了查看原始以太网数据包,而不是“去 VLAN 化”数据包,您必须不在 VLAN 的虚拟接口上捕获,而是在与物理网络设备对应的接口上捕获(如果可能)。

以下是有关在各种操作系统上捕获 VLAN 标记的一些详细信息。如果操作系统或网络适配器驱动程序不允许捕获 VLAN 标记,请在 VLAN 交换机上设置端口镜像(或 Cisco 称之为“端口跨越”)并连接独立系统,例如笔记本电脑,到镜像端口,并且不要将连接到该端口的接口配置为 VLAN 成员。您肯定会看到 VLAN 标记,无论独立系统运行什么操作系统或您使用什么类型的网络适配器重新使用。

Linux

要启用 VLAN 标记,您需要两个东西:vlan rpm(例如 vlan-1.8-23)和 8021q 内核模块。安装后,vconfig 命令可用于在现有物理设备上创建 VLAN 接口。有关更多信息,请参见 vconfig(8) 手册页。

设置 VLAN 接口并且流量开始流动后,您可以在您选择的 VLAN 接口(例如,VLAN 100 的 eth0.100)或底层物理接口(例如,eth0)上运行 Wireshark 并进行捕获。如果选择前者,您将只看到发往该 VLAN 的帧;如果选择前者,您将只看到发往该 VLAN 的帧。如果您选择后者,您可能会看到所有帧,也可能只会看到未标记的帧(如果有)。它取决于 NIC、NIC 固件、驱动程序以及月亮和行星的对齐方式。 (枚举各种适配器、固件版本和驱动程序行为的表格可能会很有用。-Guy Harris)

如果您在配置了 VLAN 的主机系统上进行捕获,则即使您在物理设备上进行捕获,您也可能不会在捕获的帧中看到 VLAN 标记。驱动程序在 pcap 库看到标签之前剥离标签。请参阅下面 Windows 部分中提到的 Intel 技术说明。 (Linux 驱动程序是否支持获取 VLAN 标记,也许可以使用驱动程序配置选项或其他选项,就像 Intel Windows 驱动程序那样?-Guy Harris)(e100 驱动程序在 2.4.26 上运行良好 - Jaap Keuter)

视窗

Windows 没有内置的 VLAN 支持机制。没有可以捕获的单独的物理和 VLAN 接口,除非存在添加此类支持的专用驱动程序。

因此,您是否在 Wireshark 中看到 VLAN 标记将取决于您拥有的网络适配器及其驱动程序对 VLAN 标记的处理方式。

大多数“简单”网络适配器(例如广泛使用的 Realtek RTL 8139)及其驱动程序将简单地将 VLAN 标记传递到上层来处理这些问题。在这种情况下,Wireshark 将看到 VLAN 标记并可以处理和显示它们。

一些更复杂的适配器将处理适配器和/或驱动程序中的 VLAN 标记。这包括一些 Intel 适配器,据我所知,Broadcom 千兆位芯片组(基于 NetXtreme / 57XX 的芯片)。此外,具有专门驱动程序的卡也可能遵循此路径,以防止来自“真正”驱动程序的干扰。

答案3

lldpd 包可能是最好的解决方案。

lldpctl

lldpd 的缺点是它使用硬编码的 MAC 地址发送 ARP 请求。如果您将其安装在同一台交换机上的多台计算机上,则会出现“mac 欺骗”场景。处理此类数据包有其自身的开销,这将开始导致交换机的 CPU 激增。

答案4

我相信如果您运行ifconfig -a它,将会显示作为 VLAN 分接头的设备。据我了解,VLAN ID 是接口名称的后缀部分。

例如,如果您的系统包含以太网设备 ,eth0则通过此接口关联的任何 VLAN ID 都会有相应的后缀,其后带有 VLAN ID,例如eth0.192。请参阅标题为的参考文献:9.2.6。设置 802.1q VLAN 标记获取更多信息和示例。

使用tcpdump并假设数据包包含 802.1q VLAN 标记,您可以执行以下操作:

$ tcpdump -s0 -nnpi eth0 vlan 100

其中 100 是 VLAN ID。

笔记:tcpdump参考资料部分的第二个链接有一个完整的示例,显示了使用 802.1Q 进行家庭网络设置的设置和询问。

参考

相关内容