Long hostname causes networking setup to fail
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
systemd |
Fix Released
|
Unknown
|
|||
systemd (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Xenial |
Fix Released
|
Medium
|
Dan Streetman | ||
Bionic |
Fix Released
|
Medium
|
Dan Streetman |
Bug Description
[impact]
networkd fails to bring up networking on systems with long hostname
[test case]
setting the hostname:
$ sudo hostnamectl set-hostname asdfasdfasdfasd
then reboot and check the networking.
[regression potential]
as this adjusts logging and certain error handling while performing dhcp, any regression would likely cause dhcp failure.
[scope]
this is fixed by upstream commit a8494759b4f14af
This is needed in Bionic and Xenial.
[other info]
the problem around this is that Linux sets HOST_NAME_MAX to 64, but RFC 1035 limits DNS labels to 63 characters, so any host with a max-length single-label hostname (i.e. a 64 character hostname with no dots) will be "valid" from Linux's perspective, but will violate RFC 1035 and thus systemd will consider it invalid and won't pass it to the dhcp server.
Also note that a 64-character hostname that is *not* single-label (i.e. a hostname with at least 1 dot) will not cause this problem.
The systemd patches continue to reject sending the invalid hostname to the dhcp server, but do not prevent networkd from finishing setting up networking.
[original description]
1) ubuntu version
# lsb_release -rd
Description: Ubuntu 18.04.3 LTS
Release: 18.04
2) package version
# apt-cache policy systemd
systemd:
Installed: 237-3ubuntu10.31
Candidate: 237-3ubuntu10.31
Version table:
*** 237-3ubuntu10.31 500
500 http://
es
100 /var/lib/
237-
500 http://
237-3ubuntu10 500
500 http://
3) I expect the network to come online correctly regardless of how long the hostname is. This is what happens with both 14.0 and 19.0 (I tested the same behavior with both of them).
4) the external network interface fails to be configured and is stuck in a (pending) state as reported by networkctl status -a
setting the hostname:
# hostnamectl set-hostname asdfasdfasdfasd
after rebooting the machine, it no longer has network access.
# journalctl
Feb 06 19:29:41 asdfasdfasdfasd
Feb 06 19:29:41 asdfasdfasdfasd
Feb 06 19:29:41 asdfasdfasdfasd
Feb 06 19:29:41 asdfasdfasdfasd
Feb 06 19:29:41 asdfasdfasdfasd
# networkctl status -a:
● 1: lo
Link File: /lib/systemd/
Network File: n/a
Type: loopback
State: carrier (unmanaged)
Address: 127.0.0.1
● 2: eth0
Link File: /run/systemd/
Network File: /run/systemd/
Type: ether
State: off (pending)
Path: pci-0000:00:03.0
Driver: virtio_net
Vendor: Red Hat, Inc.
Model: Virtio network device
HW Address: ae:4d:91:1c:e8:86
DNS: 67.207.67.3
and to bring up the network correctly, set the hostname to something shorter
# hostnamectl set-hostname asdf
# systemctl restart systemd-networkd
# networkctl status -a
● 1: lo
Link File: /lib/systemd/
Network File: n/a
Type: loopback
State: carrier (unmanaged)
Address: 127.0.0.1
● 2: eth0
Link File: /run/systemd/
Network File: /run/systemd/
Type: ether
State: routable (configured)
Path: pci-0000:00:03.0
Driver: virtio_net
Vendor: Red Hat, Inc.
Model: Virtio network device
HW Address: ae:4d:91:1c:e8:86
Address: 10.17.0.5
Gateway: 157.245.208.1 (ICANN, IANA Department)
DNS: 67.207.67.3
Changed in systemd (Ubuntu Bionic): | |
status: | New → Confirmed |
importance: | Undecided → Medium |
Changed in systemd (Ubuntu): | |
importance: | Undecided → Medium |
description: | updated |
Changed in systemd: | |
status: | Unknown → Fix Released |
description: | updated |
Changed in systemd (Ubuntu Bionic): | |
assignee: | nobody → Dan Streetman (ddstreet) |
Changed in systemd (Ubuntu Xenial): | |
assignee: | nobody → Dan Streetman (ddstreet) |
importance: | Undecided → Medium |
status: | New → In Progress |
Changed in systemd (Ubuntu Bionic): | |
status: | Confirmed → In Progress |
description: | updated |
description: | updated |
Changed in systemd (Ubuntu): | |
status: | Confirmed → Fix Released |
tags: |
added: verification-done-bionic removed: verification-needed-bionic |
Status changed to 'Confirmed' because the bug affects multiple users.