가상 머신 데스크탑을 보기 위해 virt-manager에 내장된 VNC-Viewer를 사용합니다. 하지만 이제 가상 머신 창에서 재생 버튼을 클릭하여 이름이 지정된 가상 머신의 데스크톱을 보면 server1.example.com
다음과 같은 오류 메시지가 나타납니다.
Error : Viewer Connection to hypervisor host got refused
or disconnected!
다음은 내 구성입니다/etc/libvirt/qemu/server1.example.com
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made
using: virsh edit server1.example.com or other application using the
libvirt API.
-->
<domain type='kvm'>
<name>server1.example.com</name>
<uuid>ca13796e-5917-bff4-b4ca-1203f660cbb2</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='rhel6.4.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='raw' cache='none'/>
<source file='/var/lib/libvirt/images/server1.example.com.img'/>
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<disk type='block' device='cdrom'>
<driver name='qemu' type='raw'/>
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'>
</controller>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01'
function='0x1'/>
</controller>
<interface type='network'>
<mac address='52:54:00:e1:ba:1e'/>
<source network='default'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03'
function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
</console>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5901' autoport='no' listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
저는 iptables 규칙에 대해 좋지 않은 느낌을 받았기 때문에 /etc/sysconfig/iptables 파일을 추가하기로 결정했습니다. 아래를 참조하세요.
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
#-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5900 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5902 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5903 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5904 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 5900 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 5902 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 5903 -j ACCEPT
-A OUTPUT -m state --state NEW -m tcp -p tcp --dport 5904 -j ACCEPT
-A FORWARD -m state --state NEW -i wlan0 -o vibr0 -j ACCEPT
-A FORWARD -m state --state NEW -i vibr0 -o wlan0 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
내 시스템의 가상화 패키지는 다음과 같습니다.
libvirt.x86_64 0.10.2-18.el6 @localrepo
libvirt-client.x86_64 0.10.2-18.el6 @localrepo
libvirt-python.x86_64 0.10.2-18.el6 @localrepo
python-virtinst.noarch 0.600.0-15.el6 @localrepo
virt-manager.x86_64 0.9.0-18.el6 @localrepo
virt-what.x86_64 1.11-1.2.el6 @base/6
Tiger-VNC를 사용하여 가상 머신 데스크탑을 보았는데 제대로 작동했습니다.
누구든지 이 문제를 해결하는 방법을 제안할 수 있습니까?
편집 후 추가된 섹션: 놀랍게도 virt-viewer 명령은 제대로 작동하고 원격 데스크톱 뷰어(vinagre)도 해당 작업을 수행합니다.
[ssam@centos ~]$ virt-viewer --debug -c qemu:///system 2
** (virt-viewer:7930): DEBUG: Insert window 0 0x1a25890
** (virt-viewer:7930): DEBUG: fullscreen display 0: 0
** (virt-viewer:7930): DEBUG: fullscreen display 0: 0
** (virt-viewer:7930): DEBUG: Opening connection to libvirt with URI
qemu:///system
** (virt-viewer:7930): DEBUG: Add handle 7 1 0x1a8d5c0
** (virt-viewer:7930): DEBUG: notebook show status 0x1a24190
** (virt-viewer:7930): DEBUG: notebook show status 0x1a24190
** (virt-viewer:7930): DEBUG: Guest 2 is running, determining display
** (virt-viewer:7930): DEBUG: Set connect info: (null),(null),(null),-1,
(null),(null),(null),0
** (virt-viewer:7930): DEBUG: Guest 2 has a vnc display
** (virt-viewer:7930): DEBUG: Guest graphics address is 127.0.0.1:5901
** (virt-viewer:7930): DEBUG: Set connect info: localhost,127.0.0.1,5901,-1,
(null),(null),(null),0
** (virt-viewer:7930): DEBUG: Error operation virDomainOpenGraphics
forbidden for read only access
** (virt-viewer:7930): DEBUG: After open connection callback fd=-1
** (virt-viewer:7930): DEBUG: Opening direct TCP connection to display at
127.0.0.1:5901:-1
** (virt-viewer:7930): DEBUG: notebook show status 0x1a24190
** (virt-viewer:7930): DEBUG: Add timeout 0x1a9abf0 -1 0x3ee80aa2b0
0x1a8d900 1
** (virt-viewer:7930): DEBUG: notebook show status 0x1a24190
** (virt-viewer:7930): DEBUG: notebook show display 0x1a24190
** (virt-viewer:7930): DEBUG: Display size request 100x100 (desktop 100x100)
** (virt-viewer:7930): DEBUG: Allocated 400x375
** (virt-viewer:7930): DEBUG: Child allocate 375x375
** (virt-viewer:7930): DEBUG: desktop resize 1024x768
** (virt-viewer:7930): DEBUG: Preparing main window resize
** (virt-viewer:7930): DEBUG: Decided todo 1024x768 (desktop is 1024x768,
fullscreen is 1280x800
** (virt-viewer:7930): DEBUG: Display size request 1024x768 (desktop
1024x768)
** (virt-viewer:7930): DEBUG: Allocated 1024x768
** (virt-viewer:7930): DEBUG: Child allocate 1024x768
** (virt-viewer:7930): DEBUG: Display size request 50x50 (desktop 1024x768)
** (virt-viewer:7930): DEBUG: Allocated 1024x768
** (virt-viewer:7930): DEBUG: Child allocate 1024x768
** (virt-viewer:7930): DEBUG: Dispatch handler 7 1 0x1a8d5c0
** (virt-viewer:7930): DEBUG: Dispatch handler 7 2 0x1a8d5c0
** (virt-viewer:7930): DEBUG: Dispatch handler 7 1 0x1a8d5c0
답변1
내 Centos 시스템에서 127.0.0.1
파일의 항목을 복원하면 문제가 해결되었습니다. 이 솔루션은 다른 곳에 있다는 것을 알았습니다. 나는 이 모든 것을 여러분과 공유하고 싶습니다./etc/hosts
localhost
답변2
이는 해결책이 아니라 문제를 인정하는 것입니다. 이 특정 문제를 인터넷 검색하는 동안 다음 참고 자료를 찾았습니다.
- [libvirt-users] 다른 호스트에서 실행되는 virt-viewer와 libvirt 간의 TLS 연결 디버깅
- 가상 머신 뷰어에 "오류: 하이퍼바이저 호스트에 대한 뷰어의 연결이 거부되었거나 끊어졌습니다!"라는 메시지가 표시됩니다.
- Bug#708209: virt-manager: 뷰어를 연결할 수 없습니다.
- Debian 버그 보고서 로그 - #708209 virt-manager: 뷰어를 연결할 수 없습니다(위와 중복).
나는 또한 추천한다virt-manager의 프로젝트 페이지. 직접 링크:
보다
보고서
귀하의 오류 메시지를 데이터베이스에서 찾아보았지만 아무 것도 표시되지 않았습니다.
답변3
머신의 도메인 이름과 호스트 이름 뒤에 localhost
파일을 추가하세요. 예를 들어/etc/hosts
127.0.0.1 server1.example.com server1 localhost
나를 위해 일해주세요! ! ! ! 나는 그것이 모두에게 효과가 있기를 바랍니다!
답변4
그 이유는 Linux iptables가 들어오는 연결을 차단하기 때문입니다. 따라서 kvm 게스트 콘솔에 연결할 수 없습니다.
따라서 문제를 더 잘 이해하려면 먼저 iptables 규칙을 새로 고치고 콘솔이 연결되어 있으면 동일하게 시도하십시오. 문제는 방화벽에 있습니다.
iptable 새로 고침:
iptables -F
규칙 보기:
iptables -L
문제를 해결하려면 iptables INPUT 규칙 거부를 비활성화해야 합니다.