网络接口不接收任何帧,除非处于混杂模式

网络接口不接收任何帧,除非处于混杂模式

我有一个网络接口拒绝接收发往它的流量(目标 MAC 等于接口配置的硬件地址)。

这是驱动程序信息;

# ethtool -i eth0
driver: ixgbe
version: 4.0.1-k
firmware-version: 0x80000534
expansion-rom-version:
bus-info: 0000:04:00.0
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: no

我一进入ifconfig eth0 promisc界面就会开始接收帧。 tcpdump 显示目标 MAC 确实与接口的配置 MAC 地址一致。

# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:01:02:03:04:05
          UP BROADCAST RUNNING PROMISC SLAVE MULTICAST  MTU:1508  Metric:1
          RX packets:600363 errors:0 dropped:0 overruns:0 frame:0
          TX packets:230866 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:904700278 (862.7 MiB)  TX bytes:16161664 (15.4 MiB)

为什么接口需要混杂?

答案1

我通读了 ixgbe 驱动程序源代码来寻找答案。

据我所知,该驱动程序利用了硬件 VLAn 过滤(某些支持票证上已建议其原因包括安全性和性能)。

此行为通过 IXGBE_VLNCTRL_VFE VLAN 控制标志进行控制。

成功地将这些过滤器遍历到内核的两个选项是:

  • 在接口上启用混杂模式
  • 将 VLAN 添加到接口(例如使用 vconfig)

相关内容