libvirt에서 SPICE를 사용하여 동일한 포트와 별도의 주소를 수신하는 방법은 무엇입니까?

libvirt에서 SPICE를 사용하여 동일한 포트와 별도의 주소를 수신하는 방법은 무엇입니까?

배경 정보

호스트에서

두 개의 고정 IP가 구성된 가상 브리지 설정이 있습니다: 10.0.3.1/1610.0.3.2/16.

호스트 머신은 Ubuntu 18.04 LTS이며, 이 글을 쓰는 시점의 최신 버전입니다.

가상 머신의 경우

가상 머신 1수신 10.0.3.1포트 로 설정합니다 5900. 그렇게 하면 sudo virsh start vm1올바르게 시작되고 연결할 수 있습니다.

libvirt 구성은 다음과 같습니다.

    <graphics type='spice' port='5900' autoport='no' listen='10.0.3.1'>
      <listen type='address' address='10.0.3.1'/>
      <image compression='auto_lz'/>
    </graphics>

가상 머신 210.0.3.2수신 포트 로 설정 5900:

    <graphics type='spice' port='5900' autoport='no' listen='10.0.3.2'>
      <listen type='address' address='10.0.3.2'/>
      <image compression='auto_lz'/>
    </graphics>

sudo virsh start vm2오류가 발생 하면 :

error: Failed to start domain vm2
error: internal error: Failed to reserve port 5900

sudo netstat -nltp다음을 표시합니다.

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 10.0.3.1:5900           0.0.0.0:*               LISTEN      32092/qemu-system-x

내가 무엇이 필요 하나?

각 가상 머신마다 다른 IP를 사용하고 동일한 5900 포트를 사용하고 싶지만 포트가 바인딩되었다는 오류가 발생합니다(단지 다른 주소에 있음).

동일한 포트를 사용하지만 다른 주소를 사용하도록 하려면 어떻게 해야 합니까?

답변1

libvirt 버그인 것 같습니다. 0.0.0.0수신 주소에 관계없이 포트 충돌 검사를 사용합니다 .

-spiceqemu 명령줄 패스를 사용하여 libvirt가 볼 수 없는 유효한 인수를 qemu에 전달하면 이 문제를 해결할 수 있습니다. 별로 친절하지는 않지만 뭔가 효과가 있기를 원한다면 이 옵션을 선택하세요

관련 정보