Qemu에게 MAC 주소를 무작위로 할당하도록 지시하는 방법

Qemu에게 MAC 주소를 무작위로 할당하도록 지시하는 방법

저는 각각 여러 네트워크 인터페이스를 갖춘 3개의 Qemu VM을 시작했습니다. 네트워크 인터페이스 구성은 다음과 같습니다.

-nic user,hostfwd=tcp::"${ssh_ports[$machine]}"-:22,model=virtio-net-pci \
-nic bridge,br="${bridge1}",model=virtio-net-pci
...

모든 기계 중에서 첫 번째 네트워크 장치 52:54:00:12:34:56, 두 번째 ...:57, 세 번째 ...:58등의 MAC 주소를 찾았습니다. 이로 인해 가상 머신 간에 MAC 주소 충돌이 발생합니다. Qemu가 MAC 주소를 무작위로 할당하도록 만드는 방법은 무엇입니까?

첨부된:

  • 이것이 관련이 있는지 확실하지 않습니다. 두 개의 브리지 인터페이스가 있는데, 각 가상 머신에는 첫 번째 브리지에 네트워크 인터페이스가 있고 두 번째 브리지에 네트워크 인터페이스가 있습니다.
  • 물론 bash를 사용하여 임의의 숫자를 생성한 다음 이를 매개변수로 명시적으로 설정할 수 있습니다. Qemu가 자체적으로 수행했다면 더 나을 것이라고 생각합니다.
  • 빠른 검색을 통해 반대 목표를 달성하려는 사람들로부터 몇 가지 질문이 나타났습니다. Qemu가 미리 결정된 MAC을 할당하도록 하는 것입니다. 이러한 문제는 MAC 주소의 무작위 할당이 실제로 기본 설정인 것처럼 들립니다.

답변1

당신은 그렇게하고 싶지 않습니다. 임의의 MAC 주소를 사용하면 필연적으로 MAC 주소 충돌이 발생합니다.이러한 검색결과가 표시됩니다.

대신에다른mac=macaddr이 옵션을 사용하여 각 가상 머신의 각 네트워크 인터페이스에 MAC 주소를 하드코딩합니다 -nic. 예를 들어:

  • -nic user,...,mac=52:54:00:12:34:56-nic bridge,...,mac=52:54:00:12:34:57첫 번째 가상 머신 의 경우 ,
  • 52:54:00:12:34:58& 52:54:00:12:34:59두 번째로,
  • 그리고 52:54:00:12:34:60& 52:54:00:12:34:61세 번째.

설명을 텍스트 파일에 저장하여 할당된 MAC 주소와 가상 머신에 속하는 주소를 기록하세요.

아니면 그냥 사용라이브러리 가상 머신, MAC 주소 할당을 자동으로 처리합니다. IMO, libvirt를 사용하는 대신 수동으로 실행할 이유가 많지 않습니다 qemu. qemu나 libvirt를 사용하여 수행할 수 있는 VM 사용자 정의가 없습니다... 그리고 이를 자동화하기 위해 작성할 수 있는 사용자 정의 스크립트는 단지 libvirt의 잘못된 모방일 뿐입니다. 이미 더 나아졌습니다. (나는 libvirt로 전환하기 전에 내 사용자 정의 구성 파일을 사용하여 매우 복잡한 qemu 명령줄을 DIY하는 데 몇 년을 보냈기 때문에 개인적인 경험을 통해 이것을 알고 있습니다.) libvirt는 쉘, 펄, 파이썬 및 기타 여러 언어용 도구/라이브러리가 포함된 가상 머신 자동화용 API입니다.


그런데 MAC 주소를 하드코딩하면 추가로 얻을 수 있는 이점은(DHCP를 사용하여 각 가상 머신에 IP 주소를 할당하는 경우) 각 MAC 주소에 고정 IP 주소를 할당하도록 dhcp 데몬을 구성할 수 있다는 것입니다. 고정 IP와 신뢰할 수 있는 호스트 이름(DNS 또는 /etc/hosts 파일)을 가질 수 있습니다.

결합된 dhcp와 dns를 VM에 제공하기 위해 실행 dnsmasq(또는 유사한 소프트웨어 - 개인적으로 저는 VM과 관련되지 않은 목적으로 이미 사용하고 있기 때문에 bin9 및 ISC dhcpd를 사용합니다)하는 것은 드문 일이 아닙니다. 실제로 이는 libvirt를 qemu, kvm 등의 래퍼로 사용할 때 상당히 표준적인 설정입니다.

관련 정보