向 kvm qemu 桥添加物理以太网接口

xpt*_*xpt 4 networking ethernet bridge network-interface libvirt

我正在遵循这篇优秀的文章来使用 libvirt 和 KVM 的桥接网络,但是我缺乏一些基础知识来完全理解/遵循它。

\n

文章说,

\n
\n
    \n
  • 任何物理接口都不应该添加到 virbr0 网桥,因为它使用 NAT 来提供连接。
  • \n
  • 当我们创建和启动虚拟机时,虚拟接口将添加到桥中。
  • \n
\n
\n

最重要的是,

\n
\n
    \n
  • 将物理以太网接口添加到网桥时,您不能\xe2\x80\x99t 使用主以太网接口。
  • \n
  • 因此我们必须使用一个额外的接口。
  • \n
\n
\n

我不太清楚物理接口、虚拟接口、主接口和附加接口之间的关系,因此当文章说他正在使用附加接口enp0s29u1u1时,这是一个以太网转USB适配器提供的接口。我完全不知道应该为我的案例使用什么附加接口,这是一个普通的 Debian,带有一个以太网卡。

\n

请帮忙。

\n

lar*_*sks 7

“物理接口”是指计算机上的实际网络设备,即可以插入以太网电缆或无线网络设备的设备。

\n

“虚拟接口”是指不与特定物理设备关联的网络接口:so、vlan 接口、网桥、tun/tap 接口等。

\n

您的“主接口”是与您系统的主 IP 地址(和默认路由)关联的网络接口。

\n

在这种情况下,“附加接口”是指除主接口之外的任何物理接口。

\n
\n

这两个说法...

\n
\n
    \n
  • 任何物理接口都不应该添加到 virbr0 网桥,因为它使用 NAT 来提供连接。
  • \n
  • 当我们创建和启动虚拟机时,虚拟接口将添加到桥中。
  • \n
\n
\n

...是正确的。该virbr0网桥与 libvirt“默认”网络关联,并使用 NAT 将虚拟机连接到外界;您不想向此网桥添加物理接口。

\n

当您启动虚拟机并将其添加到网桥时,Libvirt 会创建 tun/tap 设备。

\n

然而,下面的声明...

\n
\n
    \n
  • 将物理以太网接口添加到网桥时,\xe2\x80\x99t 不能使用主以太网接口。
  • \n
\n
\n

……有点简化。您可以使用主以太网接口作为网桥的一部分,但该过程比使用辅助接口时稍微复杂一些(并且是意外禁用互联网连接的好方法)。一般来说,您需要:

\n
    \n
  1. 创建桥接设备
  2. \n
  3. 将您的以太网接口添加到网桥
  4. \n
  5. 使用之前与主界面关联的 IP 地址配置桥接设备
  6. \n
\n

例如,在我的系统上,eth0看起来像这样:

\n
# ip addr show eth0\n2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000\n    link/ether 52:54:00:9b:a0:2a brd ff:ff:ff:ff:ff:ff\n    altname enp1s0\n    inet 192.168.122.64/24 brd 192.168.122.255 scope global dynamic noprefixroute eth0\n       valid_lft 3570sec preferred_lft 3570sec\n    inet6 fe80::d6:992e:d74a:c05a/64 scope link noprefixroute\n       valid_lft forever preferred_lft forever\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的系统上唯一的物理接口。我们还需要知道我们的默认路由:

\n
# ip route\ndefault via 192.168.122.1 dev eth0 proto dhcp metric 100\n192.168.122.0/24 dev eth0 proto kernel scope link src 192.168.122.64 metric 100\n
Run Code Online (Sandbox Code Playgroud)\n

要添加eth0到桥接器,我首先创建一个桥接设备:

\n
# ip link add br-example type bridge\n
Run Code Online (Sandbox Code Playgroud)\n

然后添加eth0到网桥并从中删除任何现有地址eth0

\n
# ip link set eth0 master br-example\n# ip addr flush eth0\n
Run Code Online (Sandbox Code Playgroud)\n

eth0添加原来的地址br-example并恢复默认路由:

\n
# ip addr add 192.168.122.64/24 dev br-example\n# ip link set br-example up\n# ip route add default via 192.168.122.1\n
Run Code Online (Sandbox Code Playgroud)\n

此时,(a) 我有一个网桥br-example,(b)eth0是该网桥的成员,并且 (c) 我仍然具有连接(通过网桥)eth0。按照链接文章中的说明,我可以创建一个与之关联的 libvirt 网络br-example并开始将虚拟机附加到它;从网络角度来看,这些机器看起来就像物理上连接到本地网络的任何其他设备。

\n

当然,上述过程不会导致持久性更改;这如何因发行版而异,并且您链接到的文章提供了该过程的良好概述。

\n