Bug: Updates without cause and Noisy SHOUTRRR #338

Open
opened 2025-11-20 04:22:54 -05:00 by saavagebueno · 5 comments
Owner

Originally created by @AdyGCode on GitHub (Dec 31, 2023).

TLDR: DDNS-Updater updates when no IP change

  1. Is this urgent: MEDIUM

  2. DNS provider(s) you use:Dynu, DuckDNS

  3. Program version:

    Running version latest built on 2023-11-17T14:08:09.354Z (commit ba2e777)

  4. What are you using to run the container: docker-compose

  5. Extra information

I've been running the service and noted something that could be improved.

I note that every time the app checks the IP, it forces an update to the DDNS even if there is no change in the IP address. This then leads to the "SHOUTERRRRRRRRRRRR" being very noisy and updating even when no change in IP has been made.

A good fix would be to make sure that the IP address is checked against the previous IP address, and only if a change is noted, then this cause the update to the DDNS and to the notifications.

If you need to force an update at a regular interval, then I would add a force-update interval configuration option (default every 24 hours) and a per DDNS service force-update that is optionally available in the config JSON file.

Unfortunately, I am not a Go programmer so, not able to fix this issue.

Host OS: MacOS (for testing)

Originally created by @AdyGCode on GitHub (Dec 31, 2023). **TLDR**: DDNS-Updater updates when no IP change 1. Is this urgent: MEDIUM 2. DNS provider(s) you use:Dynu, DuckDNS 3. Program version: Running version latest built on 2023-11-17T14:08:09.354Z (commit ba2e777) 4. What are you using to run the container: docker-compose 5. Extra information > I've been running the service and noted something that could be improved. > > I note that every time the app checks the IP, it forces an update to the DDNS even if there is no change in the IP address. This then leads to the "SHOUTERRRRRRRRRRRR" being very noisy and updating even when no change in IP has been made. > > A good fix would be to make sure that the IP address is checked against the previous IP address, and only if a change is noted, then this cause the update to the DDNS and to the notifications. > > If you need to force an update at a regular interval, then I would add a force-update interval configuration option (default every 24 hours) and a per DDNS service force-update that is optionally available in the config JSON file. > > Unfortunately, I am not a Go programmer so, not able to fix this issue. Host OS: MacOS (for testing)
Author
Owner

@qdm12 commented on GitHub (Jan 15, 2024):

The program does a DNS lookup (A or AAAA or both) to check if the IP changed and does not do an update if it matches the last updated IP on file (in updates.json).

Are you using both IPv4 and IPv6? A bug just got fixed today with commit 7ed63a036e which was causing a mix-up of IPv4 and IPv6 in the code, so maybe that could had been the cause?

It would be nice if you can share more about your configuration (removing actual domain names and keys). Thanks!

@qdm12 commented on GitHub (Jan 15, 2024): The program does a DNS lookup (A or AAAA or both) to check if the IP changed and does not do an update if it matches the last updated IP on file (in updates.json). Are you using both IPv4 and IPv6? A bug just got fixed today with commit 7ed63a036ef310f24373802b89e2ac946844f2ca which was causing a mix-up of IPv4 and IPv6 in the code, so maybe that could had been the cause? It would be nice if you can share more about your configuration (removing actual domain names and keys). Thanks!
Author
Owner

@SlavikCA commented on GitHub (Feb 14, 2024):

I have similar issue:

I use ipv4 only.

and here is what I have in my updates.json:

cat data/updates.json

{
  "records": [
    {
      "domain": "***.****",
      "host": "@",
      "ips": [
        {
          "ip": "104.63.172.143",
          "time": "2024-01-26T16:57:20.186846272Z"
        },
        {
          "ip": "104.63.172.143",
          "time": "2024-01-26T17:13:07.867953704Z"
        },
        {
          "ip": "104.63.172.143",
          "time": "2024-01-26T17:25:17.681410714Z"
        },
        {
          "ip": "104.63.172.143",
          "time": "2024-01-26T17:31:02.793419802Z"
        },
        {
          "ip": "104.63.172.143",
          "time": "2024-02-14T23:42:47.748162983Z"
        }
      ]

As you can see, the IP is same...

All dates in the list above is approximately when I was restarting my container.

@SlavikCA commented on GitHub (Feb 14, 2024): I have similar issue: I use ipv4 only. and here is what I have in my updates.json: cat data/updates.json ```json { "records": [ { "domain": "***.****", "host": "@", "ips": [ { "ip": "104.63.172.143", "time": "2024-01-26T16:57:20.186846272Z" }, { "ip": "104.63.172.143", "time": "2024-01-26T17:13:07.867953704Z" }, { "ip": "104.63.172.143", "time": "2024-01-26T17:25:17.681410714Z" }, { "ip": "104.63.172.143", "time": "2024-01-26T17:31:02.793419802Z" }, { "ip": "104.63.172.143", "time": "2024-02-14T23:42:47.748162983Z" } ] ``` As you can see, the IP is same... All dates in the list above is approximately when I was restarting my container.
Author
Owner

@EspadaV8 commented on GitHub (Feb 15, 2025):

I'm having exactly the same issue. It looks like I've only had 1 IP change since starting to run ddns-updater, but I have nearly 7000 entries in updates.json

{       
  "records": [
    {     
      "domain": "****",
      "owner": "****",
      "ips": [
        { 
          "ip": "202.128.123.69",
          "time": "2025-01-01T14:32:47.595208214+11:00"
        },
        { 
          "ip": "202.128.123.69",
          "time": "2025-01-01T14:42:51.326508192+11:00"
        },
        { 
          "ip": "202.128.123.69",
          "time": "2025-01-01T14:52:46.258100983+11:00"
        },
        { 
          "ip": "202.128.123.69",
          "time": "2025-01-01T15:02:46.277696495+11:00"
        },
        { 
          "ip": "202.128.123.69",
          "time": "2025-01-01T15:07:46.857680662+11:00"
        },
@EspadaV8 commented on GitHub (Feb 15, 2025): I'm having exactly the same issue. It looks like I've only had 1 IP change since starting to run ddns-updater, but I have nearly 7000 entries in `updates.json` ``` { "records": [ { "domain": "****", "owner": "****", "ips": [ { "ip": "202.128.123.69", "time": "2025-01-01T14:32:47.595208214+11:00" }, { "ip": "202.128.123.69", "time": "2025-01-01T14:42:51.326508192+11:00" }, { "ip": "202.128.123.69", "time": "2025-01-01T14:52:46.258100983+11:00" }, { "ip": "202.128.123.69", "time": "2025-01-01T15:02:46.277696495+11:00" }, { "ip": "202.128.123.69", "time": "2025-01-01T15:07:46.857680662+11:00" }, ```
Author
Owner

@jdevera commented on GitHub (Aug 14, 2025):

Caution

Edit: This was a problem with my setup, see comment below.

I came here with the same problem, getting a notification every ten minutes, but in my case it's only for one of three domains. This is my redacted config:

{
    "settings": [
        {
            "domain": "XXXXX.duckdns.org",
            "ip_version": "ipv4",
            "provider": "duckdns",
            "token": "XXXXX"
        },
        {
            "domain": "XXXX.XXXXX.xyz",
            "password": "XXXXX",
            "provider": "namecheap"
        },
        {
            "domain": "YYY.XXXXXXXXXX",
            "ip_version": "ipv4",
            "provider": "cloudflare",
            "token": "XXXXXXXXXXX",
            "ttl": 1,
            "zone_identifier": "XXXXXXXX"
        }
    ]
}

My repeated updates appear to happen only for the Cloudflare one. I also sw this in the log:

ddns-updater  | 2025-08-14T16:11:40+01:00 INFO ipv4 address of YYY.XXXXXXXXXX is  and your ipv4 address is 47.63.39.177
ddns-updater  | 2025-08-14T16:11:40+01:00 INFO Updating record [domain: XXXXXXXXXX | owner: YYY | provider: cloudflare | ip: ipv4] to use A.B.C.D
ddns-updater  | 2025-08-14T16:21:40+01:00 INFO ipv4 address of YYY.XXXXXXXXXX is  and your ipv4 address is A.B.C.D
ddns-updater  | 2025-08-14T16:21:40+01:00 INFO Updating record [domain: XXXXXXXXXX | owner: YYY | provider: cloudflare | ip: ipv4] to use A.B.C.D

Where A.B.C.D is always the same IP address, but it seems like the domain's current IP address is missing from those entries, like it cannot get the current IP address linked to the domain.

@jdevera commented on GitHub (Aug 14, 2025): > [!CAUTION] > Edit: This was a problem with my setup, see comment below. I came here with the same problem, getting a notification every ten minutes, but in my case it's only for one of three domains. This is my redacted config: ```json { "settings": [ { "domain": "XXXXX.duckdns.org", "ip_version": "ipv4", "provider": "duckdns", "token": "XXXXX" }, { "domain": "XXXX.XXXXX.xyz", "password": "XXXXX", "provider": "namecheap" }, { "domain": "YYY.XXXXXXXXXX", "ip_version": "ipv4", "provider": "cloudflare", "token": "XXXXXXXXXXX", "ttl": 1, "zone_identifier": "XXXXXXXX" } ] } ``` My repeated updates appear to happen only for the Cloudflare one. I also sw this in the log: ``` ddns-updater | 2025-08-14T16:11:40+01:00 INFO ipv4 address of YYY.XXXXXXXXXX is and your ipv4 address is 47.63.39.177 ddns-updater | 2025-08-14T16:11:40+01:00 INFO Updating record [domain: XXXXXXXXXX | owner: YYY | provider: cloudflare | ip: ipv4] to use A.B.C.D ddns-updater | 2025-08-14T16:21:40+01:00 INFO ipv4 address of YYY.XXXXXXXXXX is and your ipv4 address is A.B.C.D ddns-updater | 2025-08-14T16:21:40+01:00 INFO Updating record [domain: XXXXXXXXXX | owner: YYY | provider: cloudflare | ip: ipv4] to use A.B.C.D ``` Where A.B.C.D is always the same IP address, but it seems like the domain's current IP address is missing from those entries, like it cannot get the current IP address linked to the domain.
Author
Owner

@jdevera commented on GitHub (Aug 15, 2025):

My issue in the comment above was a consequence of my DNS setup. I had a local resolver for my domain that was authoritative and was not responding for the subdomain I was DDNSing.

I used a static-stub zone in bind9 config to force that one subdomain to get resolved out in the world. Now it works.

Sorry for the noise.

@jdevera commented on GitHub (Aug 15, 2025): My issue in the comment above was a consequence of my DNS setup. I had a local resolver for my domain that was authoritative and was not responding for the subdomain I was DDNSing. I used a `static-stub` zone in bind9 config to force that one subdomain to get resolved out in the world. Now it works. Sorry for the noise.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/ddns-updater#338