How to use a custom DNS

In some scenarios the default of using the system-provided DNS will not be sufficient. When that’s the case, you can use the --cloud-init option to the launch command, or modify the networking configuration after the instance started.

Contents:

The --cloud-init approach


To use a custom DNS in your instances, you can use this cloud-init snippet:

#cloud-config
bootcmd:
- printf "[Resolve]\nDNS=8.8.8.8" > /etc/systemd/resolved.conf
- [systemctl, restart, systemd-resolved]

Replace 8.8.8.8 with whatever your preferred DNS server is. You can then launch the instance using the following:

$ multipass launch --cloud-init systemd-resolved.yaml

The netplan.io approach


After the instance booted, you can modify the /etc/netplan/50-cloud-init.yaml file, adding the nameservers entry:

network:
  ethernets:
    ens3:
      dhcp4: true
      match:
        macaddress: 52:54:00:fe:52:ee
     set-name: ens3
     nameservers:
       search: [mydomain]
       addresses: [8.8.8.8]

You can then test it:

$ sudo netplan try
Do you want to keep these settings?


Press ENTER before the timeout to accept the new configuration


Changes will revert in 120 seconds
...
1 Like