xpt*_*xpt 4 networking ethernet bridge network-interface libvirt
我正在遵循这篇优秀的文章来使用 libvirt 和 KVM 的桥接网络,但是我缺乏一些基础知识来完全理解/遵循它。
\n文章说,
\n\n\n\n
\n- 任何物理接口都不应该添加到 virbr0 网桥,因为它使用 NAT 来提供连接。
\n- 当我们创建和启动虚拟机时,虚拟接口将添加到桥中。
\n
最重要的是,
\n\n\n\n
\n- 将物理以太网接口添加到网桥时,您不能\xe2\x80\x99t 使用主以太网接口。
\n- 因此我们必须使用一个额外的接口。
\n
我不太清楚物理接口、虚拟接口、主接口和附加接口之间的关系,因此当文章说他正在使用附加接口enp0s29u1u1时,这是一个以太网转USB适配器提供的接口。我完全不知道我应该为我的案例使用什么附加接口,这是一个普通的 Debian,带有一个以太网卡。
\n请帮忙。
\n“物理接口”是指计算机上的实际网络设备,即可以插入以太网电缆或无线网络设备的设备。
\n“虚拟接口”是指不与特定物理设备关联的网络接口:so、vlan 接口、网桥、tun/tap 接口等。
\n您的“主接口”是与您系统的主 IP 地址(和默认路由)关联的网络接口。
\n在这种情况下,“附加接口”是指除主接口之外的任何物理接口。
\n这两个说法...
\n\n\n\n
\n- 任何物理接口都不应该添加到 virbr0 网桥,因为它使用 NAT 来提供连接。
\n- 当我们创建和启动虚拟机时,虚拟接口将添加到桥中。
\n
...是正确的。该virbr0
网桥与 libvirt“默认”网络关联,并使用 NAT 将虚拟机连接到外界;您不想向此网桥添加物理接口。
当您启动虚拟机并将其添加到网桥时,Libvirt 会创建 tun/tap 设备。
\n然而,下面的声明...
\n\n\n\n
\n- 将物理以太网接口添加到网桥时,\xe2\x80\x99t 不能使用主以太网接口。
\n
……有点简化。您可以使用主以太网接口作为网桥的一部分,但该过程比使用辅助接口时稍微复杂一些(并且是意外禁用互联网连接的好方法)。一般来说,您需要:
\n例如,在我的系统上,eth0
看起来像这样:
# 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
到桥接器,我首先创建一个桥接设备:
# ip link add br-example type bridge\n
Run Code Online (Sandbox Code Playgroud)\n然后添加eth0
到网桥并从中删除任何现有地址eth0
:
# ip link set eth0 master br-example\n# ip addr flush eth0\n
Run Code Online (Sandbox Code Playgroud)\neth0
添加原来的地址br-example
并恢复默认路由:
# 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