无线主机中的 KVM 桥接网络

KVM bridged networking in a wirelss host

我正在学习 KVM 网络,我想到了这个问题: 当我将 KVM 域设置为使用桥接网络(无 NAT)时,我看到 KVM(或 libvirt)创建了一个具有 virbr0tap0 作为主人在我的情况下。 现在,我没有看到任何其他接口参与桥接 (brctl show)。 我在做实验时在我的主机上使用无线连接,我在来宾中有连接。

好吧,我现在很困惑。我希望能得到专家的一些启发。谢谢!

So how the host ends up providing connection to the guest?

对于 virbr0 上的默认 libvirt 网络,libvirt 创建 NAT 规则来伪装来自连接到该网桥的主机的出站连接。例如,在我的系统上,我们看到:

# iptables -t nat -S
[...]
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p tcp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -p udp -j MASQUERADE --to-ports 1024-65535
-A POSTROUTING -s 192.168.122.0/24 ! -d 192.168.122.0/24 -j MASQUERADE
[...]

As far as I understand, a bridge should connect one interface to another. So what sense makes a bridge with a single interface?

网桥为您创建的所有使用该 libvirt 的虚拟机形成一个虚拟网络 "network"。如果你启动第二个虚拟机,你会看到桥上有多个接口。

Besides, wireless interfaces are not supposed to be able to be included in a bridge right?

从上面可以看出,出接口不需要参与桥接。您的虚拟机与外界之间的连接是路由(第 3 层)连接,而不是第 2 层连接。

why is the bridge needed? What is its role? Wouldn't it be enough then to have tap0?

网桥为您的虚拟机创建一个虚拟第 2 层网络。

  • 这允许您的 vms 直接相互对话。
  • 它允许虚拟机(和主机)之间的广播流量。
  • 它允许将策略(如防火墙规则)应用到虚拟网络,而不是单个计算机。
  • 它允许 libvirt 将 DHCP 服务器连接到网络以服务来自虚拟机的 DHCP 请求。
  • 等等