我在 ESXi 上有一个带有单个网络接口的 Ubuntu 虚拟机,该接口是一个标记为 VLAN 4095 的端口组,因此它可以访问所有标记的 VLAN。本机 VLAN 是 37。我使用 Netplan 创建了几个 VLAN 接口,如下所示:
network:
ethernets:
ens160:
dhcp4: true
version: 2
vlans:
vlan98:
id: 98
link: ens160
dhcp4: true
optional: true
link-local: []
我有一项服务在所有接口(包括主接口)上接收多播流量,ens160
并且我希望每个接口的流量保持独立。我面临的问题是: ens160
接收全部数据包,包括标记的数据包。有没有办法让这个主界面仅有的看到未标记的数据包吗?
# ip -d link show
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:07:84:53 brd ff:ff:ff:ff:ff:ff promiscuity 13 minmtu 60 maxmtu 9000 addrgenmode eui64 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
25: vlan98@ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:07:84:53 brd ff:ff:ff:ff:ff:ff promiscuity 1 minmtu 0 maxmtu 65535
vlan protocol 802.1Q id 98 <REORDER_HDR> addrgenmode none numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535
显示我想排除的数据包的示例:
# tcpdump -ni ens160 -e host 10.37.154.4
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens160, link-type EN10MB (Ethernet), capture size 262144 bytes
15:55:00.023677 00:60:74:fb:d0:87 > 01:00:5e:00:01:81, ethertype 802.1Q (0x8100), length 90: vlan 98, p 0, ethertype IPv4, 10.37.154.4.319 > 224.0.1.129.319: UDP, length 44
我尝试在 ens160 上禁用 dhcp,然后为 vlan37 添加一个附加接口,但这会导致网络完全瘫痪。