Guests can't access KVM host server by name although nslookup and dig returns correct record

Posted by user190196 on Server Fault See other posts from Server Fault or by user190196
Published on 2013-09-17T02:25:22Z Indexed on 2013/10/29 3:58 UTC
Read the original article Hit count: 543

So I have a KVM host that also runs an apache server with some yum repos.

The VM guests are connected to the default virtual network, which is configured to offer DHCP and forwarding with NAT on virbr0 (192.168.12.1).

The guests can successfully access the yum repos on the host by IP address, so for example curl 192.168.122.1/repo1 returns the content without problems. But I'd like to have the guests be able to reach the web server on the host by name rather IP address.

I added the desired name record to the host's /etc/hosts file and libvirt's dnsmasq service seems to be serving that correctly to the guests since nslookup and dig successfully resolve the name on the guests:

[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

But curl/ping/etc still fail:

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

While a request via ip address works:

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

Same with 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

I tried adding repo 192.168.122.1 to the guests' /etc/hosts files but still no dice. Also tried changing guests' /etc/nsswitch.conf with both:

hosts:      files dns

and

hosts:      dns files

I've read the relevant libvirt documentation and I'm not sure where else to learn more about this and be able to move forward with it.

© Server Fault or respective owner

Related posts about dns

Related posts about kvm-virtualization