网桥是第 2 层网络设备。在物理网桥上,我们只有一个 IP 地址用于操作和维护。我有点困惑为什么在 KVM 中我们需要为网桥设置 IP 地址。我的理解是,虚拟机的接口有一个 IP 地址,而连接到网桥的物理接口没有 IP 地址。这确保虚拟机的 IP 地址对外部可见。在服务器环境中,我只会对虚拟机使用静态 IP 寻址。
假设我对虚拟机使用静态 IP 寻址,那么为什么我需要网桥上的 IP 地址?
答案1
您不需要为网桥配置 IP,就像您不需要为以太网设备配置 IP 一样,在任何机器上(无论是主机/客户机还是其他机器)。
但是,如果您的设备/网桥没有 IP 地址,您就不能指望它能够被未正确配置的一方(无论是主机还是客户机)使用。
举例来说,如果我有一台 KVM 主机,主机上有一个名为“br_vm”的桥,我将其分配给所有 KVM 客户机作为它们的唯一接口(客户机很可能会将其称为“eth0”),并且如果主机上没有配置 br_vm,您就不能指望客户机能够通过他们的 eth0 接口与主机通信。
你问为什么桥接器需要 IP,答案是不需要。但是,如果你想知道在哪些情况下你希望在主机上为桥接器设置 IP,我可以想到以下几种情况:
- 您希望您的虚拟机能够与主机通信,即使仅使用 DHCP 或 DNS;
- 您可能希望禁用虚拟机到虚拟机的流量。如果您与许多虚拟机共享该桥接器,则值得考虑这一点;
- 除了为虚拟机设置的任何防火墙之外,您可能还希望在主机级别设置防火墙。如果所有虚拟机的策略、区域等都大致相同,则将所有防火墙规则集中在主机上是明智之举。如果所有规则、IP 地址、策略等都保存在一个地方,则更容易(尽管我会在每个虚拟机上设置基本的防火墙以防万一);
顺便说一句,您可以在客户虚拟机上使用动态 IP 寻址,这与主机是否在桥上具有 IP 无关(当然,除非主机是网络的 DHCP 服务器)。
答案2
我发现这更像是文档中的一个怪癖。我假设您的主机使用该/etc/network/interfaces
文件进行网络配置。
如果在桥接接口(本例中为 br0)节中指定地址 0.0.0.0,那么您就会得到您正在寻找的内容:连接到桥接器的 VM 仍然连接到网络,并保留自己的 IP。
但是,这样您就失去了该桥上的主机“端口”。如果(在文件中interfaces
)您指定 IP 地址,该地址实际上就成为该桥上的主机 IP,就像传统交换机上的管理接口一样。
请记住,网桥就像一个独立的交换机,但主机仍在“管理”它,因此添加 IP 只是添加一个寻址管理接口(如果有意义的话)
如果您的主机和我一样有两个 NIC:一个用于虚拟机,一个用于自身,那么您可以在“虚拟机桥”上放置一个地址 0.0.0.0,并依靠另一个物理 NIC 进行管理以获得类似的设置。
如果这不是您所要求的,请告诉我,我会进行修改以适应您的要求。
答案3
您不需要为 Linux 桥分配 IP。
/etc/network/interfaces
下面是一个示例,它看起来像是br0
桥,它连接到eth0
接口:
auto br0
iface br0 inet manual
bridge_ports eth0