所以我有一个 KVM 主机,它还运行一个带有一些 yum 存储库的 apache 服务器。
VM 客户机连接到默认虚拟网络,该网络配置为在 virbr0(192.168.12.1)上提供 DHCP 并使用 NAT 转发。
访客可以通过 IP 地址成功访问主机上的 yum 存储库,因此可以curl 192.168.122.1/repo1
毫无问题地返回内容。但我希望访客能够通过名称而不是 IP 地址访问主机上的 Web 服务器。
我将所需的名称记录添加到主机的/etc/hosts
文件中,并且 libvirt 的 dnsmasq 服务似乎正在为客户机正确地提供该服务,因为 nslookup 和 dig 成功解析了客户机上的名称:
[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
我尝试添加repo 192.168.122.1
来宾/etc/hosts
文件,但仍然没有成功。还尝试使用以下两种方法更改来宾文件/etc/nsswitch.conf
:
hosts: files dns
和
hosts: dns files
我已经阅读了相关的 libvirt 文档,但不确定在哪里可以了解更多信息并继续前进。
答案1
在来宾的 /etc/hosts 中添加以下内容是否有效:192.168.122.1 repo
?(你说你添加了repo 192.168.122.1
)
/etc/resolv.conf
你对客人有什么看法?
你还应该/etc/nsswitch.conf
离开hosts: files dns
答案2
将其添加到主机的 /etc/hosts 中,而不是客户机的。
为了使其通过 DNS 工作,请设置域名和主机名,如 host1.internal.domain.com(domain = internal.domain.com)。
您必须相应地更改/etc/sysconfig/network
( NISDOMAIN=
)、/etc/resolv.conf
( search
、domain
)、 /etc/sysconfig/network-scripts/ifcfg-xxx
( DOMAIN=
、HOSTNAME=
(FQDN))、/etc/hostname
(FQDN)。
答案3
您无需手动更改 DNS 客户端配置,而应使用以下寻址方式libvirt 网络管理客户操作系统和主机的 FQDN。
执行命令并在命名上下文中的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>