** Description changed:

  [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]
+ 
+ NOTE: 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

** Description changed:

  [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]
  
- NOTE: 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.
+ 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

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1862232

Title:
  Long hostname causes networking setup to fail

To manage notifications about this bug go to:
https://bugs.launchpad.net/systemd/+bug/1862232/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to