Docker

docker執行時KVM客戶端沒有帶有主機橋的dhcp

  • April 6, 2021

Ubuntu 20.04

QEMU macvtap(工作)

如果我使用以下網路配置:

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

並且 KVM 客戶端網路使用 ‘Host device 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 客戶端網路使用 ‘Bridge (Host device 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 與主機橋一起使用?

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 客戶端:“Bridge br0: Host device eno1”。客戶現在可以

  • 拿起ip4 / ip6
  • kvm客戶端可以互相ssh
  • kvm 客戶端可以 ssh 到主機
  • 主機可以 ssh 到 kvm 客戶端

我不確定它是升級到 20.10 還是刪除 01-netcfg.yaml 中的額外屬性進行了修復,但它現在執行良好。

引用自:https://unix.stackexchange.com/questions/594387