** Description changed:

+ [ Impact ]
+ ifupdown configurations will stop having a working DNS server on upgrade
+ 
+ [ Test Plan ]
+ Upgrading from an Ubuntu 18.04 or earlier release, bounce a network interface 
with configured DNS server:
+ 
+ root@pangaea-pm:~# ifdown ens13; ifup ens13
+ /etc/network/if-down.d/resolved: 12: mystatedir: not found
+ /etc/network/if-up.d/resolved: 12: mystatedir: not found
+ /etc/network/if-up.d/resolved: 71: DNS: not found
+ /etc/network/if-up.d/resolved: 1: /run/network/ifupdown-inet-ens13: 
DNS=134.102.20.20 134.102.200.14: not found
+ /etc/network/if-up.d/resolved: 2: /run/network/ifupdown-inet-ens13: 
DOMAINS=marum.de: not found
+ Failed to parse DNS server address: DNS
+ Failed to set DNS configuration: Invalid argument
+ 
+ This should result in no errors, and in a valid network configuration with 
working DNS resolution.
+ It's likely that existing netplan configuration needs to be removed and 
migrated to classic ifupdown scripts before running the test above.
+ 
+ [ Where problems could occur ]
+ Although we're only fixing the resolved scripts, more complex network setups 
might see regressions in DNS resolution for some cases. We should pay special 
attention to bridges or virtual interfaces that have been configured through 
ifupdown, as well as validate the other scripts under /etc/network/if-up.d/
+ 
+ [ Other Info ]
  Description:    Ubuntu 22.04 LTS
  Release:        22.04
  
  ifupdown:
-   Installed: 0.8.36+nmu1ubuntu3
-   Candidate: 0.8.36+nmu1ubuntu3
-   Version table:
-  *** 0.8.36+nmu1ubuntu3 500
-         500 http://de.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
-         100 /var/lib/dpkg/status
+   Installed: 0.8.36+nmu1ubuntu3
+   Candidate: 0.8.36+nmu1ubuntu3
+   Version table:
+  *** 0.8.36+nmu1ubuntu3 500
+         500 http://de.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
+         100 /var/lib/dpkg/status
  
  After upgrading a server with classic ifupdown configuration after
  reboot the machine had no valid dns servers anymore.
  
  The problem is that the state file created by ifupdown using
  /etc/network/if-up.d/resolved looks like this:
  
  root@pangaea-pm:~# cat /run/network/ifupdown-inet-ens13
  "DNS"="134.102.20.20 134.102.200.14"
  "DOMAINS"="marum.de"
  
  The script later sources this file and causes the following errors, easy
  to see when you execute this:
  
  root@pangaea-pm:~# ifdown ens13; ifup ens13
  /etc/network/if-down.d/resolved: 12: mystatedir: not found
  /etc/network/if-up.d/resolved: 12: mystatedir: not found
  /etc/network/if-up.d/resolved: 71: DNS: not found
  /etc/network/if-up.d/resolved: 1: /run/network/ifupdown-inet-ens13: 
DNS=134.102.20.20 134.102.200.14: not found
  /etc/network/if-up.d/resolved: 2: /run/network/ifupdown-inet-ens13: 
DOMAINS=marum.de: not found
  Failed to parse DNS server address: DNS
  Failed to set DNS configuration: Invalid argument
  
  This happened to me on three different servers, so this is a serious bug
  and should be fixed before 22.04 upgrades are allowed for everybody.
  Most servers provided by data centers like Hetzner (Germany) are
  configure like that. After a do-release-upgrade you have no working DNS
  anymore, unless you disable systemd-resolved. I don't want to use
  netplan, so changing to this is no option.
  
  The fix is easy - remove the quotes in the script on the left side
  "$DNS" => $DNS; same for DOMAINS:
  
-     if  [ -n "$NEW_DNS" ]; then
-         cat <<EOF >"$mystatedir/ifupdown-${ADDRFAM}-$interface"
+     if  [ -n "$NEW_DNS" ]; then
+         cat <<EOF >"$mystatedir/ifupdown-${ADDRFAM}-$interface"
  $DNS="$NEW_DNS"
  EOF
-         if  [ -n "$NEW_DOMAINS" ]; then
-             cat <<EOF >>"$mystatedir/ifupdown-${ADDRFAM}-$interface"
+         if  [ -n "$NEW_DOMAINS" ]; then
+             cat <<EOF >>"$mystatedir/ifupdown-${ADDRFAM}-$interface"
  $DOMAINS="$NEW_DOMAINS"
  EOF
-         fi
-     fi
+         fi
+     fi

** Also affects: ifupdown (Ubuntu Focal)
   Importance: Undecided
       Status: New

** Also affects: ifupdown (Ubuntu Jammy)
   Importance: Undecided
       Status: New

** Also affects: ifupdown (Ubuntu Lunar)
   Importance: Undecided
       Status: New

** Changed in: ifupdown (Ubuntu Focal)
     Assignee: (unassigned) => Heitor Alves de Siqueira (halves)

** Changed in: ifupdown (Ubuntu Jammy)
     Assignee: (unassigned) => Heitor Alves de Siqueira (halves)

** Changed in: ifupdown (Ubuntu Lunar)
     Assignee: (unassigned) => Heitor Alves de Siqueira (halves)

** Changed in: ifupdown (Ubuntu Focal)
       Status: New => In Progress

** Changed in: ifupdown (Ubuntu Jammy)
       Status: New => In Progress

** Changed in: ifupdown (Ubuntu Lunar)
       Status: New => In Progress

** Changed in: ifupdown (Ubuntu Focal)
   Importance: Undecided => Low

** Changed in: ifupdown (Ubuntu Lunar)
   Importance: Undecided => Critical

** Changed in: ifupdown (Ubuntu Jammy)
   Importance: Undecided => Low

** Changed in: ifupdown (Ubuntu Lunar)
   Importance: Critical => Low

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to ifupdown in Ubuntu.
https://bugs.launchpad.net/bugs/1981103

Title:
  System with DNS server in /etc/network/interfaces has bogus systemd-
  resolved config after  upgrade to 22.04

Status in ifupdown package in Ubuntu:
  Fix Released
Status in ifupdown source package in Focal:
  In Progress
Status in ifupdown source package in Jammy:
  In Progress
Status in ifupdown source package in Lunar:
  In Progress

Bug description:
  [ Impact ]
  ifupdown configurations will stop having a working DNS server on upgrade

  [ Test Plan ]
  Upgrading from an Ubuntu 18.04 or earlier release, bounce a network interface 
with configured DNS server:

  root@pangaea-pm:~# ifdown ens13; ifup ens13
  /etc/network/if-down.d/resolved: 12: mystatedir: not found
  /etc/network/if-up.d/resolved: 12: mystatedir: not found
  /etc/network/if-up.d/resolved: 71: DNS: not found
  /etc/network/if-up.d/resolved: 1: /run/network/ifupdown-inet-ens13: 
DNS=134.102.20.20 134.102.200.14: not found
  /etc/network/if-up.d/resolved: 2: /run/network/ifupdown-inet-ens13: 
DOMAINS=marum.de: not found
  Failed to parse DNS server address: DNS
  Failed to set DNS configuration: Invalid argument

  This should result in no errors, and in a valid network configuration with 
working DNS resolution.
  It's likely that existing netplan configuration needs to be removed and 
migrated to classic ifupdown scripts before running the test above.

  [ Where problems could occur ]
  Although we're only fixing the resolved scripts, more complex network setups 
might see regressions in DNS resolution for some cases. We should pay special 
attention to bridges or virtual interfaces that have been configured through 
ifupdown, as well as validate the other scripts under /etc/network/if-up.d/

  [ Other Info ]
  Description:    Ubuntu 22.04 LTS
  Release:        22.04

  ifupdown:
    Installed: 0.8.36+nmu1ubuntu3
    Candidate: 0.8.36+nmu1ubuntu3
    Version table:
   *** 0.8.36+nmu1ubuntu3 500
          500 http://de.archive.ubuntu.com/ubuntu jammy/universe amd64 Packages
          100 /var/lib/dpkg/status

  After upgrading a server with classic ifupdown configuration after
  reboot the machine had no valid dns servers anymore.

  The problem is that the state file created by ifupdown using
  /etc/network/if-up.d/resolved looks like this:

  root@pangaea-pm:~# cat /run/network/ifupdown-inet-ens13
  "DNS"="134.102.20.20 134.102.200.14"
  "DOMAINS"="marum.de"

  The script later sources this file and causes the following errors,
  easy to see when you execute this:

  root@pangaea-pm:~# ifdown ens13; ifup ens13
  /etc/network/if-down.d/resolved: 12: mystatedir: not found
  /etc/network/if-up.d/resolved: 12: mystatedir: not found
  /etc/network/if-up.d/resolved: 71: DNS: not found
  /etc/network/if-up.d/resolved: 1: /run/network/ifupdown-inet-ens13: 
DNS=134.102.20.20 134.102.200.14: not found
  /etc/network/if-up.d/resolved: 2: /run/network/ifupdown-inet-ens13: 
DOMAINS=marum.de: not found
  Failed to parse DNS server address: DNS
  Failed to set DNS configuration: Invalid argument

  This happened to me on three different servers, so this is a serious
  bug and should be fixed before 22.04 upgrades are allowed for
  everybody. Most servers provided by data centers like Hetzner
  (Germany) are configure like that. After a do-release-upgrade you have
  no working DNS anymore, unless you disable systemd-resolved. I don't
  want to use netplan, so changing to this is no option.

  The fix is easy - remove the quotes in the script on the left side
  "$DNS" => $DNS; same for DOMAINS:

      if  [ -n "$NEW_DNS" ]; then
          cat <<EOF >"$mystatedir/ifupdown-${ADDRFAM}-$interface"
  $DNS="$NEW_DNS"
  EOF
          if  [ -n "$NEW_DOMAINS" ]; then
              cat <<EOF >>"$mystatedir/ifupdown-${ADDRFAM}-$interface"
  $DOMAINS="$NEW_DOMAINS"
  EOF
          fi
      fi

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/1981103/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to