Bug 1325996
Summary: | new NSS module for host name translation of domains managed by libvirt | |||
---|---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Jaroslav Suchanek <jsuchane> | |
Component: | libvirt | Assignee: | Michal Privoznik <mprivozn> | |
Status: | CLOSED ERRATA | QA Contact: | Virtualization Bugs <virt-bugs> | |
Severity: | unspecified | Docs Contact: | Jiri Herrmann <jherrman> | |
Priority: | unspecified | |||
Version: | 7.3 | CC: | dyuan, jherrman, jsuchane, mprivozn, rbalakri, sgallagh, yafu, yalzhang, zpeng | |
Target Milestone: | rc | |||
Target Release: | --- | |||
Hardware: | Unspecified | |||
OS: | Unspecified | |||
Whiteboard: | TestOnly | |||
Fixed In Version: | Doc Type: | Release Note | ||
Doc Text: |
New package: _libvirt-nss_
Red Hat Enterprise Linux 7.3 adds the _libvirt-nss_ package, which enables you to use the _libvirt_ Network Security Services (NSS) module. This module makes it easier to connect to guests with TLS, SSL, SSH, as well as other remote login services. In addition, it benefits utilities that use host name translation, such as "ping". For more information, see the Red Hat Enterprise Linux 7 Virtualization Deployment and Administration Guide.
|
Story Points: | --- | |
Clone Of: | ||||
: | 1325997 (view as bug list) | Environment: | ||
Last Closed: | 2016-11-03 18:41:52 UTC | Type: | Bug | |
Regression: | --- | Mount Type: | --- | |
Documentation: | --- | CRM: | ||
Verified Versions: | Category: | --- | ||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | ||
Cloudforms Team: | --- | Target Upstream Version: | ||
Embargoed: | ||||
Bug Depends On: | ||||
Bug Blocks: | 636029, 1325997 |
Description
Jaroslav Suchanek
2016-04-11 14:26:27 UTC
Hi,Jaroslav, I tried to verify the bug with libvirt-1.3.4-1.el7.x86_64 and found it still can not get the guest's hostname using 'virsh net-dhcp-leases'. Would you please help to check that? Thanks a lot. My test steps: 1.Check libvirt-nss has installed: #rpm -q libvirt-nss libvirt-nss-1.3.4-1.el7.x86_64 2.Add libvirt into /etc/nsswitch.conf: #cat /etc/nsswitch.conf ... hosts: files libvirt dns ... 3.Prepare a running guest with interface using NATed networks ; #virsh dumpxml rhel7.2 ... <interface type='network'> <mac address='52:54:00:c6:3b:95'/> <source network='default' bridge='virbr0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </interface> ... 4.Set the guest's hostname: #cat /etc/hosts 192.168.122.133 nss-test #service network restart #hostname nss-test 5.Run 'virsh net-dhcp-leases' in the host and can not get the guest's hostname: #virsh net-dhcp-leases default Expiry Time MAC address Protocol IP address Hostname Client ID or DUID ------------------------------------------------------------------------------------------------------------------- 2016-05-05 19:10:55 52:54:00:c6:3b:95 ipv4 192.168.122.133/24 - - (In reply to yafu from comment #1) > Hi,Jaroslav, I tried to verify the bug with libvirt-1.3.4-1.el7.x86_64 and > found it still can not get the guest's hostname using 'virsh > net-dhcp-leases'. Would you please help to check that? Thanks a lot. > > My test steps: > 1.Check libvirt-nss has installed: > #rpm -q libvirt-nss > libvirt-nss-1.3.4-1.el7.x86_64 > > 2.Add libvirt into /etc/nsswitch.conf: > #cat /etc/nsswitch.conf > ... > hosts: files libvirt dns > ... > > 3.Prepare a running guest with interface using NATed networks ; > #virsh dumpxml rhel7.2 > ... > <interface type='network'> > <mac address='52:54:00:c6:3b:95'/> > <source network='default' bridge='virbr0'/> > <target dev='vnet0'/> > <model type='virtio'/> > <alias name='net0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x02' > function='0x0'/> > </interface> > ... > > 4.Set the guest's hostname: > #cat /etc/hosts > 192.168.122.133 nss-test > #service network restart > #hostname > nss-test Whole point of nss module is to not do this. I mean, you don't need to even configure static IP addresses, set up hosts file. None of that. > > 5.Run 'virsh net-dhcp-leases' in the host and can not get the guest's > hostname: > #virsh net-dhcp-leases default > Expiry Time MAC address Protocol IP address > Hostname Client ID or DUID > ----------------------------------------------------------------------------- > -------------------------------------- > 2016-05-05 19:10:55 52:54:00:c6:3b:95 ipv4 192.168.122.133/24 > - - What's the hostname set in the gest? That is important, because that is going to be the name that guest will be accessible by. So even if your domain in libvirt is called nss-test, but it has its hostname set to my_awesome_machine, the latter is going to be resolvable: $ ping my_awesome_machine Or maybe your domain has a hostname set but is not advertising it via DHCP. What's the network XML btw? (In reply to Michal Privoznik from comment #2) > (In reply to yafu from comment #1) > > Hi,Jaroslav, I tried to verify the bug with libvirt-1.3.4-1.el7.x86_64 and > > found it still can not get the guest's hostname using 'virsh > > net-dhcp-leases'. Would you please help to check that? Thanks a lot. > > > > My test steps: > > 1.Check libvirt-nss has installed: > > #rpm -q libvirt-nss > > libvirt-nss-1.3.4-1.el7.x86_64 > > > > 2.Add libvirt into /etc/nsswitch.conf: > > #cat /etc/nsswitch.conf > > ... > > hosts: files libvirt dns > > ... > > > > 3.Prepare a running guest with interface using NATed networks ; > > #virsh dumpxml rhel7.2 > > ... > > <interface type='network'> > > <mac address='52:54:00:c6:3b:95'/> > > <source network='default' bridge='virbr0'/> > > <target dev='vnet0'/> > > <model type='virtio'/> > > <alias name='net0'/> > > <address type='pci' domain='0x0000' bus='0x00' slot='0x02' > > function='0x0'/> > > </interface> > > ... > > > > 4.Set the guest's hostname: > > #cat /etc/hosts > > 192.168.122.133 nss-test > > #service network restart > > #hostname > > nss-test > > Whole point of nss module is to not do this. I mean, you don't need to even > configure static IP addresses, set up hosts file. None of that. Step4 is executed in the guest and it does not configure static IP address, just configure hostname for the guest. > > > > > 5.Run 'virsh net-dhcp-leases' in the host and can not get the guest's > > hostname: > > #virsh net-dhcp-leases default > > Expiry Time MAC address Protocol IP address > > Hostname Client ID or DUID > > ----------------------------------------------------------------------------- > > -------------------------------------- > > 2016-05-05 19:10:55 52:54:00:c6:3b:95 ipv4 192.168.122.133/24 > > - - > > What's the hostname set in the gest? That is important, because that is > going to be the name that guest will be accessible by. So even if your > domain in libvirt is called nss-test, but it has its hostname set to > my_awesome_machine, the latter is going to be resolvable: > > $ ping my_awesome_machine > > Or maybe your domain has a hostname set but is not advertising it via DHCP. > What's the network XML btw? The hostname setting in the guest is 'nss-test', and I can not execute "ping nss-test" from host successfully if I did not configure the /etc/hosts files in the host. My network XML is as follows: #virsh net-dumpxml default <network connections='1'> <name>default</name> <uuid>3fe17380-b7ec-47eb-98fe-b9237ef3f5ed</uuid> <forward mode='nat'> <nat> <port start='1024' end='65535'/> </nat> </forward> <bridge name='virbr0' stp='on' delay='0'/> <mac address='52:54:00:d8:12:11'/> <bandwidth> <inbound average='1000' peak='5000' burst='5120'/> <outbound average='128' peak='256' burst='256'/> </bandwidth> <ip address='192.168.122.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.122.2' end='192.168.122.254'/> </dhcp> </ip> </network> (In reply to yafu from comment #3) >>> <snip/> > > > The hostname setting in the guest is 'nss-test', and I can not execute "ping > nss-test" from host successfully if I did not configure the /etc/hosts files > in the host. > That's not how you set hostname in a system. You should use hostnamectl or edit /etc/sysconfig/network and set HOSTNAME variable. Because of internal implementation, nss plugin will work iff net-dhcp-leases prints out hostname set in guest. Also, there's nothing wrong with your network XML. (In reply to Michal Privoznik from comment #4) > (In reply to yafu from comment #3) > >>> <snip/> > > > > > > The hostname setting in the guest is 'nss-test', and I can not execute "ping > > nss-test" from host successfully if I did not configure the /etc/hosts files > > in the host. > > > > That's not how you set hostname in a system. You should use hostnamectl or > edit /etc/sysconfig/network and set HOSTNAME variable. Because of internal > implementation, nss plugin will work iff net-dhcp-leases prints out hostname > set in guest. > > Also, there's nothing wrong with your network XML. Thanks for your quick replay. It works correctly when set HOSTNAME in the /etc/sysconfig/network or use 'hostnamectl set-hostname'. However, I met another issue: modify the guest's mac address and restart guest after 'virsh net-dhcp-leases' getting the hostname successfully, the 'virsh net-dhcp-leases' will have two ip address corresponded to the same hostname, it will lead to 'ping guest's hostname' failed in the host. steps: 1.Do steps1-3 just as comment 1; 2.In guest, set hostname using 'hostnamectl': #hostnamectl set-hostname 'nss-test' #service network restart #hostname nss-test 3.Run 'virsh net-dhcp-leases' in the host: # /usr/bin/virsh net-dhcp-leases default Expiry Time MAC address Protocol IP address Hostname Client ID or DUID ------------------------------------------------------------------------------------------------------------------- 2016-05-11 15:19:15 52:54:00:c6:3b:95 ipv4 192.168.122.133/24 nss-test - 4.Ping guest's hostname: #ping nss-test PING nss-test8 (192.168.122.133) 56(84) bytes of data. 64 bytes from 192.168.122.133: icmp_seq=1 ttl=64 time=0.178 ms 64 bytes from 192.168.122.133: icmp_seq=2 ttl=64 time=0.198 ms 64 bytes from 192.168.122.133: icmp_seq=3 ttl=64 time=0.180 ms 64 bytes from 192.168.122.133: icmp_seq=4 ttl=64 time=0.184 ms .... 5.Use 'virsh edit' to change the guest's mac: #virsh edit rhel7.1 ... <interface type='network'> <mac address='52:54:00:c6:3b:96'/> <source network='default' bridge='virbr0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </interface> ... 6.Restart the guest: #virsh destroy rhel7.1 #virsh start rhel7.1 7.Run 'virsh net-dhcp-leases' in the host: Expiry Time MAC address Protocol IP address Hostname Client ID or DUID ------------------------------------------------------------------------------------------------------------------- 2016-05-11 15:19:15 52:54:00:c6:3b:95 ipv4 192.168.122.133/24 nss-test - 2016-05-11 15:27:04 52:54:00:c6:3b:96 ipv4 192.168.122.15/24 nss-test - 8.Ping guest's hostname: #ping nss-test PING nss-test8 (192.168.122.133) 56(84) bytes of data. From 192.168.122.1 icmp_seq=1 Destination Host Unreachable From 192.168.122.1 icmp_seq=2 Destination Host Unreachable From 192.168.122.1 icmp_seq=3 Destination Host Unreachable From 192.168.122.1 icmp_seq=4 Destination Host Unreachable ^C (In reply to yafu from comment #5) > (In reply to Michal Privoznik from comment #4) > > (In reply to yafu from comment #3) > > >>> <snip/> > > > > > > > > > The hostname setting in the guest is 'nss-test', and I can not execute "ping > > > nss-test" from host successfully if I did not configure the /etc/hosts files > > > in the host. > > > > > > > That's not how you set hostname in a system. You should use hostnamectl or > > edit /etc/sysconfig/network and set HOSTNAME variable. Because of internal > > implementation, nss plugin will work iff net-dhcp-leases prints out hostname > > set in guest. > > > > Also, there's nothing wrong with your network XML. > > > Thanks for your quick reply. It works correctly when set HOSTNAME in the > /etc/sysconfig/network or use 'hostnamectl set-hostname'. What a great news. > However, I met another issue: modify the guest's mac address and restart > guest after 'virsh net-dhcp-leases' getting the hostname successfully, the > 'virsh net-dhcp-leases' will have two ip address corresponded to the same > hostname, it will lead to 'ping guest's hostname' failed in the host. > > steps: > 1.Do steps1-3 just as comment 1; > > 2.In guest, set hostname using 'hostnamectl': > #hostnamectl set-hostname 'nss-test' > #service network restart > #hostname > nss-test > > 3.Run 'virsh net-dhcp-leases' in the host: > # /usr/bin/virsh net-dhcp-leases default > Expiry Time MAC address Protocol IP address > Hostname Client ID or DUID > ----------------------------------------------------------------------------- > -------------------------------------- > 2016-05-11 15:19:15 52:54:00:c6:3b:95 ipv4 192.168.122.133/24 > nss-test - > > 4.Ping guest's hostname: > #ping nss-test > PING nss-test8 (192.168.122.133) 56(84) bytes of data. > 64 bytes from 192.168.122.133: icmp_seq=1 ttl=64 time=0.178 ms > 64 bytes from 192.168.122.133: icmp_seq=2 ttl=64 time=0.198 ms > 64 bytes from 192.168.122.133: icmp_seq=3 ttl=64 time=0.180 ms > 64 bytes from 192.168.122.133: icmp_seq=4 ttl=64 time=0.184 ms > .... > > > 5.Use 'virsh edit' to change the guest's mac: > #virsh edit rhel7.1 > ... > <interface type='network'> > <mac address='52:54:00:c6:3b:96'/> > <source network='default' bridge='virbr0'/> > <target dev='vnet0'/> > <model type='virtio'/> > <alias name='net0'/> > <address type='pci' domain='0x0000' bus='0x00' slot='0x02' > function='0x0'/> > </interface> > ... > > 6.Restart the guest: > #virsh destroy rhel7.1 > #virsh start rhel7.1 > > 7.Run 'virsh net-dhcp-leases' in the host: > Expiry Time MAC address Protocol IP address > Hostname Client ID or DUID > ----------------------------------------------------------------------------- > -------------------------------------- > 2016-05-11 15:19:15 52:54:00:c6:3b:95 ipv4 192.168.122.133/24 > nss-test - > 2016-05-11 15:27:04 52:54:00:c6:3b:96 ipv4 192.168.122.15/24 > nss-test > - > 8.Ping guest's hostname: > #ping nss-test > PING nss-test8 (192.168.122.133) 56(84) bytes of data. > From 192.168.122.1 icmp_seq=1 Destination Host Unreachable > From 192.168.122.1 icmp_seq=2 Destination Host Unreachable > From 192.168.122.1 icmp_seq=3 Destination Host Unreachable > From 192.168.122.1 icmp_seq=4 Destination Host Unreachable > ^C This is expected as there are two records, two IP addresses for a hostname but only one works. The same would happen if you'd put those two addresses into /etc/hosts file. Thing is, we can't remove the old lease until it expires. The lease is valid throughout its lifetime even though we know (due to a side channel) that guests no longed lives. BTW I guess if you'd 'virsh shutdown' instead of destroy the nss plugin will still work. This is because while doing graceful shutdown, systems tend to release all the DHCP leases allowing DHCP servers to adjust their records. (In reply to Michal Privoznik from comment #6) > (In reply to yafu from comment #5) > > (In reply to Michal Privoznik from comment #4) > > > (In reply to yafu from comment #3) > > > >>> <snip/> > > > > > > > > > > > > The hostname setting in the guest is 'nss-test', and I can not execute "ping > > > > nss-test" from host successfully if I did not configure the /etc/hosts files > > > > in the host. > > > > > > > > > > That's not how you set hostname in a system. You should use hostnamectl or > > > edit /etc/sysconfig/network and set HOSTNAME variable. Because of internal > > > implementation, nss plugin will work iff net-dhcp-leases prints out hostname > > > set in guest. > > > > > > Also, there's nothing wrong with your network XML. > > > > > > Thanks for your quick reply. It works correctly when set HOSTNAME in the > > /etc/sysconfig/network or use 'hostnamectl set-hostname'. > > What a great news. > > > However, I met another issue: modify the guest's mac address and restart > > guest after 'virsh net-dhcp-leases' getting the hostname successfully, the > > 'virsh net-dhcp-leases' will have two ip address corresponded to the same > > hostname, it will lead to 'ping guest's hostname' failed in the host. > > > > steps: > > 1.Do steps1-3 just as comment 1; > > > > 2.In guest, set hostname using 'hostnamectl': > > #hostnamectl set-hostname 'nss-test' > > #service network restart > > #hostname > > nss-test > > > > 3.Run 'virsh net-dhcp-leases' in the host: > > # /usr/bin/virsh net-dhcp-leases default > > Expiry Time MAC address Protocol IP address > > Hostname Client ID or DUID > > ----------------------------------------------------------------------------- > > -------------------------------------- > > 2016-05-11 15:19:15 52:54:00:c6:3b:95 ipv4 192.168.122.133/24 > > nss-test - > > > > 4.Ping guest's hostname: > > #ping nss-test > > PING nss-test8 (192.168.122.133) 56(84) bytes of data. > > 64 bytes from 192.168.122.133: icmp_seq=1 ttl=64 time=0.178 ms > > 64 bytes from 192.168.122.133: icmp_seq=2 ttl=64 time=0.198 ms > > 64 bytes from 192.168.122.133: icmp_seq=3 ttl=64 time=0.180 ms > > 64 bytes from 192.168.122.133: icmp_seq=4 ttl=64 time=0.184 ms > > .... > > > > > > 5.Use 'virsh edit' to change the guest's mac: > > #virsh edit rhel7.1 > > ... > > <interface type='network'> > > <mac address='52:54:00:c6:3b:96'/> > > <source network='default' bridge='virbr0'/> > > <target dev='vnet0'/> > > <model type='virtio'/> > > <alias name='net0'/> > > <address type='pci' domain='0x0000' bus='0x00' slot='0x02' > > function='0x0'/> > > </interface> > > ... > > > > 6.Restart the guest: > > #virsh destroy rhel7.1 > > #virsh start rhel7.1 > > > > 7.Run 'virsh net-dhcp-leases' in the host: > > Expiry Time MAC address Protocol IP address > > Hostname Client ID or DUID > > ----------------------------------------------------------------------------- > > -------------------------------------- > > 2016-05-11 15:19:15 52:54:00:c6:3b:95 ipv4 192.168.122.133/24 > > nss-test - > > 2016-05-11 15:27:04 52:54:00:c6:3b:96 ipv4 192.168.122.15/24 > > nss-test > > - > > 8.Ping guest's hostname: > > #ping nss-test > > PING nss-test8 (192.168.122.133) 56(84) bytes of data. > > From 192.168.122.1 icmp_seq=1 Destination Host Unreachable > > From 192.168.122.1 icmp_seq=2 Destination Host Unreachable > > From 192.168.122.1 icmp_seq=3 Destination Host Unreachable > > From 192.168.122.1 icmp_seq=4 Destination Host Unreachable > > ^C > > This is expected as there are two records, two IP addresses for a hostname > but only one works. The same would happen if you'd put those two addresses > into /etc/hosts file. Thing is, we can't remove the old lease until it > expires. The lease is valid throughout its lifetime even though we know (due > to a side channel) that guests no longed lives. BTW I guess if you'd 'virsh > shutdown' instead of destroy the nss plugin will still work. This is because > while doing graceful shutdown, systems tend to release all the DHCP leases > allowing DHCP servers to adjust their records. Got it. Thanks for your patiently and professional reply. Verify pass on build libvirt-1.3.4-1.el7.x86_64. steps: 1.Check libvirt-nss has installed: #rpm -q libvirt-nss libvirt-nss-1.3.4-1.el7.x86_64 2.Add libvirt into /etc/nsswitch.conf: #cat /etc/nsswitch.conf ... hosts: files libvirt dns ... 3.Prepare a running guest with interface using NATed networks ; #virsh dumpxml rhel7.2 ... <interface type='network'> <mac address='52:54:00:c6:3b:95'/> <source network='default' bridge='virbr0'/> <target dev='vnet0'/> <model type='virtio'/> <alias name='net0'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </interface> ... 4.In guest, set hostname using 'hostnamectl': #hostnamectl set-hostname 'nss-test' #service network restart #hostname nss-test 5.Run 'virsh net-dhcp-leases' in the host and could see the hostname of the guest: #virsh net-dhcp-leases default Expiry Time MAC address Protocol IP address Hostname Client ID or DUID ------------------------------------------------------------------------------------------------------------------- 2016-05-11 15:19:15 52:54:00:c6:3b:95 ipv4 192.168.122.133/24 nss-test - 6.Ping guest's hostname: #ping nss-test PING nss-test (192.168.122.133) 56(84) bytes of data. 64 bytes from 192.168.122.133: icmp_seq=1 ttl=64 time=0.178 ms 64 bytes from 192.168.122.133: icmp_seq=2 ttl=64 time=0.198 ms 64 bytes from 192.168.122.133: icmp_seq=3 ttl=64 time=0.180 ms 64 bytes from 192.168.122.133: icmp_seq=4 ttl=64 time=0.184 ms ... Hi Michal, I have a question here. If I set the hostname of the guest with a '.', and check on the host, it will automatically cut off and only left the first field. For example, on the guest it is 'test.domain', and on the host, it is 'test'. If this is expected? [guest]# hostname test.domain [host]# virsh net-dhcp-leases default Expiry Time MAC address Protocol IP address Hostname Client ID or DUID ------------------------------------------------------------------------------------------------------------------- 2016-09-02 15:56:53 52:54:00:3a:c3:e8 ipv4 192.168.122.231/24 test - (In reply to yalzhang from comment #9) > Hi Michal, > Yes, usually dot delimits fields in URI. Therefore in your case the hostname is just 'test' really. Moreover, if you'd try to sniff on DHCP traffic when the domain is starting up, you'd see that it (correctly) advertises just 'test' as its hostname. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2016-2577.html *** Bug 502847 has been marked as a duplicate of this bug. *** Hi Michal, I'm curious about prerequisites for virbr0.status record the "hostname". Because there is one host on which all the guests can not have its hostname recorded in the $bridge.status file. # rpm -q libvirt-nss libvirt-nss-3.1.0-2.el7.x86_64 1. set this in /etc/nsswitch.conf hosts: files libvirt libvirt_guest dns myhostname 2. start a guest 3. set guest's hostname # hostnamectl set-hostname nssguest # hostnamectl Static hostname: nssguest Icon name: computer-vm Chassis: vm Machine ID: 3a64f920c2af4bbba84f805fbce3017b Boot ID: d97fa9ae5759457aae888a262449e559 Virtualization: kvm Operating System: Red Hat Enterprise Linux Server 7.3 Beta (Maipo) CPE OS Name: cpe:/o:redhat:enterprise_linux:7.3:beta:server Kernel: Linux 3.10.0-461.el7.x86_64 Architecture: x86-64 # hostnamectl --static nssguest # hostnamectl --transient nssguest 4. attach an interface then dhclient on the guest to get the ip address 5. check on host, the guest's hostname is not recorded # cat /var/lib/libvirt/dnsmasq/virbr0.status [ { "ip-address": "192.168.122.183", "mac-address": "52:54:00:5e:fd:a4", "expiry-time": 1490151911 }, { "ip-address": "192.168.122.84", "mac-address": "52:54:00:41:00:2e", "expiry-time": 1490151911 } ] # virsh net-dhcp-leases default Expiry Time MAC address Protocol IP address Hostname Client ID or DUID ------------------------------------------------------------------------------------------------------------------- 2017-03-22 11:05:11 52:54:00:41:00:2e ipv4 192.168.122.84/24 - - 2017-03-22 11:05:11 52:54:00:5e:fd:a4 ipv4 192.168.122.183/24 - - I have another host, it works well with the same libvirt-nss version. I don't know where it broken, 1) dhclient on the guest do not report its hostname? 2) libvirt didn't fetch it and write it to the status file? (In reply to yalzhang from comment #14) > Hi Michal, > > I'm curious about prerequisites for virbr0.status record the "hostname". > Because there is one host on which all the guests can not have its hostname > recorded in the $bridge.status file. > > # rpm -q libvirt-nss > libvirt-nss-3.1.0-2.el7.x86_64 > > 1. set this in /etc/nsswitch.conf > hosts: files libvirt libvirt_guest dns myhostname > > 2. start a guest > > 3. set guest's hostname > # hostnamectl set-hostname nssguest > # hostnamectl > Static hostname: nssguest > Icon name: computer-vm > Chassis: vm > Machine ID: 3a64f920c2af4bbba84f805fbce3017b > Boot ID: d97fa9ae5759457aae888a262449e559 > Virtualization: kvm > Operating System: Red Hat Enterprise Linux Server 7.3 Beta (Maipo) > CPE OS Name: cpe:/o:redhat:enterprise_linux:7.3:beta:server > Kernel: Linux 3.10.0-461.el7.x86_64 > Architecture: x86-64 > # hostnamectl --static > nssguest > # hostnamectl --transient > nssguest > > 4. attach an interface then dhclient on the guest to get the ip address > > 5. check on host, the guest's hostname is not recorded > # cat /var/lib/libvirt/dnsmasq/virbr0.status > [ > { > "ip-address": "192.168.122.183", > "mac-address": "52:54:00:5e:fd:a4", > "expiry-time": 1490151911 > }, > { > "ip-address": "192.168.122.84", > "mac-address": "52:54:00:41:00:2e", > "expiry-time": 1490151911 > } > ] > > # virsh net-dhcp-leases default > Expiry Time MAC address Protocol IP address > Hostname Client ID or DUID > ----------------------------------------------------------------------------- > -------------------------------------- > 2017-03-22 11:05:11 52:54:00:41:00:2e ipv4 192.168.122.84/24 > - - > 2017-03-22 11:05:11 52:54:00:5e:fd:a4 ipv4 192.168.122.183/24 > - - > > I have another host, it works well with the same libvirt-nss version. I > don't know where it broken, > 1) dhclient on the guest do not report its hostname? Some dhcp clients don't send hostnames. That's where libvirt_guest NSS module should come handy. > 2) libvirt didn't fetch it and write it to the status file? Have you tried restarting the libvirt network? Restart the network and then start the guest again. It should work. |