If you want to set up a DDNS Server instead, please see ddns.server.
DDNS stands for Dynamic DNS. Simply put, using this service gives a name to your IP. So if you're hosting something on your line, people would not have to bother typing your IP. They can just type in your domain name! It also helps when your IP changes. Users won't need to discover what your new IP is, they can simply type your domain name.
This guide will help you configure your DDNS service, so that your router auto-updates your IP to your DDNS provider. The simplest method possible would be through LuCI (the default webUI for OpenWrt).
OpenWrt uses ddns-scripts which are Bourne shell scripts.
There are other scripts and programs available in the web, also some DDNS providers offer their own programs.
All of them are currently not ported and tested on OpenWrt.
Inside OpenWrt two package versions are available:
up to Barrier Breaker 14.07 it's ddns-scripts version 1.x
since Chaos Calmer 15.05 it's ddns-scripts version 2.x with IPv6 support and many other extensions
the corresponding LuCI application luci-app-ddns is also available.
Without any annotation the description works for all ddns-scripts versions.
First of all, you'll need to pick and register a DNS name with a compatible DynamicDNS service provider.
For a list of DDNS providers, see:
| ddns-scripts support the following Dynamic DNS service provider out of the box: | |||
|---|---|---|---|
| 3322.org | afraid.org 6) | changeip.com | cloudflare.com 2) 5) 6) |
| core-networks.de 6) | ddnss.de 6) | dhis.org 6) | dnsdynamic.org |
| dnsexit.com | dnshome.de 6) | dnsmax.com | dnsomatic.com |
| dnspark.com | do.de 6) | dtdns.com | duckdns.org 6) |
| duiadns.net 6) | dy.fi | dyndns.org 6) (dyn.com) | dyndnss.net |
| dyns.net | dynsip.org | dynu.com | dynv6.com 6) |
| easydns.com | editdns.net | goip.de 6) | google.com 5) 6) |
| he.net 6) | joker.com | loopia.se 6) (loopia.com) | mydns.jp 6) |
| myonlineportal.net 6) | mythic-beasts.com 6) | namecheap.com | nettica.com |
| no-ip.com 1) (noip.com) | no-ip.pl 6) | nsupdate.info 6) | nubem.com |
| ovh.com | regfish.de 6) | schokokeks.org | selfhost.de |
| sitelutions.com | spdyn.de 6) (spdns.de) | strato.com | system-ns.com |
| thatip.com | twodns.de | variomedia.de 6) | zerigo.com 6) |
| zoneedit.com 5) | zzzz.io 5) 6) | BIND nsupdate 3) 4) 6) | |
1) Since CC 15.05 require additional package ddns-scripts_no-ip_com to be installed.
2) needs additional package ddns-scripts_cloudflare to be installed.
3) directly updates a PowerDNS (or maybe bind server) via nsupdate.
4) needs additional package ddns-scripts_nsupdate and bind-client to be installed.
5) SSL support required.
6) Since CC 15.05 support IPv6
If you have picked a DDNS service provider and create your host/domain name you need to note additional your username and password.
Now you need to decide if you want to use secure communication with your DDNS provider or not.
Some provider require secure (HTTPS) communication. Read their help pages for details and also read provider specific informations below.
If you need support, found an issue or only want to request a new extension for the next release, please post your questions/issues/requests here: (Don't forget to post informations about your used software versions.)
A full list of supported settings (some not supported by LuCI webUI):
The source code is available at GitHub:
Login into your router through your browser.
From the menu select 'System' → 'Software'
Press button [Update Lists] to update internal lists of available packages.
Filter for ddns and install luci-app-ddns package.
Installing the package luci-app-ddns will automatically install the package ddns-scripts.
Since CC 15.05 you might need to install provider specific packages ddns-scripts_xxxxx and LuCI language packages luci-i18n-ddns-xx.
After luci-app-ddns (and other packages) are installed, just press any other menu entry on the Openwrt LuCI webUI, and the page will refresh itself and it will appear in the menu under 'Services' → 'Dynamic DNS'.
To install ddns-scripts use the OPKG Package Manager
Since CC 15.05 you might need to install provider specific packages
root@OpenWrt:/#
opkg update opkg install ddns-scripts opkg install ddns-scripts_xxxxx
By default ddns-scripts uses BusyBox buildin 'wget' for DDNS updates over http, which does not support https (SSL).
To perform DDNS updates over https (SSL), you will need to install the 'wget' or 'curl' package, and add the appropriate root certificate for your ddns provider.
Including AA 12.09 only 'curl' package is supported to use for SSL communication.
To install curl and needed certificate bundle follow these steps on console:
root@OpenWrt:/#
opkg update opkg install curl mkdir -p -m0755 /etc/ssl/certs curl -o /etc/ssl/certs/ca-certificates.crt http://curl.haxx.se/ca/cacert.pem
Since BB 14.07 ddns-scripts support both 'wget' and 'curl' package.
Installation is simple by installing either 'wget' or 'curl' plus 'ca-certificates' packages.
If both packages are installed ddns-scripts will use 'wget'.
Since CC 15.05 If both packages installed you can configure which one to prefere. Default is 'wget'.
You can install either via LuCI (from the menu select 'System' → 'Software') and search for 'wget' or 'curl'
of install via console using following commands:
root@OpenWrt:/#
7opkg update opkg install wget # normally you only need opkg install curl # either wget or curl opkg install ca-certificates
If you, also for other software, needs all certificates in one file or you want to update CA certificates reulary then do NOT install 'ca-certificates' package.
'ca-certificate' package is not always backported to older OpenWrt versions.
Install latest CA certificates (in one file) using console:
root@OpenWrt:/#
mkdir -p -m0755 /etc/ssl/certs curl -o /etc/ssl/certs/ca-certificates.crt http://curl.haxx.se/ca/cacert.pem # using curl wget --no-check-certificate -O /etc/ssl/certs/ca-certificates.crt http://curl.haxx.se/ca/cacert.pem # using wget
Since CC 15.05 ddns-scripts support other special communication functions to be used:
crond)wget or to specific interface if curl installed.wget or curl AND bind-host !wget or curl AND bind-host !
ddns-scripts are designed to update one host per configuration/section.
To update multiple hosts or providers or IPv4 and IPv6 for the same host you need to define separate configurations/sections.
Some provider offer to update multiple host within one update request. A possible solution for this option is to use –custom– service name settings.
Have a look at Provider specifics.
The main settings you need to set are (all other normally work fine with the defaults):
| Service name | the DDNS service provider to use |
| Host/Domain | your FQDN you want to update (used by ddns-scripts using nslookup to check if update has happen) |
| Username | username or other parameter to use as username (send urlencoded) |
| Password | password or other parameter to use as password (send urlencoded) |
| Interface | network name (i.e. wan, wan6) used by OpenWrt hotplug event system to start ddns-scripts |
since DD (trunk) the following main settings needs to be set:
| Service name | the DDNS service provider to use |
| Lookup Host | ONE of your defined FQDN you want to update (used by ddns-scripts using nslookup to check if update has happen) |
| Host/Domain | mostly same as 'Lookup Host', but now can also be used as "normal" parameter. i.e. as list of hosts to be updated |
| Username | username or other parameter to use as username (send urlencoded) |
| Password | password or other parameter to use as password (send urlencoded) |
| Interface | network name (i.e. wan, wan6) used by OpenWrt hotplug event system to start ddns-scripts |
After fresh installation a configuration/section 'myddns' and since CC 15.05 'myddns_ipv4' and 'myddns_ipv6' exists ready to be modified for your needs.
You could delete them and define your own.
Please heed the following important hints:
dash-sign "-" inside configuration/section names.'/usr/lib/ddns/services' or '/usr/lib/ddns/services_ipv6' because they will be overwritten during system and package updates!
Login into your router through your browser.
From the menu select 'Services' → 'Dynamic DNS'.
Navigate to the configuration/section you like to change.
Modify the fields you need to change.
Don't forget to check the 'Enabled' option!
Click [Save & Apply] button to save changes.
To add a new configuration/section:
Type the new name into the text entry box at the bottom of the page next to [Add] button.
Do not use a dash character "-" in configuration/section name!
Click [Add] button.
Modify the fields you need to change.
Don't forget to check the 'Enabled' option!
Click [Save & Apply] button to save changes.
Since CC 15.05 'Username' and 'Password' fields are required fields. If your provider do not require one or both of them, simply put in a character of your choise.
Since BB 14.07 you need to enable ddns service!
From the menu select 'System' → 'Startup'.
Set ddns service to enabled.
Including BB 14.07 it is not possible to configure SSL-Support (using HTTPS) via LuCI webUI. You need to configure via console!
Since CC 15.05 options to configure HTTPS communication are only available if wget or curl package is installed. (See Hints if shown.)
Check 'Use HTTP Secure' option.
Additional field 'Path to CA-Certificate' is shown with it's default setting.
If you have installed ca-certificates package leave the shown default! (/etc/ssl/certs)
If you have installed CA certificates in one file from above set the value to: /etc/ssl/certs/ca-certificates.crt
If you like to use other certificate you need to set here the full path to the certificate including file name. (/path/to/file.crt)
If your certificates are stored in a different path, set here the path where your certificates are located. (/path/to/files)
Click [Save & Apply] button to save changes.
If you want to use a DDNS provider currently not listed or you want to update multiple hosts within one configuration/section then you should do the following:
Choose '–custom–' as service.
Additional field 'Custom update-URL' is shown.
Fill in the URL you like to use.
Please read URL syntax description below.
Also have a look at Provider specifics.
Click [Save & Apply] button to save changes.
If you found a DDNS provider not listed or with additional IPv6 support or with changed update URL please open an issue at Github-OpenWrt-Packages so it can be included with the next release.
The easiest way to configure ddns-scripts via console is to edit the file /etc/config/ddns directly using build-in vi editor or any other editor you prefer. Other editors as vi needs to be installed separately.
A configuration/section looks like:
/etc/config/ddns
config 'service' 'myddns' option 'service_name' 'example.org' option 'enabled' '1' option 'domain' 'yourhost.example.org' option 'username' 'your_username' option 'password' 'your_password' option 'interface' 'wan' option 'ip_source' 'network' option 'ip_network' 'wan'
Alternatively you can use UCI command line interface.
Example input:
root@OpenWrt:/#
uci set ddns.myddns.service_name="ddnsprovider.com" # only use names listed in /usr/lib/ddns/services # or /usr/lib/ddns/services_ipv6 (since CC 15.05) uci set ddns.myddns.domain="host.yourdomain.net" uci set ddns.myddns.username="your_user_name" uci set ddns.myddns.password="p@ssw0rd" uci set ddns.myddns.interface="wan" # network interface that should start this configuration/section uci set ddns.myddns.enabled="1" uci commit ddns # don't forget this, otherwise data not written to configuration file
ddns.myddns.enabled="1" means:
'ddns' is the configuration file to change (here /etc/config/ddns)'myddns' is the configuration/section to change'enabled' is the option to set/changeequal-sign is the value to set. single- or double-quotes around the value and no space or whitespace around the equal-sign.Example to create/add a new configuration/section "newddns":
root@OpenWrt:/#
uci set ddns.newddns="service" uci set ddns.newddns.service_name="ddnsprovider.com" # only use names listed in /usr/lib/ddns/services # or /usr/lib/ddns/services_ipv6 (since CC 15.05) uci set ddns.newddns.domain="host.yourdomain.net" uci set ddns.newddns.username="your_user_name" uci set ddns.newddns.password="p@ssw0rd" uci set ddns.newddns.interface="wan" # network interface that should start this configuration/section uci set ddns.newddns.enabled="1" uci commit ddns # don't forget this, otherwise data not written to configuration file
Since BB 14.07 you need to enable ddns service by:
root@OpenWrt:/#
/etc/init.d/ddns enable
Including AA12.09 ddns-scripts only support 'curl' package to use for SSL communication.
You should have followed the installation steps above and
add the following entries to desired section in '/etc/config/ddns' file:
/etc/config/ddns
config 'service' 'myddns' ... option 'use_https' '1' option 'cacert' '/etc/ssl/certs/ca-certificates.crt'
Since BB 14.07 you need to add the following entries to the desired section in '/etc/config/ddns' file:
using 'ca-certificates' package:
/etc/config/ddns
config 'service' 'myddns' ... option 'use_https' '1' option 'cacert' '/etc/ssl/certs'
/etc/config/ddns
config 'service' 'myddns' ... option 'use_https' '1' option 'cacert' '/etc/ssl/certs/ca-certificates.crt' # option 'cacert' '/full/path/to/file.crt'
Since CC 15.05 above options can also be set via LuCI webUI.
The options are only shown if 'wget' or 'curl' package is installed!
Following changes need to be done if you use a DDNS provider currently not listed or to update multiple hosts within one configuration/section.
Edit '/etc/config/ddns'
/etc/config/ddns
config 'service' 'myddns' ... # option 'service_name' 'example.org' # comment out "#" or delete option 'update_url' 'http://your.update.url...[USERNAME]...[PASSWORD]...[DOMAIN]...[IP]'
root@OpenWrt:/#
uci delete ddns.myddns.service_name uci set ddns.myddns.update_url="http://your.update.url...[USERNAME]...[PASSWORD]...[DOMAIN]...[IP]" uci commit ddns # don't forget this, otherwise data not written to configuration file
It's not needful to set 'https://'. If SSL support is activated 'http://' is replaced automatically.
The entries [USERNAME] [PASSWORD] [DOMAIN] [IP] are replaced by ddns-scripts just before update.
[USERNAME] is replaced by content of 'option username' from configuration file.
[PASSWORD] is replaced by content of 'option password' from configuration file.
[DOMAIN] is replaced by content of 'option domain' from configuration file.
[IP] is replaced by the current IP address of your OpenWrt system.
carefully set 'option domain' in your configuration. This option is also used to detect if the update was successfully done.
This entry is the DNS name your OpenWrt system will be reachable from the internet.
Have a look at Provider specifics for samples.
If you found a DDNS provider not listed or with additional IPv6 support or with changed update URL please open an issue at Github-OpenWrt-Packages so it can be included with the next release.
This section is currently under construction
Here a list (without preferences) of url's to detect your current public ip used by your system:
1) users reported timeout problems, use links in the line below (…:8245)
2) alias of *.dyndns.com
| | Enable minimum one configuration/section ! since BB 14.07 you need to enable ddns service ! |
Normally no user actions are required because ddns-scripts starts when hotplug ifup event happens. This will happen automatically at system startup when the named interface comes up. Event ifup also happen when a dialup network comes up.
ddns-scripts regularly check if there is a difference between your IP address at DNS and your interface. If different an update request is send to DDNS provider.
Including BB 14.07 if you modify your configuration from LuCI webUI you need to restart ddns-scripts manually (see below).
Since CC 15.05 whenever you [Save & Apply] an Enabled configuration/section from LuCI webUI the corresponding script is automatically restarted.
for all versions if you modify '/etc/config/ddns' configuration file from console, you need to restart ddns-scripts (see below) to apply changes.
To check if ddns-scripts are running you could check inside LuCI via 'Status' → 'Processes'
or via console running
root@OpenWrt:/#
ps -w | grep dynami[c]
'… /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0'
Since CC 15.05 inside LuCI also exists a section 'Dynamic DNS' at 'Status' → 'Overview' page showing the current status of your DDNS configurations.
To check running ddns-scripts processes from the menu goto 'Status' → 'Processes'.
Look for something like '/bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns 0'.
To stop a desired process press the [Terminate] or [Kill] button.
The process should remove from the list.
Including AA 12.09 ddns-scripts can only be started creating an 'ifup' hotplug event by restarting the desired interface.
Keep in mind that also other service processes (i.e. firewall) might be (re-)started via 'ifup' hotplug event!
From the menu select 'Network' → 'Interfaces'. Select the desired interface and press [Connect] button.
Since BB 14.07 you can enable/disable and start/stop ddns-scripts from 'System' → 'Startup' menu.
Look for service 'ddns' and press the button for the desired action.
Since CC 15.05 you can additional enable/disable and start/stop individual configuration/section from 'Overview'-page at 'Services' → 'Dynamic DNS'.
From console command line you could create an 'ifup' hotplug event for the desired network interface. This will start all enabled ddns configurations/sections monitoring this interface.
Keep in mind that also other service processes (i.e. firewall) might be (re-)started via 'ifup' hotplug event!
For INTERFACE, type the specified ddns-scripts interface name (the interface name from /etc/config/network, usually 'wan')
root@OpenWrt:/#
ACTION=ifup INTERFACE=wan /sbin/hotplug-call iface
'myddns'):
root@OpenWrt:/#
/usr/lib/ddns/dynamic_dns_updater.sh myddns 0 &
root@OpenWrt:/#
sh . /usr/lib/ddns/dynamic_dns_functions.sh # note the leading period followed by a space start_daemon_for_all_ddns_sections "wan" exit
root@OpenWrt:/#
ps -w | grep dynami[c]
root@OpenWrt:/#
2493 root 1440 R {dynamic_dns_upd} /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns_1 0
2494 root 1440 R {dynamic_dns_upd} /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns_2 0
root@OpenWrt:/#
kill 2493 # to kill one process kill 2493 2494 # to kill multiple processes
'killall' might not be available on all systems):
root@OpenWrt:/#
killall dynamic_dns_updater.sh # if killall is available
ps | grep dynami[c] | awk '{print $1}' | xargs kill # or if not available
enable/disable and start/stop/restart all enabled ddns configuration/section like every other service:
root@OpenWrt:/#
/etc/init.d/ddns disable /etc/init.d/ddns enable /etc/init.d/ddns start /etc/init.d/ddns stop /etc/init.d/ddns restart
Since CC 15.05 each configuration/section of ddns-scripts can be configured to run once, including retry on error, so it is guaranteed that the update is sent to the provider.
To configure your configuration/section to run once, set the 'option force_interval' to '0'. By doing so, any setting of 'option force_unit' is ignored.
Inside LuCI, set the 'Force Interval' setting in the [Timer Settings]-tab of your desired configuration, or edit '/etc/config/ddns' via console.
/etc/config/ddns
config 'service' 'myddns' ... option 'force_interval' '0'
If you set ddns service to 'enable', then all configurations/sections are started during interface 'ifup'.
The configurations/sections configured to run once will stop after successful update.
To guarantee that your configurations only run once not looking for an interface event you need to disable ddns service.
To start your configuration via built-in crond, use the following entry as the command inside the crontab configuration (replace 'myddns' with the name of your configuration/section):
root@OpenWrt:/#
/usr/lib/ddns/dynamic_dns_updater.sh myddns 0 &
Including AA 12.09 there is no syslog support implemented in ddns-scripts.
To get an output to syslog you need to do the following modifications.
Edit '/etc/config/ddns' and insert the new 'option use_syslog' to each configuration/section:
/etc/config/ddns
config 'service' 'myddns' ... option 'use_syslog' '1'
'/usr/lib/ddns/dynamic_dns_functions.sh' and append the following lines:
/usr/lib/ddns/dynamic_dns_functions.sh
syslog_echo()
{
if [ "$use_syslog" = 1 ]
then
echo $1|logger -t ddns-scripts-$service_id
fi
}
For 10.03 additional edit '/usr/lib/ddns/dynamic_dns_updater.sh' and add the following lines:
/usr/lib/ddns/dynamic_dns_updater.sh
260 time_since_update=$(($current_time - $last_update)) 261 262 syslog_echo "Running IP check ..." # add this line 263 verbose_echo "Running IP check..." ... ... 291 update_output=$( $retrieve_prog "$final_url" ) 292 syslog_echo "Update returned: $update_output" # add this line 293 verbose_echo "Update Output:"
For AA 12.09 additional edit '/usr/lib/ddns/dynamic_dns_updater.sh' and add the following lines:
/usr/lib/ddns/dynamic_dns_updater.sh
284 time_since_update=$(($current_time - $last_update)) 285 286 syslog_echo "Running IP check ..." # add this line 287 verbose_echo "Running IP check..." 288 verbose_echo "current system ip = $current_ip" 289 verbose_echo "registered domain ip = $registered_ip" ... ... 316 if [ $? -gt 0 ] 317 then syslog_echo "update failed, retrying in $retry_interval_seconds seconds" # add this line 318 verbose_echo "update failed" 319 sleep $retry_interval_seconds 320 continue 321 fi 322 syslog_echo "Update successful" # add this line 323 verbose_echo "Update Output:"
For BB 14.07 output to syslog is already supported by ddns-scripts
but you need to edit '/etc/config/ddns' via console because LuCI does not support this setting:
/etc/config/ddns
config service "myddns" ... option use_syslog "1"
Since CC 15.05 the 'option use_syslog' (also in LuCI) allow to define the level of events logged to syslog:
| Value | Reporting |
|---|---|
| 0 | disable |
| 1 | info, notice, warning, errors |
| 2 | notice, warning, errors |
| 3 | warning, errors |
| 4 | errors |
| |
|
Including BB 14.07 ddns-scripts have no logfile support.
To add logfile support to these versions you need to do the following modifications.
Edit '/etc/config/ddns' and insert the new 'option use_logfile' to each configuration/section:
/etc/config/ddns
config 'service' 'myddns' ... option 'use_logfile' '1'
Edit '/usr/lib/ddns/dynamic_dns_functions.sh' and add the following lines to 'verbose_echo()' function:
/usr/lib/ddns/dynamic_dns_functions.sh
102
103 verbose_echo()
104 {
105 if [ "$verbose_mode" = 1 ]
106 then
107 echo $1
108 fi
if [ "$use_logfile" = 1 ]
then
LOGDIR="/var/log/ddns" # log directory
LOGFILE="$LOGDIR/${service_id}.log" # logfile name
LOGLINES=500 # max number of lines in logfile
[ -d $LOGDIR ] || mkdir -p -m755 $LOGDIR
echo $1 >> $LOGFILE
# verbose mode then no log truncate
[ "$verbose_mode" = 1 ] || sed -i -e :a -e '$q;N;'$LOGLINES',$D;ba' $LOGFILE
fi
109 }
110
Since CC 15.05 ddns-scripts have buildin logfile support.
Logfiles are automatically truncated to a settable number of lines (default 250 lines).
Inside LuCI you could enable logfile in [Advanced Settings]-tab of desired configuration/section.
From console you need to edit '/etc/config/ddns' file:
/etc/config/ddns
config 'service' 'myddns' ... option 'use_logfile' '1'
To view logfile content from LuCI select the [Log File Viewer]-tab of desired configuration/section and press the [Read / Reread log file]-button.
From console you should change to the ddns log directory (default '/var/log/ddns').
You will find a logfile for every configuration/section.
root@OpenWrt:/#
cd /var/log/ddns ls -la cat myddns_ipv4.log cat myddns_ipv6.log
To debug what's going on, you can run ddns-scripts in verbose mode.
Following verbose level are defined:
| 0 | Non verbose - No output |
| 1 | Output to console (default) |
| Since CC 15.05 additional: | |
| 2 | Output to console and logfile. Run once WITHOUT retry on error. |
| 3 | Output to console and logfile. Run once WITHOUT retry on error. Sending NO update to DDNS service. |
Before starting debugging stop all running ddns-scripts processes:
Including AA 12.09
root@OpenWrt:/#
ps | grep dynami[c] | awk '{print $1}' | xargs kill
Since BB 14.07
root@OpenWrt:/#
/etc/init.d/ddns stop /etc/init.d/ddns disable
root@OpenWrt:/#
ps | grep dynami[c]
Now you can start one configuration/section for debugging. To stop/break running script press [CTRL]+C.
Replace 'myddns' with your desired configuration/section name and 'level' with the desired verbose level.
root@OpenWrt:/#
/usr/lib/ddns/dynamic_dns_updater.sh myddns level
'badauth' in Update Output, you have to change your password which contains only letters and numbers. Because busybox's (v1.15.3) wget implementation has an issue handling encoded URLs.
Network and name resolution problems:
Check your communication settings with the following commands:
root@OpenWrt:/#
nslookup google-public-dns-a.google.com ping -c 5 google-public-dns-a.google.com ping -c 5 -4 google-public-dns-a.google.com # (-4) force IPv4 communication ping -c 5 -6 google-public-dns-a.google.com # (-6) force IPv6 communication if installed wget -O- http://checkip.dyndns.com # for IPv4 wget -d -O- http://checkipv6.dyndns.com # for IPv6 needs wget package and IPv6 to be installed curl -v http://checkipv6.dyndns.com # for IPv6 needs curl package and IPv6 to be installed
HTTPS/SSL problems:
Check if your DDNS provider ONLY support secure requests and enable HTTPS (option use_https) in your configuration.
Packages 'wget' or 'curl' not installed to support secure communication.
'wget'/'curl' could not access/validate SSL certificates.
Check certificate installation and run 'wget' or 'curl' in verbose/debug mode:
root@OpenWrt:/#
ls -la /etc/ssl ls -la /etc/ssl/certs wget -d -O /tmp/wget.out https://www.google.com --ca-certificate=/etc/ssl/certs/ca-certificates.crt # single certificate file wget -d -O /tmp/wget.out https://www.google.com --ca-directory=/etc/ssl/certs # certificate directory wget -d -O /tmp/wget.out https://www.google.com --no-check-certificate # ignore certificate !!! INSECURE !!! curl -v -o /tmp/curl.out https://www.google.com --cacert /etc/ssl/certs/ca-certificates.crt # single certificate file curl -v -o /tmp/curl.out https://www.google.com --capath /etc/ssl/certs # certificate directory curl -v -o /tmp/curl.out https://www.google.com --insecure # ignore certificate !!! INSECURE !!!
Remember to read how to configure a custom service.
At provider specific settings, only parameters that needs to be changed are described.
The relevant parameters to use together with a custom settings are:
| UCI option | LuCI description | Explanatory note |
|---|---|---|
| service_name | DDNS Service provider | Inside LuCI set to '–custom–' or delete from '/etc/config/ddns' if you need to use custom update URL. |
| update_url | Custom update-URL | Copy from description below, if necessary. |
| domain | Hostname/Domain | The already registered name at your DDNS provider. |
| username | Username | Normally your username but possibly used with different settings. |
| password | Password | Normally your password but possibly used with different settings. |
If you find a
at a provider description below, please support me to test and update this wiki.
Please post a support request if something not working as described or needs to be updated.
Thanks!
If you find problem "Failed writing HTTP request: Bad file descriptor" in some server / wget version (see: https://bugzilla.redhat.com/show_bug.cgi?id=912358), it is worth to try changing the update_url in /etc/config/ddns from
"http://[USERNAME]:[PASSWORD]path_to_your_provider_and_other_things"
to
"--user=[USERNAME] --password:[PASSWORD] http://path_to_your_provider_and_other_things"
AND change one line in /usr/lib/ddns/dynamic_dns_updater.sh from
update_output=$( $retrieve_prog "$final_url" )
to
update_output=$( $retrieve_prog $final_url )
Last updated: 2015-07-28
Homepage – Documentation
The default is to use 'domain' together with 'service_name' set to 'dnsomatic.com'.
'domain' needs to be set to FQDN to update/verify.
NEVER use 'all.dnsomatic.com'!
To update all services registered with DNS-O-Matic in one configuration/section use the following settings:
service_name delete / --custom-- update_url http://[USERNAME]:[PASSWORD]@updates.dnsomatic.com/nic/update?hostname=all.dnsomatic.com&myip=[IP]&wildcard=NOCHG&mx=NOCHG&backmx=NOCHG domain [Only ONE of your defined hostnames to verify update was send] username [Your username] password [Your password]
Last updated: 2015-07-14
Homepage – Installation instructions – FAQ
There is another description here. I take over the link during rewriting this wiki page.
Inside LuCI web UI select –custom– and fill in the other options accordingly.
Be sure you install ssl support.
Additional use update_url and settings from below:
update_url http://www.duckdns.org/update?domains=[USERNAME]&token=[PASSWORD]&ip=[IP] domain [Your FQDN] username [Your Host without ".duckdns.org"] password [Your token] use_https 1 cacert [path to certificate file or directory]
Last updated: 2015-07-15
Homepage – FAQ
Option 1:
service_name freedns.afraid.org domain [Your FQDN] username [NOT used. Set to a character of your choice, because LuCI does not accept empty field] password [Your authorisation token, NOT your account password]To find your authorisation token, go to http://freedns.afraid.org/dynamic/, login, click "Direct URL".
Option 2:
(Taken from here.)
service_name delete / --custom-- update_url [Your direct URL updater from your freedns.afraid.org account] domain [Your FQDN] username [NOT used. Set to a character of your choice, because LuCI does not accept empty field] password [NOT used because already part of direct URL. Set to a character of your choice, because LuCI does not accept empty field]
Last updated: 2015-07-20
Homepage (Danish only)
Taken from OpenWrt forum
GratisDNS.dk is only supported by ddns-scripts using custom service settings.
GratisDNS.dk require to install and configure SSL support.
service_name delete / --custom-- update_url http://ssl.gratisdns.dk/ddns.phtml?u=[USERNAME]&p=[PASSWORD]&d=Mydomain&h=[DOMAIN]&i=[IP] !!! replace "Mydomain" in this url with domain part of your FQDN. Sample: your FQDN: host.example.com -> "Mydomain" set to example.com Sample: http://ssl.gratisdns.dk/ddns.phtml?u=[USERNAME]&p=[PASSWORD]&d=example.com&h=[DOMAIN]&i=[IP] domain [Your FQDN] username [Your username] password [Your password]
Last updated: 2015-07-15
Homepage
There is another description here. I take over the link during rewriting this wiki page.
Use the following settings:
service_name he.net domain [Your FQDN] username [Your FQDN] password [Your password]
Last updated: 2015-07-20
Homepage – Support

Looking on description at "Use Mythic Beasts Dynamic DNS with your OpenWRT router" and on the existing source code I found out that there must be issues updating Dynamic DNS.
I have gone in contact with support of mythic-beasts.com. I will update as soon a solution is available.
Last updated: 2015-07-21
Homepage – Knowledgebase
Note that with the namecheap protocol, the username option is translated to the host argument in the update request.
Therefore, it should be the host-part on the DNS record, not the username that you use to log into the namecheap.com site.
To update multiple hosts you might need to define separate configuration/section for each host.
To get your password, log into the namecheap.com site, enter the management console for the domain, and click the Dynamic DNS menu option.
Currently ddns-scripts only supports the case where your dynamic subdomain has the same IP address as for your unqualified domain. Otherwise you will send updates to namecheap.com every "option check_interval" 10 minutes (default) because your FQDN is not validated. Proposed solution here, which you can easily implement yourself. (This may only be an issue for ddns-scripts 2.4).
Let assume you define two FQDN at your domain "example.com": "www.example.com" and "ftp.example.com"
To update only your domain record "example.com":
service_name namecheap.com domain [Your domain, here: example.com] username @ password [Your password]To update for example only your "ftp.example.com" host:
service_name namecheap.com domain [Your domain, here: example.com] username ftp password [Your password]To update all to the same IP address:
service_name namecheap.com domain [Your domain, here: example.com] username @ -a www -a ftp !!! @ stands for your domain, www for www.example.com, ftp for ftp.example.com password [Your password]
Last updated: 2015-07-21
Homepage – SupportCenter
Starting CC 15.05 do not forget to additional install ddns-scripts_no-ip_com package.
The default is to use your 'username' and 'password' as normal inside ddns-scripts together with 'service_name' 'no-ip.com' or 'noip.com'.
If you want to update multiple hosts inside one configuration/section you need the following settings:
service_name delete / --custom-- update_url http://[USERNAME]:[PASSWORD]@dynupdate.no-ip.com/nic/update?myip=[IP]&hostname= !!! After the 'hostname=' fill in a comma separated list of hosts to update. Sample: host1.example.com,host2.example.com,host3.example.com without any spaces in between. Sample: http://[USERNAME]:[PASSWORD]@dynupdate.no-ip.com/nic/update?myip=[IP]&hostname=host1.example.com,host2.example.com,host3.example.com domain [Only ONE of your defined hostnames, i.e. host1.example.com] username [Your username] password [Your password]
Last updated: 2016-08-02
Homepage – Wiki/FAQ (German only)
The web-pages of spdns.de are now reachable at spdyn.de.
Currently updates send to update.spdns.de pages are still handled but produce warnings in DDNS update log at the provder.
Created accounts and domains at spdns.de are still working without any problems.
The default is to use your 'username' and 'password' as normal inside ddns-scripts together with 'service_name' 'spdyn.de'.
If you want to use Update-Token, keep in mind that this token can only update the host it is generated for.
Use this settings:
service_name spdyn.de domain [Your defined hostname at spdyn.de] username [Your defined hostname at spdyn.de] password [The token generated for this hostname]If you want to update multiple hosts inside one configuration/section you need the following settings (Update-Token doesn't work):
service_name delete / --custom-- update_url http://[USERNAME]:[PASSWORD]@update.spdyn.de/nic/update?myip=[IP]&hostname= !!! After the 'hostname=' fill in a comma separated list of hosts (max. 20) to update. Sample: host1.spdyn.de,host2.spdyn.de,host3.spdyn.de without any spaces in between. Sample: http://[USERNAME]:[PASSWORD]@update.spdyn.de/nic/update?myip=[IP]&hostname=host1.spdyn.de,host2.spdyn.de,host3.spdyn.de domain [Only ONE of your defined hostnames i.e. host3.spdyn.de] username [Your username at spdyn.de] password [Your password at spdyn.de]
Last updated: 2016-04-20
Google Domains allows for dynamic names to be set up in the section called Synthetic Records. To access it, log in to https://domains.google.com and go to Configure DNS for the domain in question, then scroll down to Synthetic Records and add a new one. It will issue a specific username and password for this hostname. Google requires HTTPS for updates, so be sure to also install package wget or curl in order to allow this. Use the following settings:
service_name --custom-- update_url http://[USERNAME]:[PASSWORD]@domains.google.com/nic/update?hostname=[DOMAIN]&myip=[IP] domain [Your defined hostname] username [assigned username for hostname] password [assigned password for hostname] http_secure Enabled ca_path Set to "IGNORE" or download certs and provide path