![Linux 桥接情况下的 VM 主机管理](https://linux22.com/image/89480/Linux%20%E6%A1%A5%E6%8E%A5%E6%83%85%E5%86%B5%E4%B8%8B%E7%9A%84%20VM%20%E4%B8%BB%E6%9C%BA%E7%AE%A1%E7%90%86.png)
我有一个虚拟机主机(vm-host
),它运行两个 qemu-kvm 虚拟机轻敲模式。这意味着网络拓扑如下所示:
由于我需要vm-host
通过 VLAN 123 进行管理,我看到了三种方法:
- 我
eth0.123
在中创建一个接口vm-host
并将管理 IP 配置为eth0.123
eth0.123
我在和之间创建一个桥梁br0
,并将管理 IP 配置为br0
- 我将管理 IP 直接配置为
eth0
invm-host
并配置r1
为在将管理流量发送到之前删除管理流量的 VLAN 标记 123vm-host
有没有一种设计明显优于其他设计?我猜想,从角度来看,第三种设计选项是最好的,vm-host
因为服务器不需要像前两个选项那样弹出 VLAN 标签,并且管理流量帧不会像前两个选项br0
那样通过 Linux 交换机。的第二个选择。换句话说,这似乎是最简单的设计选项。第二个选项似乎是最糟糕的一个,因为我看不出通过 Linux 桥传输流量有任何优势。
答案1
如果你的盒子有多个 VLAN(在同一接口上),我会将它们全部标记上。 (而不是例如两个标记和一个未标记。)这使得以后更容易弄清楚配置,因为它明确了所讨论的 VLAN 是什么。无论如何,盒子必须处理 VLAN 标签,这并不是说它会成为瓶颈(与解析 IP/TCP/SSH/其他内容相比)。
另外,如果您确实不需要将管理 VLAN 桥接至任何设备,则无需将其放入网桥中。不为其创建网桥可以清楚地表明,所讨论的 VLAN 不适用于您的虚拟机,而是适用于主机本身。 (假设每个 VLAN 网桥。)
因此,在这些选择中,我将管理放在 eth0.123 上。
另一方面,您可以将整个独立的 NIC 专用于管理。除了保持事物干净和独立之外,它还有一个优点,即管理流量和虚拟机不会争夺相同的带宽。即使虚拟机网络上的极端流量也无法直接淹没管理访问。 (当然,假设盒子本身和开关可以跟上。)
(我不确定是否有任何“硬”理由去做其中之一。正如你所说,有几种方法可以做到这一点,这可能取决于个人喜好。如果有疑问,请使用最简单的方法.)
答案2
eth0.123 上的管理 ip
缺点 - 标记和未标记的流量都在网桥中流动,因此虚拟机可能会伪造 vlan123。为了防止它,您需要在网桥中过滤标记的流量(ebtables工具)
ebtables -t filter -A FORWARD -p 0x88a8 -j DROP ebtables -t filter -A FORWARD -p 0x8100 -j DROP
每个 VLAN 网桥(如 @ilkkachu 所说)是可能的,但它会杀死那里并且“未标记”网桥(直接绑定到物理接口)遇到与 1 相同的问题
必须可以在网桥 (br0.123) 上设置 VLAN,但它又与 1 非常相似,并且混合多个 VLAN 的网桥可能会受到 VLAN 之间 MAC 地址不唯一的影响。
在路由器上操纵 VLAN,使两个 VLAN 都未标记,看起来很混乱,并且在安全方面不提供主机管理和突发之间的隔离。但有可能,路由器上基于 MAC 的 VLAN 可能是合理的。如果目标是隔离广播域,但不能安全地将主机与虚拟机隔离。