我正在尝试找出我的主机接收或发送给其他主机的 VLAN 标记数据包。我试过
tcpdump -i eth1 vlan 0x0070
但它不起作用。有人试过通过 tcpdump 查看 vlan 数据包吗?在网上搜索找不到太多帮助!
答案1
如果您的主机连接到接入端口,交换机可能会在到达您的主机之前剥离 VLAN 标记。因此,在相关主机上运行 TCPDump 永远不会看到 VLAN 标记。
您需要设置一个 SPAN 端口和/或在网络中的某处引入网络分接头,以便在标签从数据包中删除之前抓取流量,以便在网络转储/跟踪中看到它们。
答案2
您实际上可以使用 Linux 来“解码”802.1q(VLAN 标记)。您可以有效地将 Linux 变成“棒上的路由器”,并在花哨的思科第 2 层交换机(具有许多 VLAN)上使用单个以太网端口在 VLAN 之间进行路由。
主以太网具有与 vlan id 相对应的“子接口”。然后,您可以单独对子接口进行路由和 iptables(防火墙)。
这是一种简单的方法,可以将外围 Linux 防火墙连接到 ISp,并在其后面连接 10 个 Vlan,但只使用一个以太网接口。
点 q 是标准,尽管思科认为它是编造的,但它在 Linux 上运行良好。
编辑:启用此功能
modprobe 8021q
然后你可以运行 tcpdump 来监听子接口
答案3
老实说,我认为你使用了错误的工具 - tcpdump 与 IP(L3)的联系更紧密,而 VLAN 是 L2 的一个功能 - 请尝试使用 wireshark。