Docker
docker執行時KVM客戶端沒有帶有主機橋的dhcp
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 中的額外屬性進行了修復,但它現在執行良好。