我如何将 macvtap 接口传递给带有 libvirt 的 lxc 容器

How can i pass a macvtap interface to a lxc container with libvirt

我已经创建了一个类似的 macvtap 界面:

$ ip link add link wlan0 name gitea type macvtap
$ ip link set gitea address 68:61:6b:67:69:74 up
$ ip link show gitea

10: gitea@wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 500
    link/ether 68:61:6b:67:69:74 brd ff:ff:ff:ff:ff:ff

我的 gitea 容器有一个 xml 模板:

    <devices>
        <emulator>/usr/lib/libvirt/libvirt_lxc</emulator>
        <filesystem type='mount'>
            <source dir='/containers/prod/gitea' />
            <target dir='/' />
        </filesystem>
        <console type='pty' />
        <interface type='??'>
            <source dev='gitea'/>
        </filesystem>
    </devices>

但是接口部分应该写什么把创建的macvtap接口传给容器或者不能直接传的话重新创建接口应该写什么

提前感谢您的考虑。

libvirt 原生支持按需创建 macvtap 接口。参见:https://libvirt.org/formatdomain.html#elementsNICSDirect

在你的情况下,它看起来像:

<interface type='direct'>
  <source dev='wlan0' mode='bridge'/>
</interface>

但这不会给你 'gitea' 命名。另一个选项可能是 type='ethernet' 但我对此没有太多经验,我不确定它是否适合你。我认为 XML 看起来像

<interface type='ethernet'>
  <target dev='gitea'/>
</interface>

(此外,IIRC macvtap 不适用于 wifi 设备,因此不确定您的设置是否真的可以正常工作)