Bug 1411687 - [WALA] Fail to send hostname to DHCP server during provisioning
Summary: [WALA] Fail to send hostname to DHCP server during provisioning
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: WALinuxAgent
Version: 7.3
Hardware: x86_64
OS: Linux
Target Milestone: rc
: 7.4
Assignee: Vitaly Kuznetsov
QA Contact: Virtualization Bugs
Depends On:
Blocks: 1413674
TreeView+ depends on / blocked
Reported: 2017-01-10 09:57 UTC by Yuhui Jiang
Modified: 2019-02-26 20:57 UTC (History)
20 users (show)

Fixed In Version: WALinuxAgent-2.2.0-4.el7
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
: 1413674 (view as bug list)
Last Closed: 2017-01-26 06:32:57 UTC
Target Upstream Version:

Attachments (Terms of Use)

System ID Private Priority Status Summary Last Updated
Github Azure WALinuxAgent issues 538 0 None None None 2017-01-10 09:57:58 UTC
Red Hat Bugzilla 1412587 0 medium CLOSED [WALA]There's no '\n' after 'DHCP_HOSTNAME' which NetworkManager cannot read 2021-02-22 00:41:40 UTC

Internal Links: 1412587

Description Yuhui Jiang 2017-01-10 09:57:58 UTC
Description of problem:
In RHEL-7, if NetworkManager is enabled, the hostname is not sent to DHCP server during provisioning, so that the VM internal DNS is not set to the DNS server.

Version-Release number of selected component (if applicable):

RHEL Version:

How reproducible:

Steps to Reproduce:
1. Create a RHEL-7.3 VM on Azure with WALA-2.2.0+ installed(NetworkManager enabled)
2. Check if send hostname to DHCP server:
~]# cat /var/lib/NetworkManager/dhclient-eth0.conf|grep send
There's no "send host-name" line.
3. Check DNS:
1). Get domain-name(like wala73220e.i6.internal.cloudapp.net): cat /etc/resolv.conf|grep search
2). Get hostname(like wala73220e): cat /etc/hostname
3). Check DNS:
~]# nslookup wala73220e.wala73220e.i6.internal.cloudapp.net

** server can't find wala73220e.wala73220e.i6.internal.cloudapp.net: NXDOMAIN

Actual Result:
The hostname is not sent to the DHCP server
The domain name is not added into DNS server

Expect Result:
The hostname is sent to the DHCP server, such as:
~]# cat /var/lib/NetworkManager/dhclient-eth0.conf |grep send
send host-name "wala73220e"; # added by NetworkManager

The domain name is added into DNS server, such as:
~]# nslookup wala73220e.wala73220e.i6.internal.cloudapp.net

Name:        wala73220e.wala73220e.i6.internal.cloudapp.net

Additional Info:
There're 2 root causes:

1. WALA-2.2.0 use "hostname" and write "/etc/hostname" file to set hostname, which cannot send hostname message into dbus. NetworkManager get hostname from dbus, then add "send host-name" into /var/lib/NetworkManager/dhclient-eth0.conf

2. WALA-2.2.0 write "DHCP_HOSTNAME=hostname" into /etc/sysconfig/network-scripts/ifcfg-eth0, but there's no '\n' after this line. So that NetworkManager cannot read it.

NetworkManager sends the hostname to the DHCP server using the following strategy:
- if the ifcfg file specifies a DHCP_HOSTNAME, that value is sent to the DHCP server

- if DHCP_HOSTNAME is not set, NM uses the system hostname set through hostnamectl, but only if it is not '(none)', 'localhost', 'localhost6' or 'localhost.localdomain'. If it is one of these, no hostname is sent

According to the NetworkManager developer suggestion, the best way to have NetworkManager send the hostname is to simply set a valid system hostname using 'hostnamectl set-hostname myhostname' and reactivate the connection with ifup.
The DHCP_HOSTNAME is only a way to override the system configured hostname.

So we suggest to:
1. use "hostnamectl set-hostname" command to set hostname in RHEL-7.
2. remove the "DHCP_HOSTNAME".

Note You need to log in before you can comment on or make changes to this bug.