Package: ddclient
Version: 3.10.0-2
When ddclient is configured to update the IPv6 address based on a
network device's address using dyndns2 protocol, version 3.10.0-2, as
shipped with bookworm, fails to correctly initialise itself from an
existing configuration file that used to work with version 3.9:
sudo ddclient -file /etc/ddclient.conf
WARNING: '' is not a valid IPv4 or IPv6 address
WARNING: found neither IPv4 nor IPv6 address
WARNING: myhost.mydomain.tld: unable to determine IP address with
strategy use=ip
Use of uninitialized value $ip in string at /usr/bin/ddclient line 3639.
FAILED: updating myhost.mydomain.tld: abuse: The hostname specified
is blocked for abuse; you should receive an email notification which
provides an unblock request link.
The last error message given here because said behaviour causes ddclient
to repeatedly send update requests with empty IP to the provider which
in this case reverted to blocking the affected hostname.
The following configuration is used:
protocol=dyndns2
usev6=ifv6
usev4=disabled
if=enp0s31f6
ssl=yes
server=ipv6.mydyndnsprovider.tld
login=someuser
password='secret'
myhost.mydomain.tld
Note that no attempt is made to configure a statically provided ip
address, whereas the 3rd error message refers to use=ip which is not to
be used here.
Running with -verbose and -debug is showing some relevant output given
in excerpt here:
sudo ddclient -file /etc/ddclient.conf -verbose -debug
...
=== globals ====
globals{debug} : 1
globals{file} : /etc/ddclient.conf
globals{if} : enp0s31f6
globals{login} : <redacted>
globals{password} : <redacted>
globals{protocol} : dyndns2
globals{quiet} : 0
globals{server} : ipv6.mydyndnsprovider.tld
globals{ssl} : 1
globals{usev4} : disabled
globals{usev6} : ifv6
globals{verbose} : 1
=== config ====
config{myhost.mydomain.tld}{atime} : 0
...
config{myhost.mydomain.tld}{if} : enp0s31f6
config{myhost.mydomain.tld}{ip} : <undefined>
config{myhost.mydomain.tld}{ipv4} : <undefined>
config{myhost.mydomain.tld}{ipv6} : <undefined>
...
config{myhost.mydomain.tld}{use} : ip
...
Clearly, the correctly configured usev4/usev6 options were incorrectly
transferred into the host config map as use=ip. Giving the usev6=ifv6
option on the host name line should directly configure this setting for
this host, but fails to work either.
The perl script is then falling back to finding out the default IPv6
address, succeeds to do so (!) and still is sending a web request with
empty IP given:
DEBUG: get_ipv6: using (ifv6, default) reports [machine's correct
IPv6 address]
Use of uninitialized value $ip in string at /usr/bin/ddclient line 3639.
DEBUG:
DEBUG: nic_dyndns2_update -------------------
Use of uninitialized value $_[2] in sprintf at /usr/bin/ddclient line
2160.
INFO: setting IP address to for myhost.mydomain.tld
UPDATE: updating myhost.mydomain.tld
...
CONNECTED: using SSL
SENDING: GET
/nic/update?system=dyndns&hostname=myhost.mydomain.tld&myip= HTTP/1.1
...