Ddns won't automatically update

Hi,

I installed ddns like the following on my openwrt router, it worked initially but I just found that it won't automatically update.

opkg update 
opkg install ddns-scripts
opkg install luci-app-ddns

I checked that ddns was stopped on service list

root@OpenWrt:~# service list |grep ddns
/etc/init.d/ddns              	   enabled	   stopped

When I tried to restart ddns, error occurs as followes.

root@OpenWrt:~# service ddns restart
085121  WARN : Service section disabled! - TERMINATE
Error relocating /usr/lib/libcurl.so.4: wolfSSL_UseALPN: symbol not found
Error relocating /usr/lib/libcurl.so.4: wolfSSL_ALPN_GetProtocol: symbol not found

Please help me solve this issue.
Thanks in advance

Is wolfSSL installed?

No, I didn't
Should I install wolfSSL?
If so, how should I install it on openwrt?

Weird, it looks like a dependency, should have been pulled when you installed ddns.

The package is called libwolfssl24, and installs the same way as any other openwrt package.

I don't know when libwolfssl24 was installed. Moreover it is depended upon by several packages as followes.

root@OpenWrt:~# opkg remove libwolfssl24
No packages removed.
Collected errors:
 * print_dependents_warning: Package libwolfssl24 is depended upon by packages:
 * print_dependents_warning: 	libustream-wolfssl20201210
 * print_dependents_warning: 	wpad-basic-wolfssl
 * print_dependents_warning: 	libcurl4
 * print_dependents_warning: These might cease to work if package libwolfssl24 is removed.

 * print_dependents_warning: Force removal of this package with --force-depends.
 * print_dependents_warning: Force removal of this package and its dependents
 * print_dependents_warning: with --force-removal-of-dependent-packages.

The same error occurs when executes curl as well.

root@OpenWrt:~# curl
Error relocating /usr/lib/libcurl.so.4: wolfSSL_UseALPN: symbol not found
Error relocating /usr/lib/libcurl.so.4: wolfSSL_ALPN_GetProtocol: symbol not found

And, if I add the following in config service of /etc/config/ddns,
option use_https '1'
the error doesn't occur but the following error occurs.

root@OpenWrt:~# service ddns restart
root@OpenWrt:~#  141045  WARN : Service section disabled! - TERMINATE
 141045 ERROR : cURL: libcurl compiled without https support - TERMINATE
^C

It seems that 'service ddns restart' calls curl. And curl already installed on openwrt doesn't support https.

Do you have any suggestion?

Try installing libmbedtls and ca-certificates

1 Like

Thanks for your suggestion, however the result is the same as before

root@OpenWrt:~# service ddns restart
root@OpenWrt:~#  162104  WARN : Service section disabled! - TERMINATE
Error relocating /usr/lib/libcurl.so.4: wolfSSL_UseALPN: symbol not found
Error relocating /usr/lib/libcurl.so.4: wolfSSL_ALPN_GetProtocol: symbol not found

Any other idea?

did you put wolfssl back in ?

No, however wolfssl currently looks as followes in my openwrt.

root@OpenWrt:~# opkg list_installed | grep wolfssl
libustream-wolfssl20201210 - 2020-12-10-68d09243-1
libwolfssl24 - 4.5.0-stable-5
wpad-basic-wolfssl - 2020-06-08-5a8b3662-20

The root of the problem here is in the curl program. curl is a CLI that does many things but the primary function here is to fetch https text from a web server without being a full browser.

For example curl https://downloads.openwrt.org should fetch the HTML source of the downloads page and dump it to your terminal.

The curl on your router is trying to link in wolfssl, but it is likely compiled for a different version of wolfssl. Using wolfssl at all is unusual since the curl in 19.07.5 uses libmbedtls12.

I would suggest remove and reinstall curl and libcurl, which should bring in the exact SSL library it wants, then test curl using a manual download like I show above.

1 Like

Thanks for your response.
But the result is the same as before.

I don't think that my openwrt needs wolfssl, it probably needs openssl for IPKv2 vpn.
So, it seems better to unlink wolfssl from curl.

Can you please let me know how to unlink wolfssl from curl?

That's what I'm saying, curl should not have any link to wolfssl in the first place-- it should be using mbedtls. Are you running OpenWrt 19.07.5?

I used to use linux long time ago, but I'm not used to openwrt snapshot well yet. I don't know how to check openwrt version from snapshot.
The firmware version is OpenWrt SNAPSHOT r15385-xxxxxxxxxx / LuCI Master git-21.002.46765-xxxxxxx.
Kernel version is 5.4.85.

How can I check the openwrt version?

What device is it, anyway?

Xiaomi Redmi Router AC2100

A problem with snapshots is that the packages on the server change to new versions and may not match the libraries previously installed. Since old versions are not kept on the server you might need to sysupgrade the whole OS to the latest snapshot. Then install the packages you need on the same day.

1 Like

Thanks again for your suggestion.

I just upgraded openwrt with ~sysupgrad.bin from the following link.

And, installed and started ddns whose result as followes.

root@OpenWrt:~# service ddns start
root@OpenWrt:~#  075837  WARN : Service section disabled! - TERMINATE

curl isn't installed yet, so it currently doesn't occur wolfssl issue.

However, ddns looks stopped as followes.

root@OpenWrt:/etc/config# service list ddns
/etc/init.d/ddns              	   enabled	   stopped

But, In the log file of /var/log/ddns, it checks lookup by the period, the valule of check_intval/check_unit.
I need to check this more, especially when ip changes, though.

Is it normal that the ddns service looks stopped in 'service list'?

Service section disabled means that the config file has a section (instance) with enable set to 0. This may be normal if you didn't remove the default section.

1 Like

Thanks,
so I just commented the section, myddns_ipv6, the warning doesn't appear any more when service ddns restart.

And, although ddns looks running on luci, do you know the reason why the ddns service looks stopped in 'service list'?

image

root@OpenWrt:/etc/config# service list ddns
/etc/init.d/ddns              	   enabled	   stopped

service list doesn't work for me, however you can verify that ddns is running with ps wwww | grep ddns

1 Like