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 -nNdhcp 요청이 표시되고 내 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 -nNdhcp 요청이 표시되지만 내 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: "브리지 br0:호스트 장치 eno1"을 사용하여 KVM 클라이언트를 생성/변경합니다. 고객은 이제 다음을 수행할 수 있습니다.

  • IP4/IP6 받기
  • kvm 클라이언트는 서로 SSH를 통해 연결할 수 있습니다.
  • kvm 클라이언트는 SSH를 통해 호스트에 연결할 수 있습니다.
  • 호스트는 kvm 클라이언트에 SSH로 연결할 수 있습니다.

20.10으로 업그레이드했는지 01-netcfg.yaml에서 추가 속성을 삭제했는지 확실하지 않지만 지금은 잘 작동합니다.

관련 정보