opnsense / opnsense/plugins

os-ddclient generates empty ddclient.conf although account exists in config.xml/json

Open
#5,501 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

support
Dominant language
PHP
Stars
1.2k
Forks
863
Avg merge
2d 6h
Merged PRs (30d)
10

Description

Important notices
Before you add a new report, we ask you kindly to acknowledge the following:

Title
os-ddclient: account is stored in config.xml/json but ddclient.conf stays empty

Describe the bug
When configuring Dynamic DNS with the os-ddclient plugin, the account is correctly saved in /conf/config.xml and rendered into /usr/local/etc/ddclient.json, but /usr/local/etc/ddclient.conf only contains the header lines:

syslog=yes
pid=/var/run/ddclient.pid

No actual account configuration is written into ddclient.conf.

As a result, ddclient_opn may appear to start or run, but it has no usable account configuration.

I was able to verify that the DynDNS provider itself is working: a manual ddclient test with the same Infomaniak credentials works successfully from the shell.

I do not know the last known working version.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Services -> Dynamic DNS -> Settings
  2. Create a Dynamic DNS account using os-ddclient
  3. I tested both:
    • service dyndns2
    • service custom with protocol dyndns2
  4. Save and apply the configuration
  5. Check the generated files:
    • /conf/config.xml
    • /usr/local/etc/ddclient.json
    • /usr/local/etc/ddclient.conf
  6. Observe that:
    • the account exists in config.xml
    • the account exists in ddclient.json
    • ddclient.conf only contains the header lines and no account entries

Expected behavior
I expect os-ddclient to render a complete and usable /usr/local/etc/ddclient.conf containing the configured account, for example protocol/server/login/password/hostname related entries, so that ddclient_opn can actually perform updates.

Screenshots
If needed, I can provide screenshots showing:

  • the configured DynDNS account in the GUI
  • /usr/local/etc/ddclient.json containing the account
  • /usr/local/etc/ddclient.conf only containing the header lines

Relevant log files
/var/log/system/latest.log showed:
WARNING: failed to start ddclient_opn

/var/log/configd/latest.log showed template generation succeeds:

  • generate template OPNsense/ddclient
  • generated //usr/local/etc/ddclient.conf
  • generated //usr/local/etc/ddclient.json

But the generated ddclient.conf still only contains:
syslog=yes
pid=/var/run/ddclient.pid

Relevant observations:

  • /conf/config.xml contains the DynDNS account
  • /usr/local/etc/ddclient.json contains the DynDNS account
  • /usr/local/etc/ddclient.conf does not contain the DynDNS account

A manual ddclient test worked successfully with the same provider credentials, which suggests the issue is not the provider itself but the plugin/template/runtime generation.

Additional context
Provider used: Infomaniak DynDNS

Manual shell test with ddclient works when using:

  • protocol: dyndns2
  • server: infomaniak.com
  • valid credentials
  • valid hostname
  • explicit IP or otherwise correct IP detection

This strongly suggests that:

  • provider credentials are valid
  • provider endpoint is working
  • the issue is specific to os-ddclient generating or using ddclient.conf

I also tested a custom entry with:

  • service: custom
  • protocol: dyndns2
  • server: infomaniak.com

The account was again present in config.xml and ddclient.json, but ddclient.conf still remained empty except for the header lines.

Environment
Opnsense 26.1.9

Hardware:
Intel(R) N150
4x Intel I226-V 2.5G interfaces
1U rack firewall appliance (PcZinophyte / Topton-style system, N150, no SFP)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by comparing the account data in /conf/config.xml and /usr/local/etc/ddclient.json with the generated /usr/local/etc/ddclient.conf, then trace the OPNsense/ddclient template generation entry point and ddclient_opn startup. Done means a configured account is rendered into a usable ddclient.conf and ddclient_opn can start with that configuration.

Written by the indexing model from the issue text.

Assessment

Tech stack
php
Domain
networking
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.