Long hostname causes networking setup to fail

Bug #1862232 reported by Daniel on 2020-02-06
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
systemd
Fix Released
Unknown
systemd (Ubuntu)
Medium
Unassigned
Xenial
Medium
Dan Streetman
Bionic
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 asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf

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 a8494759b4f14af5337391727ba295ab708b92f9 (along with some associated commits around it), which is included starting in v240, so this is included already in Eoan and later.

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://mirrors.digitalocean.com/ubuntu bionic-updates/main amd64 Packag
es
        100 /var/lib/dpkg/status
     237-3ubuntu10.29 500
        500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
     237-3ubuntu10 500
        500 http://mirrors.digitalocean.com/ubuntu bionic/main amd64 Packages

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 asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf

after rebooting the machine, it no longer has network access.

# journalctl
Feb 06 19:29:41 asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf systemd[1]: Starting Wait for Network to be Configured...
Feb 06 19:29:41 asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf systemd-networkd[605]: eth0: Link state is up-to-date
Feb 06 19:29:41 asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf systemd-networkd[605]: eth0: found matching network '/run/systemd/network/10-netplan-eth0.network'
Feb 06 19:29:41 asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf systemd-networkd[605]: sd-netlink: callback failed: Invalid argument
Feb 06 19:29:41 asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf systemd-networkd[605]: lo: Link state is up-to-date

# networkctl status -a:
● 1: lo
       Link File: /lib/systemd/network/99-default.link
    Network File: n/a
            Type: loopback
           State: carrier (unmanaged)
         Address: 127.0.0.1
                  ::1

● 2: eth0
       Link File: /run/systemd/network/10-netplan-eth0.link
    Network File: /run/systemd/network/10-netplan-eth0.network
            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
                  67.207.67.2

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/99-default.link
    Network File: n/a
            Type: loopback
           State: carrier (unmanaged)
         Address: 127.0.0.1
                  ::1

● 2: eth0
       Link File: /run/systemd/network/10-netplan-eth0.link
    Network File: /run/systemd/network/10-netplan-eth0.network
            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
                  157.245.210.250
                  fe80::ac4d:91ff:fe1c:e886
         Gateway: 157.245.208.1 (ICANN, IANA Department)
             DNS: 67.207.67.3
                  67.207.67.2

Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in systemd (Ubuntu):
status: New → Confirmed
Dan Streetman (ddstreet) on 2020-02-07
Changed in systemd (Ubuntu Bionic):
status: New → Confirmed
importance: Undecided → Medium
Changed in systemd (Ubuntu):
importance: Undecided → Medium
Dan Streetman (ddstreet) on 2020-02-07
description: updated
Changed in systemd:
status: Unknown → Fix Released
Dan Streetman (ddstreet) on 2020-03-31
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
Dan Streetman (ddstreet) on 2020-03-31
description: updated
description: updated
Dan Streetman (ddstreet) on 2020-03-31
Changed in systemd (Ubuntu):
status: Confirmed → Fix Released

Hello Daniel, or anyone else affected,

Accepted systemd into bionic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/systemd/237-3ubuntu10.40 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-bionic to verification-done-bionic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-bionic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in systemd (Ubuntu Bionic):
status: In Progress → Fix Committed
tags: added: verification-needed verification-needed-bionic

All autopkgtests for the newly accepted systemd (237-3ubuntu10.40) for bionic have finished running.
The following regressions have been reported in tests triggered by the package:

gvfs/1.36.1-0ubuntu1.3.3 (amd64)
prometheus-postgres-exporter/unknown (armhf)
systemd/237-3ubuntu10.40 (i386, ppc64el)
umockdev/0.11.1-1 (armhf)
linux-hwe-5.0/5.0.0-47.51~18.04.1 (armhf)
kde4libs/4:4.14.38-0ubuntu3.1 (armhf)
util-linux/unknown (armhf)
nftables/unknown (armhf)
linux-raspi2-5.3/5.3.0-1023.25~18.04.1 (armhf)
netplan.io/0.98-0ubuntu1~18.04.1 (i386)
openssh/1:7.6p1-4ubuntu0.3 (arm64, i386, armhf, ppc64el, s390x, amd64)

Please visit the excuses page listed below and investigate the failures, proceeding afterwards as per the StableReleaseUpdates policy regarding autopkgtest regressions [1].

https://people.canonical.com/~ubuntu-archive/proposed-migration/bionic/update_excuses.html#systemd

[1] https://wiki.ubuntu.com/StableReleaseUpdates#Autopkgtest_Regressions

Thank you!

Hello Daniel, or anyone else affected,

Accepted systemd into xenial-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/systemd/229-4ubuntu21.28 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, what testing has been performed on the package and change the tag from verification-needed-xenial to verification-done-xenial. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-xenial. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in systemd (Ubuntu Xenial):
status: In Progress → Fix Committed
tags: added: verification-needed-xenial

All autopkgtests for the newly accepted systemd (229-4ubuntu21.28) for xenial have finished running.
The following regressions have been reported in tests triggered by the package:

udisks2/2.1.7-1ubuntu1 (amd64)
multipath-tools/0.5.0+git1.656f8865-5ubuntu2.5 (armhf)
nplan/0.32~16.04.7 (amd64)

Please visit the excuses page listed below and investigate the failures, proceeding afterwards as per the StableReleaseUpdates policy regarding autopkgtest regressions [1].

https://people.canonical.com/~ubuntu-archive/proposed-migration/xenial/update_excuses.html#systemd

[1] https://wiki.ubuntu.com/StableReleaseUpdates#Autopkgtest_Regressions

Thank you!

Daniel (dan353hehe) wrote :

I went and updated a machine with the issue to use the -updated packages, and after installing all of them, I no longer see the issue where the long hostname causes the networking setup to fail. The hostname is now truncated at 64 characters.

This is on bionic:

root@asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf:~# lsb_release -rd
Description: Ubuntu 18.04.4 LTS
Release: 18.04

root@asdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdfasdf:~# apt-cache policy systemd
systemd:
  Installed: 237-3ubuntu10.40
  Candidate: 237-3ubuntu10.40
  Version table:
 *** 237-3ubuntu10.40 500
        500 http://archive.ubuntu.com/ubuntu bionic-proposed/main amd64 Packages
        100 /var/lib/dpkg/status
     237-3ubuntu10.39 500
        500 http://mirrors.digitalocean.com/ubuntu bionic-updates/main amd64 Packages
     237-3ubuntu10.38 500
        500 http://security.ubuntu.com/ubuntu bionic-security/main amd64 Packages
     237-3ubuntu10 500
        500 http://mirrors.digitalocean.com/ubuntu bionic/main amd64 Packages

Dan Streetman (ddstreet) on 2020-05-05
tags: added: verification-done-bionic
removed: verification-needed-bionic
Dan Streetman (ddstreet) wrote :

on xenial, additional fix is needed for bug 1877176 for complete fix for this bug, but this patch introduces no regressions and allows networkd to continue requesting the lease for invalid hostnames.

tags: added: verification-done verification-done-xenial
removed: verification-needed verification-needed-xenial
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package systemd - 237-3ubuntu10.40

---------------
systemd (237-3ubuntu10.40) bionic; urgency=medium

  * d/t/logind: skip if nonexistent /sys/power/state (LP: #1862657)
  * d/p/lp1839290-Change-job-mode-of-manager-triggered-restarts-to-JOB.patch:
    - when restarting service after failure, replace existing queued jobs
      (LP: #1839290)
  * d/p/lp1867421-70-mouse.hwdb-Set-DPI-for-MS-Classic-IntelliMouse.patch:
    - fix resolution of IntelliMouse (LP: #1867421)
  * d/p/lp1858412-journalctl-allow-running-vacuum-on-remote-journals-t.patch:
    - allow vacuuming journal 'root' dir (LP: #1858412)
  * d/p/lp1862232/0001-network-add-more-log-messages-in-configuring-DHCP4-c.patch,
    d/p/lp1862232/0002-network-add-more-log-messages-in-configuring-DHCP6-c.patch,
    d/p/lp1862232/0003-network-also-check-that-Hostname-is-a-valid-DNS-doma.patch,
    d/p/lp1862232/0004-network-use-free_and_replace.patch,
    d/p/lp1862232/0005-network-DHCP-ignore-error-in-setting-hostname-when-i.patch,
    d/p/lp1862232/0006-man-mention-that-Hostname-for-DHCP-must-be-a-valid-D.patch,
    d/p/lp1862232/0007-resolve-fix-error-handling-of-dns_name_is_valid.patch:
    - do not fail network setup if hostname is not valid (LP: #1862232)
  * d/t/systemd-fsckd: Skip test on arm64 (LP: #1870194)
  * d/p/lp1870589-seccomp-rework-how-the-S-UG-ID-filter-is-installed.patch:
    - fix test-seccomp failure (LP: #1870589)
  * d/rules: use meson --print-errorlogs instead of cat testlog
    - (LP: #1870811)
  * d/p/lp1776654-test-Synchronize-journal-before-reading-from-it.patch:
    - sync journal before reading from it (LP: #1776654)
  * d/p/lp1837914-journal-do-not-trigger-assertion-when-journal_file_c.patch:
    - do not crash if NULL passted to journal destructor (LP: #1837914)
  * d/e/initramfs-tools/hooks/udev:
    - Follow symlinks when finding link files to copy into initramfs
      (LP: #1868892)

 -- Dan Streetman <email address hidden> Mon, 20 Apr 2020 10:12:49 -0400

Changed in systemd (Ubuntu Bionic):
status: Fix Committed → Fix Released

The verification of the Stable Release Update for systemd has completed successfully and the package is now being released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package systemd - 229-4ubuntu21.28

---------------
systemd (229-4ubuntu21.28) xenial; urgency=medium

  * d/t/logind: skip if nonexistent /sys/power/state (LP: #1862657)
  * d/p/lp1839290-Change-job-mode-of-manager-triggered-restarts-to-JOB.patch:
    - when restarting service after failure, replace existing queued jobs
      (LP: #1839290)
  * d/t/storage:
    - fix buggy test (LP: #1831459)
    - without scsi_debug, skip test (LP: #1847816)
  * d/p/lp1867421-70-mouse.hwdb-Set-DPI-for-MS-Classic-IntelliMouse.patch:
    - fix resolution of IntelliMouse (LP: #1867421)
  * d/p/lp1858412-journalctl-allow-running-vacuum-on-remote-journals-t.patch:
    - allow vacuuming journal 'root' dir (LP: #1858412)
  * d/p/lp1862232-network-DHCP-ignore-error-in-setting-hostname-when-i.patch:
    - do not let invalid hostname break dhcpv4 (LP: #1862232)
  * d/t/systemd-fsckd: Skip test on arm64 (LP: #1870194)
  * d/p/lp1837914-journal-do-not-trigger-assertion-when-journal_file_c.patch:
    - do not crash if NULL passted to journal destructor (LP: #1837914)
  * d/e/initramfs-tools/hooks/udev:
    - Follow symlinks when finding link files to copy into initramfs
      (LP: #1868892)

 -- Dan Streetman <email address hidden> Mon, 20 Apr 2020 10:17:40 -0400

Changed in systemd (Ubuntu Xenial):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.