Dynamic DNS not updating after IP change

Started by dMY1, June 10, 2025, 07:52:53 PM

Previous topic - Next topic
Hi,

I have moved to a new place (new ISP) and in the process I've updated
OPNsense. Now my dynamic DNS is broken. I don't know if it's caused by the
update (new OPNsense version) or the configuration change.

Before the change I had a public IP address on WAN and when that address
changed, ddclient dutyfully updated the IP address. I'm using nsupdate as
dynamic DNS service. The internet connection was very stable, so those IP
updates were rare. Usually I kept the same IP address for weeks if not months.

Now after changing ISP and updating OPNsense I unfortunately do see a private
IP address on WAN. So I disabled tracking the WAN interface. And my internet
connection is very flaky. The IP address changes at least once every day.

During my search I discovered that ddclient is deprecated and OPNsense has
reimplemented the dynamic DNS code. So I've set the backend to "native", which
should use a new OPNsense python client according to the docs¹. The interval
is set to 300 (5min).

I'm surprised I still see ddclient running as a service and also the log files
referencing ddclient:

  2025-06-10T19:35:38 Notice ddclient Account a0... [nsupdatev4 - nsupdate foobar] not modified
  2025-06-10T19:35:38 Notice ddclient Account a0... [nsupdatev4 - nsupdate foobar] executing
  2025-06-10T19:30:37 Notice ddclient Account a0... [nsupdatev4 - nsupdate foobar] not modified
  2025-06-10T19:30:37 Notice ddclient Account a0... [nsupdatev4 - nsupdate foobar] executing
  2025-06-10T19:25:36 Notice ddclient Account a0... [nsupdatev4 - nsupdate foobar] not modified
  2025-06-10T19:25:36 Notice ddclient Account a0... [nsupdatev4 - nsupdate foobar] executing
  2025-06-10T19:20:36 Notice ddclient Account a0... [nsupdatev4 - nsupdate foobar] not modified
  2025-06-10T19:20:36 Notice ddclient Account a0... [nsupdatev4 - nsupdate foobar] executing

If the client is set to "internal" why is ddclient running instead of the
OPNsense dyndns python client? So the client is running, but no updates occur.

Since my WAN has a private IP address the client can't just look at the WAN
address. I'm not sure how this works. But as I understand it, the client runs
every 300s and checks if the IP address needs to be updated and then does so
if required. This does not seem to happen here.

If I manually enter the IP address in nsupdate everything works fine for a few
hours. But the opnsense client never updates the IP address, although the
address has changed.

OPNSense 25.1.7_4-amd64

What have I misconfigured here? What do I need to change so the IP address is
updated when necessary? Any help how to debug this further much appreciated.

¹ https://docs.opnsense.org/manual/dynamic_dns.html

If your WAN has a private IP address you cannot access your system from the Internet, anyway - without getting access and performing proper settings at the ISP router in front of it, that is.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

That is sorted out. I can access it when using the IP address. But that's not an option since it's not static. My issue is the dynamic DNS problem.

Then you probably need to find a DDNS provider who updates based on the source address the request is coming from. Because OPNsense has no chance of knowing the proper public address.
Deciso DEC750
People who think they know everything are a great annoyance to those of us who do. (Isaac Asimov)

June 10, 2025, 09:25:16 PM #4 Last Edit: June 10, 2025, 10:04:41 PM by dMY1
Then I don't understand what is the reason behind the setting "Interface to monitor: None". What does the "None" setting do if there's no interface associated?

And there is also the setting "Check ip method" with more options than just "interface". But I'm not sure what all of these methods do and if they can solve my problem. I've set it to "nsupdate.info-ipv4". This should use a web service (which only sees the real IP) rather than relying on the interface.