Skip to content

Caching issues (dual stack) and forced updates #484

Open
@TobenderZephyr

Description

Hi everyone!
First of all, thank you very much for this amazing tool.

I am running this tool as a self compiled variant since the repositories did not give me the newest version of inadyn.
I followed the instructions carefully and use default@strato.com as my provider.

Since i am running dual stack and need both ipv4 and ipv6 available, I configured the provider twice with an identifier ipv4 and ipv6.
Just by coincidence I found out, that my IP needed to update more often than it should have since it uses caching.

Problem 1

Cached files do get mixed up since they dont make use of the identifier;
They each land in /var/cache/inadyn/ (in my case it is stored under /usr/local/var/cache/inadyn)

root@host:~# ls -la /usr/local/var/cache/inadyn
total 20
drwxr-xr-x 2 root root 4096 Apr 19 22:40 .
drwxr-xr-x 4 root root 4096 May 10 19:45 ..
-rw-r--r-- 1 root root    7 May 12 10:13 default@strato.com-fqdn1.cache
-rw-r--r-- 1 root root    7 May 12 08:12 default@strato.com-fqdn2.cache
-rw-r--r-- 1 root root    7 May 12 08:12 default@strato.com-fqdn3.cache

Since it is not possible for me to use a custom provider with inadyn (weird https://user:pass@dyndns.strato.com/nic/update syntax),
I decided to create a second systemd service which specified another cache directory in the Exec statement).

So i now have a cache directory for ipv4 and ipv6.
But maybe this is not how it should be and perhaps something to improve?

Problem 2

Now I am a bit concerned about the infrequent - or should I say forced updates by both services.
Inadyn is trying to force updates where it shouldn't (My IPs have not changed in a while).
Cache files exist; the contents equal their current IP addresses, and yet updates are somehow forced - or at least inadyn tries to update, but it gets refused by the provider (abuse)
Do you have any hints what could go wrong here?

IPv4

/usr/local/etc/inadyn.conf

iface = eth0
allow-ipv6 = true
provider default@strato.com:ipv4 {
     username = REDACTED
     password = REDACTED
     hostname = { REDACTED, REDACTED, REDACTED }
     checkip-command = "/usr/bin/getextip"
}

/usr/bin/getextip

#!/bin/bash
curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'

systemctl status inadyn

root@host:~# systemctl status inadyn
● inadyn.service - Internet Dynamic DNS Client
     Loaded: loaded (/lib/systemd/system/inadyn.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-05-10 19:49:10 CEST; 1 day 22h ago
       Docs: man:inadyn
             man:inadyn.conf
             file:/usr/local/share/doc/inadyn/README.md
   Main PID: 2614834 (inadyn)
      Tasks: 1 (limit: 9260)
        CPU: 14.242s
     CGroup: /system.slice/inadyn.service
             └─2614834 /usr/local/sbin/inadyn --foreground --syslog

May 12 17:23:34 host inadyn[2614834]: Temporary error in DDNS server response: DDNS server busy, try later
May 12 17:23:34 host inadyn[2614834]: Will retry again in 600 sec ...
May 12 17:33:35 host inadyn[2614834]: Update forced for alias REDACTED, new IP# 1.2.3.4
May 12 17:33:35 host inadyn[2614834]: Update forced for alias REDACTED, new IP# 1.2.3.4
May 12 17:33:35 host inadyn[2614834]: Temporary error in DDNS server response: DDNS server busy, try later
May 12 17:33:35 host inadyn[2614834]: Will retry again in 600 sec ...
May 12 17:43:35 host inadyn[2614834]: Update forced for alias REDACTED new IP# 1.2.3.4
May 12 17:43:35 host inadyn[2614834]: Update forced for alias REDACTED, new IP# 1.2.3.4
May 12 17:43:35 host inadyn[2614834]: Temporary error in DDNS server response: DDNS server busy, try later
May 12 17:43:35 host inadyn[2614834]: Will retry again in 600 sec ...

IPv6

/usr/local/etc/inadyn-ipv6.conf

period = 1200
iface = eth0
allow-ipv6 = true
provider default@strato.com:ipv6 {
    username = REDACTED
    password = REDACTED
    hostname = { REDACTED, REDACTED, REDACTED }
    checkip-command = "/usr/bin/getextip6"
}

/usr/bin/getextip6

#!/bin/sh
ip -6 -o addr show dev eth0 scope global | awk '{print $4}' | grep -v "fd00::" | cut -d"/" -f1

systemctl status inadyn-ipv6

root@host:~# systemctl status inadyn-ipv6
● inadyn-ipv6.service - Internet Dynamic DNS Client
     Loaded: loaded (/etc/systemd/system/inadyn-ipv6.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-05-10 19:53:23 CEST; 1 day 22h ago
       Docs: man:inadyn
             man:inadyn.conf
             file:/usr/local/share/doc/inadyn/README.md
   Main PID: 2620635 (inadyn)
      Tasks: 1 (limit: 9260)
        CPU: 6.974s
     CGroup: /system.slice/inadyn-ipv6.service
             └─2620635 /usr/local/sbin/inadyn --foreground -f /usr/local/etc/inadyn-ipv6.conf --cache-dir /usr/local/var/cache/inadyn-ipv6 --syslog --pidfile /var/run/inadyn-ipv6.pid

May 11 12:23:45 host inadyn[2620635]: Update forced for alias REDACTED, new IP# 2003:a:b:c:d:e:f:1
May 11 12:23:45 host inadyn[2620635]: Update forced for alias REDACTED, new IP# 2003:a:b:c:d:e:f:1
May 11 12:23:45 host inadyn[2620635]: Temporary error in DDNS server response: DDNS server busy, try later
May 11 12:23:45 host inadyn[2620635]: Will retry again in 600 sec ...
May 11 12:33:45 host inadyn[2620635]: Update forced for alias REDACTED, new IP# 2003:a:b:c:d:e:f:1
May 11 12:33:45 host inadyn[2620635]: Update forced for alias REDACTED, new IP# 2003:a:b:c:d:e:f:1
May 11 12:33:45 host inadyn[2620635]: Update forced for alias REDACTED, new IP# 2003:a:b:c:d:e:f:1
May 11 12:33:45 host inadyn[2620635]: Updating IPv4 cache for REDACTED
May 11 12:33:45 host inadyn[2620635]: Updating IPv4 cache for REDACTED
May 11 12:33:45 host inadyn[2620635]: Updating IPv4 cache for REDACTED

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions