QEMU Deb9 게스트 그래픽 설치는 설치 중에 DHCP 응답을 받을 수 없습니다.

QEMU Deb9 게스트 그래픽 설치는 설치 중에 DHCP 응답을 받을 수 없습니다.

내 목표는 호스트의 브리지 인터페이스를 사용하여 일부 QEMU/libvirt 기반 게스트를 설정하여 각 게스트 VM이 내 LAN 네트워크에서 DHCP 할당 IP 주소를 갖도록 하는 것입니다. 나는 너무 복잡하지 않은 가상 머신 구성을 성공적으로 설정하고 사용했으며 내 하드웨어가 가상화를 지원한다는 것을 알고 있으므로 말하자면 본론으로 들어가려고 합니다.

토폴로지

각 노드는 1Gbps 이더넷을 통해 연결됩니다(따라서 무선 인터페이스 없음).

[라우터]---[스위치 1]---[스위치 2]---[호스트]

주인

  • 우분투 16.04.5 실행
  • 관리 활동을 위해 dhcp로 구성된 1x 1Gbps NIC(em1)
  • 고정 IP 주소(br0/eth1 슬레이브)가 있는 브리지로 구성된 1x 1Gbps NIC
  • 브리지 연결은 동일한 LAN 네트워크에 있는 다른 호스트의 SSH 및 ping을 사용하여 성공적으로 테스트되었습니다. 인터페이스 파일에서 스패닝 트리 프로토콜을 명시적으로 비활성화했으며 brctl show 명령은 eth1이 유일한 인터페이스인 브리지를 올바르게 표시합니다.

게스트 설치를 위해 virt-install을 사용해 보세요

설치 명령

virt-install --name={guest-name} --vcpus=2 --memory=4096 --network bridge=br0
--cdrom={.iso-img-path} --disk size=20,path={diskimg-path} --os-variant=debian8
--graphics vnc,password={pass},listen=0.0.0.0 --noautoconsole

지금까지 관찰된 동작 및 문제 해결

  • 성공적인 설치를 위해 게스트 VM VNC에 연결

  • Debian 9 그래픽 설치 프로그램이 호스트 브리지 인터페이스를 통해 DHCP에 대해 게스트 네트워크 인터페이스를 자동으로 구성할 수 없다고 보고합니다.

  • 주문하다'sudo tcpdump -i br0 | sudo tcpdump -i br0 |'(아래 출력)은 브로드캐스트되는 요청만 표시하고 응답은 표시하지 않습니다.

10:08:57.833669 IP 0.0.0.0.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, 52:54:00:8a:9e:69에서 요청(oui 알 수 없음), 길이 300

기술적인 배경 지식이 있지만 낮은 수준의 세부 사항과 DHCP 문제를 올바르게 해결하는 방법에 익숙하지 않습니다.

업데이트 1

Ubuntu 호스트에 tshark를 구성하고 Wireshark를 실행하는 노트북을 이더넷을 통해 라우터의 스위치 포트에 연결했습니다.

참고: 제가 아는 한, 제 라우터는 포트 미러링이나 포트 모니터링을 지원하지 않습니다.

새로운 토폴로지

[라우터]---[스위치1]---[스위치2]---[호스트-Tshark]

|

[Deb9.5-Wireshark]

Tshark 명령 및 결과

[]$ tshark -w out.pcap -f "udp port 68 or port 67" -i any

[]$ tshark -r out.pcap -V | grep -e Frame -e Bootstrap -e User\ Datagram\ Protocol -e Bootp\ flags -e "Internet Protocol Version 4"
Frame 295: 344 bytes on wire (2752 bits), 344 bytes captured (2752 bits) on interface 0
    Frame Number: 295
    Frame Length: 344 bytes (2752 bits)
    [Frame is marked: False]
    [Frame is ignored: False]
Internet Protocol Version 4, Src: 0.0.0.0, Dst: 255.255.255.255
User Datagram Protocol, Src Port: 68, Dst Port: 67
Bootstrap Protocol (Discover)
    Bootp flags: 0x0000 (Unicast)
  • 위에서 캡처 명령을 시작한 다음 빠르게 Debian 9 설치 VNC로 이동하고 DHCP 자동 구성을 다시 시도한 다음 캡처를 빠르게 중지했습니다.
  • 캡처가 시작된 후 캡처 횟수가 증가하기 시작했지만 그래픽 설치에 DHCP 구성을 다시 시도하도록 지시할 때까지 모든 패킷은 위의 출력과 동일하게 보였습니다. (일부 패킷이 전달 루프에 걸려 있을 수 있습니까?)
  • 호스트에서 Tshark를 사용하기 전에 랩톱에서 Wireshark를 사용하여 집에 와서 몇 가지 필터를 사용해 보았지만 Wireshark로 테스트하는 동안 DHCP/BOOTP(검색) 패킷이 들어오는 것을 보지 못했습니다.
  • Bootp 플래그는 유니캐스트로 표시되어 있지만 IP src/dst는 Discover 패킷을 브로드캐스트하고 응답을 기다리는 것처럼 보이게 만듭니다. DHCP에 대해 더 잘 아는 사람이라면 누구나 이 문제를 이해하는 데 도움을 줄 수 있습니다.

업데이트 2 – 해상도 증가

그래서 다음으로 시도한 것은 DHCP를 사용하여 패킷에서 MAC 주소를 검색하고 라우터 GUI에서 고정 IP를 구성하는 것이었습니다. 설치 프로그램의 네트워크 구성 부분을 통과할 수 있었기 때문에 효과가 있었지만 미러 서버에 연결하여 패키지 관리자를 구성해야 하는 지점에 도달했을 때 실패했습니다.

이제 ARP 확인은 나에게 친숙한 것이므로 DHCP 검색 패킷과 유사하게 브리지에서 전송된 ARP 패킷이 응답되지 않는다는 것을 알았습니다. LAN의 다른 호스트에서 브리지 인터페이스로 ping을 보내는 패킷을 검사할 때 응답의 소스 필드에 있는 MAC 주소가 잘못된 것을 확인했습니다. Linux 커널은 느슨하게 결합된 시스템에서 IP 주소를 "시스템 개체"로 처리하므로 여러 인터페이스를 동일한 네트워크(192.168.1.0/24)에 연결해도 특정 IP가 있는 패킷을 처리하는 데 어떤 물리적 인터페이스가 사용되는지 보장되지 않습니다. 관련된.

이 문제를 해결하기 위해 시스템의 모든 물리적 인터페이스를 브리지 인터페이스 정의에 추가했고 재부팅 후 모든 것이 제대로 작동했습니다. 이것은 이상적인 설정은 아니지만 작동하고 DHCP는 예상대로 작동합니다.

추가 정보: https://lwn.net/Articles/45373/

관련 정보