Thanks for the explanation, Dan! I was off down a wrong path, I appreciate the correction.
I've just downloaded the Azure image from cloud-images.u.c and it includes this in `/etc/netplan/90-hotplug-azure.yaml`: # This netplan yaml is delivered in Azure cloud images to support # attaching and detaching nics after the instance first boot. # Cloud-init otherwise handles initial boot network configuration in # /etc/netplan/50-cloud-init.yaml network: version: 2 ethernets: ephemeral: dhcp4: true match: driver: hv_netvsc name: '!eth0' optional: true hotpluggedeth0: dhcp4: true match: driver: hv_netvsc name: 'eth0' This file is not present in a booted system, because cloud-init removes it during boot: 2020-11-09 18:12:09,306 - handlers.py[DEBUG]: start: azure-ds/maybe_remove_ubuntu_network_config_scripts: maybe_remove_ubuntu_network_config_scripts 2020-11-09 18:12:09,307 - DataSourceAzure.py[INFO]: Removing Ubuntu extended network scripts because cloud-init updates Azure network configuration on the following event: System boot. 2020-11-09 18:12:09,307 - util.py[DEBUG]: Attempting to remove /etc/netplan/90-hotplug-azure.yaml 2020-11-09 18:12:09,307 - handlers.py[DEBUG]: finish: azure-ds/maybe_remove_ubuntu_network_config_scripts: SUCCESS: maybe_remove_ubuntu_network_config_scripts It does this before the regular cloud-init network configuration is written, or `netplan generate` is called: 2020-11-09 18:12:09,465 - util.py[DEBUG]: Writing to /etc/netplan/50-cloud-init.yaml - wb: [644] 603 bytes 2020-11-09 18:12:09,466 - subp.py[DEBUG]: Running command ['netplan', 'generate'] with allowed return codes [0] (shell=False, capture=True) cloud-init also runs a couple of udevadm commands right after `netplan generate`: 2020-11-09 18:12:09,813 - subp.py[DEBUG]: Running command ['udevadm', 'test-builtin', 'net_setup_link', '/sys/class/net/eth0'] with allowed return codes [0] (shell=False, capture=True) 2020-11-09 18:12:09,828 - subp.py[DEBUG]: Running command ['udevadm', 'test-builtin', 'net_setup_link', '/sys/class/net/lo'] with allowed return codes [0] (shell=False, capture=True) This all happens before systemd-networkd starts: Nov 09 18:12:09.956027 focal-1604945439 systemd[1]: Starting Network Service... So: I'm not really sure what's going on here. I've tried restoring `90 -hotplug-azure.yaml` and removing `50-cloud-init.yaml`; that doesn't cause the issue to reproduce on a subsequent boot. One thing worth noting, that could lead to unexpected state: cloud-init performs a DHCP on this interface (in order to be able to fetch the network configuration it is going to apply). It does this in a sandbox (i.e. it doesn't use system configuration for it), but potentially that could mean that there's (kernel?) state for that interface which {udev,network}d interpret in a way that leads to this issue? ** Changed in: cloud-init (Ubuntu) Status: Incomplete => New ** Changed in: systemd (Ubuntu) Status: New => Incomplete -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1902960 Title: Upgrade from 245.4-4ubuntu3.3 to 245.4-4ubuntu3.2 appears to break DNS resolution in some cases To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1902960/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs