当 docker 运行时,KVM 客户端没有带有主机桥的 dhcp

当 docker 运行时,KVM 客户端没有带有主机桥的 dhcp

乌班图20.04

QEMU macvtap(有效)

如果我使用以下网络配置:

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: yes
      dhcp6: yes

KVM 客户端网络使用“主机设备 eno1:macvtap”,IPv4、IPv6 均有效。

tcpdump port 67 or port 68 -i eno1 -nN将显示 dhcp 请求,我的 dhcp 服务器上的 tcpdump 也会看到传入的请求。

带主桥的 QEMU(不工作)

但是,如果我使用主机桥网络配置:

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: false
      dhcp6: false
      optional: true
      link-local: []
  bridges:
    br0:
      parameters:
        stp: false
        forward-delay: 0
      interfaces:
        - eno1
      dhcp4: true
      dhcp6: true

并且 KVM 客户端网络使用“桥接器(主机设备 eno1)”,则只有 IPv6 有效,IPv4 无法获取 DHCP。

tcpdump port 67 or port 68 -i br0 -nN将显示 dhcp 请求,但我的 dhcp 服务器上的 tcpdump 看不到它们。

但只有 dhcp 不起作用。如果我手动设置 IPv4 地址和路由,传入和传出的 IPv4 流量都会工作。


我发现如果我完全禁用 docker:

sudo systemctl diable docker.service containerd.service
reboot

然后 qemu 与主机桥将完美工作。

在运行 docker 时如何将 qemu 与主机桥结合使用?

答案1

ubuntu升级到20.10后,docker和kvm+bridge模式不再打架了。

我在 /etc/netplan/01-netcfg.yaml 中创建了一个 br0

network:
  version: 2
  renderer: networkd
  ethernets:
    eno1:
      dhcp4: false
      dhcp6: false
  bridges:
    br0:
      interfaces: [eno1]
      dhcp4: true
      dhcp6: true

使用 NIC 创建/更改 KVM 客户端:“网桥 br0:主机设备 eno1”。客户现在可以

  • 获取ip4/ip6
  • kvm客户端可以互相ssh
  • kvm客户端可以ssh到主机
  • 主机可以 ssh 到 kvm 客户端

我不确定是升级到 20.10 还是删除 01-netcfg.yaml 中的额外属性来修复此问题,但它现在工作正常。

相关内容