Updating Google Domains Dynamic Records
In Google Domains, you can set up dynamic records that are updated by a local client. Here is how you do that.
Add record in Google Domains
Scroll to the bottom of the DNS records page and there is a Dynamic DNS section. Click on Manage dynamic DNS and add the record. After you save, you will see something like this:
The IP address will be 0.0.0.0 until you run an update. So let’s go install a dynamic client!
You will need the details that you see in View Credentials, there is a unique username and password for each record.
Install DDClient
Run this command
sudo apt install ddclient
which will install and step through the ddclient config, asking you for the service you want to use, the credentials and records you want to update. You can also edit this later in the .conf file.
Once that completes, you can edit the config and either confirm, update or change
sudo nano /etc/ddclient.conf
It will look something like this:
protocol=googledomains
use=web, web=https://domains.google.com/checkip
login=[username1]
password=’[password1]’
[URL1.domain.com]protocol=googledomains
use=web, web=https://domains.google.com/checkip
login=[username2]
password=’[password2]’
[URL2.domain.com]
Run this command the load in the new config:
sudo service ddclient restart
You should now be able to refresh the Google Domains page and see your IP address.
Run the update on a scheduled basis
So far we have a functional update when run manually. Probably not that helpful with a dynamic IP address. So let’s run a scheduled update.
We need to edit the ddclient defaults.
sudo nano /etc/default/ddclient
There are 4 entries that matter:
run_dhclient=“false”
run_ipup=“false”
run_daemon=“true”
daemon_interval=“5m”
the first two items need to be “false” if you want to run the daemon service. Change the “5m” value to the schedule you desire. Restart the ddclient service to update, and then check the status:
sudo service ddclient status
You should see something like this:
● ddclient.service - Update dynamic domain name service entries
Loaded: loaded (/lib/systemd/system/ddclient.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-01-25 09:25:49 PST; 1h 58min ago
Docs: man:ddclient(8)
Process: 1160436 ExecStart=/usr/sbin/ddclient -daemon $daemon_interval -syslog -pid /run/ddclient.pid (code=exited, status=0/SUCCESS)
Main PID: 1160437 (ddclient - slee)
Tasks: 1 (limit: 4163)
CPU: 888ms
CGroup: /system.slice/ddclient.service
└─1160437 ddclient - sleeping for 70 seconds
Congratulations, you’re done :)