🛡️
Firewall

pfSense / OPNsense

Keep your firewall hostname updated automatically using a cron job.

⚠️
No Device Added Yet
Add a device to see your personalised check-in URL in the code examples below.
1
Log into your pfSense / OPNsense shell
SSH into your firewall as root, or go to Diagnostics → Command Prompt in the web UI and select Shell.
On pfSense: System → Advanced → Admin Access → enable Secure Shell. On OPNsense: System → Settings → Administration → enable SSH.
2
Verify curl is available
pfSense and OPNsense both include curl. Confirm it is available by running:
bash which curl
You should see /usr/local/bin/curl. If not, install it via System → Package Manager.
3
Test your check-in URL manually
Run a one-time check-in to confirm your device token is working and DNS updates correctly:
bash curl -s "https://greatddns.com/api/checkin/?token=YOUR-DEVICE-TOKEN"
You should receive a JSON response like {"status": "ok", "ip": "x.x.x.x", "changed": true}. If you see an error, double-check your token on the device detail page.
4
Create a persistent cron job
Write the cron job to /etc/cron.d/ so it survives reboots. This runs the check-in every 5 minutes:
bash printf '*/5\t*\t*\t*\t*\troot\tcurl -s "https://greatddns.com/api/checkin/?token=YOUR-DEVICE-TOKEN" > /dev/null\n' > /etc/cron.d/greatddns /etc/rc.d/cron restart
The /etc/cron.d/ directory is respected by pfSense 23.09+ and OPNsense. For older pfSense versions, use the Cron package (System → Package Manager → search "Cron") and add it via the GUI.
5
Verify the cron job is installed
Confirm the entry was written correctly:
bash cat /etc/cron.d/greatddns
6
Wait 5 minutes and check the log
After the first automatic check-in fires, you can review the output:
bash curl -s "https://greatddns.com/api/checkin/?token=YOUR-DEVICE-TOKEN"
You can also confirm DNS is resolving correctly by running: drill yourhostname.greatddns.com A