客人不能通过名称访问KVM主机服务器,尽pipenslookup和dig会返回正确的logging

所以我有一个KVM主机,也运行一个Apache的服务器与一些YUM回购。

VM guest虚拟机已连接到默认虚拟networking,该虚拟networking被configuration为在virbr0(192.168.12.1)上提供DHCP并使用NAT进行转发。

客人可以通过IP地址成功访问主机上的yum repos,例如curl 192.168.122.1/repo1毫无问题地返回内容。 但是,我希望客人能够通过名称而不是IP地址访问主机上的Web服务器。

我将所需的名称logging添加到主机的/etc/hosts文件,并且libvirt的dnsmasq服务似乎正在向guest虚拟机正确提供服务,因为nslookup和dig成功parsing了guest虚拟机上的名称:

 [root@localhost ~]# nslookup repo Server: 192.168.122.1 Address: 192.168.122.1#53 Name: repo Address: 192.168.122.1 [root@localhost ~]# dig repo ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> repo ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 55938 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;repo. IN A ;; ANSWER SECTION: repo. 0 IN A 192.168.122.1 ;; Query time: 0 msec ;; SERVER: 192.168.122.1#53(192.168.122.1) ;; WHEN: Tue Sep 17 02:10:46 2013 ;; MSG SIZE rcvd: 38 

但curl / ping / etc仍然失败:

 [root@localhost ~]# curl repo curl: (6) Couldn't resolve host 'repo' 

虽然通过IP地址的请求工作:

 [root@localhost ~]# curl 192.168.122.1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <html> <head> <title>Index of /</title> [...] 

和ping一样:

 [root@localhost ~]# ping repo ping: unknown host repo [root@localhost ~]# ping 192.168.122.1 PING 192.168.122.1 (192.168.122.1) 56(84) bytes of data. 64 bytes from 192.168.122.1: icmp_seq=1 ttl=64 time=0.110 ms 64 bytes from 192.168.122.1: icmp_seq=2 ttl=64 time=0.146 ms 64 bytes from 192.168.122.1: icmp_seq=3 ttl=64 time=0.191 ms ^C --- 192.168.122.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2298ms rtt min/avg/max/mdev = 0.110/0.149/0.191/0.033 ms 

我试图添加到客户的/etc/hosts文件的repo 192.168.122.1 ,但仍然没有骰子。 还尝试用以下两种方式更改guest /etc/nsswitch.conf

 hosts: files dns 

 hosts: dns files 

我已经阅读了相关的libvirt文档,我不知道还有哪些地方需要了解更多,并能够继续前进。

是否将以下内容添加到guest虚拟机上的/ etc / hosts中: 192.168.122.1 repo ? (你说你加了repo 192.168.122.1

你的/etc/resolv.conf中有什么?

您还应该将hosts: files dns /etc/nsswitch.conf hosts: files dns

将它添加到主机的/ etc / hosts中,而不是guest。

要使其通过DNS工作,请设置域名和主机名,如host1.internal.domain.com(domain = internal.domain.com)。

/etc/sysconfig/networkNISDOMAIN= ), /etc/sysconfig/network-scripts/ifcfg-xxx /etc/resolv.confsearch domain/etc/hostname (FQDN)。

您应该使用libvirtnetworking的寻址来pipe理客户操作系统和主机的FQDN,而不是手动更改dns客户端configuration。

执行命令virsh net-edit default并在命名上下文的元素<network>中添加以下节:

 <domain name="example.com"></domain> <dns> <forwarder addr="8.8.8.8"/> <host ip='192.168.122.1'> <hostname>repo</hostname> </host> </dns>