Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
docs:guide-user:services:ddns:client [2021/03/07 08:27] – [Run manually] vgaeteradocs:guide-user:services:ddns:client [2024/10/05 13:46] – [dynu.com] andrewz
Line 1: Line 1:
-====== DDNS Client ======+====== DDNS client ====== 
 +See also: [[docs:guide-user:base-system:ddns|DDNS client configuration]] 
 ===== Introduction ===== ===== Introduction =====
 DDNS stands for [[wp>Dynamic_DNS|Dynamic DNS]]. DDNS stands for [[wp>Dynamic_DNS|Dynamic DNS]].
Line 15: Line 17:
  
 ===== Features ===== ===== Features =====
-//ddns-scripts// support other special communication functions to be used:+ddns-scripts support other special communication functions:
   * Run once, useful for usage with [[docs:guide-user:base-system:cron|cron]].   * Run once, useful for usage with [[docs:guide-user:base-system:cron|cron]].
   * Set proxy with/without authentication for HTTP/HTTPS requests.   * Set proxy with/without authentication for HTTP/HTTPS requests.
Line 26: Line 28:
 First of all, you'll need to pick and register a DNS name with a compatible DDNS service provider. First of all, you'll need to pick and register a DNS name with a compatible DDNS service provider.
 For a list of DDNS providers, see: For a list of DDNS providers, see:
-  * [[https://www.google.de/search?q=dynamic+dns+provider+list]]+  * [[https://www.google.com/search?q=dynamic+dns+provider+list]]
   * [[http://www.opendirectoryproject.org/Computers/Internet/Protocols/DNS/Service_Providers/Dynamic_DNS]]   * [[http://www.opendirectoryproject.org/Computers/Internet/Protocols/DNS/Service_Providers/Dynamic_DNS]]
-  * [[https://dnslookup.me/dynamic-dns/]]+  * Pick one from the list https://github.com/openwrt/packages/blob/master/net/ddns-scripts/files/usr/share/ddns/list
  
-^ //ddns-scripts// support the following Dynamic DNS service providers out of the box:  ^^^^ +^ //ddns-scripts// support the following Dynamic DNS service providers out of the box:                                                                                                                                                                                                                  ||||                                                         | 
-| [[http://3322.org/|3322.org]] | [[http://afraid.org/|afraid.org]] <sup>6)</sup> | [[http://changeip.com/|changeip.com]] | [[http://cloudflare.com/|cloudflare.com]] <sup>2) 5) 6)</sup>+| [[http://3322.org/|3322.org]]                                                         | [[http://dnspark.com/|dnspark.com]]                        | [[http://easydns.com/|easydns.com]]                                                | [[http://mythic-beasts.com/|mythic-beasts.com]] <sup>6)</sup>  | servercow.de                                            
-| [[http://core-networks.de/|core-networks.de]] <sup>6)</sup>[[http://ddnss.de/|ddnss.de]] <sup>6)</sup> | [[http://dhis.org/|dhis.org]] <sup>6)</sup> | [[http://dnsdynamic.org/|dnsdynamic.org]] | +| [[http://afraid.org/|afraid.org]] <sup>6)</sup>                                       dnsever.com                                                | [[http://editdns.net/|editdns.net]]                                                | [[http://namecheap.com/|namecheap.com]]                        | simply.com                                              
-| [[http://dnsexit.com/|dnsexit.com]] | [[http://dnshome.de/|dnshome.de]] <sup>6)</sup> | [[http://dnsmax.com/|dnsmax.com]] | [[http://dnsomatic.com/|dnsomatic.com]] | +| all-inkl.com                                                                          | [[http://do.de/|do.de]] <sup>6)</sup>                      | [[http://goip.de/|goip.de]] <sup>6)</sup>                                          | [[http://nettica.com/|nettica.com]]                            | [[http://sitelutions.com/|sitelutions.com]]             
-| [[http://dnspark.com/|dnspark.com]] | [[http://do.de/|do.de]] <sup>6)</sup>[[http://dtdns.com/|dtdns.com]] | [[http://duckdns.org/|duckdns.org]] <sup>6)</sup>+| [[http://changeip.com/|changeip.com]]                                                 | domopoli.de                                                | [[http://domains.google.com/|google.com]] <sup>5) 6)</sup>                         njal.la                                                        | [[http://spdyn.de/|spdyn.de]] <sup>6)</sup> (spdns.de)  
-| [[http://duiadns.net/|duiadns.net]] <sup>6)</sup> | [[http://dy.fi/|dy.fi]] | [[http://dyndns.org/|dyndns.org]] <sup>6)</sup> (dyn.com| [[http://dyndnss.net/|dyndnss.net]] | +| [[http://cloudflare.com/|cloudflare.com]] <sup>2) 5) 6)</sup>                         | [[http://dtdns.com/|dtdns.com]]                            | [[http://dns.he.net/|dns.he.net]] <sup>6)</sup>                                    | now-dns.com                                                    | [[http://strato.com/|strato.com]]                       
-| dyns.net | dynsip.org | [[http://dynu.com/|dynu.com]] | [[http://dynv6.com/|dynv6.com]] <sup>6)</sup> +| [[http://core-networks.de/|core-networks.de]] <sup>6)</sup>                           | [[http://duckdns.org/|duckdns.org]] <sup>6)</sup>          | [[https://he.net|he.net]]                                                          | [[http://no-ip.com/|no-ip.com]] <sup>1)</sup> (noip.com)       | [[http://system-ns.com/|system-ns.com]]                 | 
-| [[http://easydns.com/|easydns.com]] | [[http://editdns.net/|editdns.net]] | [[http://goip.de/|goip.de]] <sup>6)</sup> | [[http://domains.google.com/|google.com]] <sup>5) 6)</sup> +| [[http://ddnss.de/|ddnss.de]] <sup>6)</sup>                                           | [[http://duiadns.net/|duiadns.net]] <sup>6)</sup>          | [[https://hosting.de|hosting.de]]                                                  | [[http://no-ip.pl/|no-ip.pl]] <sup>6)</sup>                    [[http://thatip.com/|thatip.com]]                       | 
-| [[http://dns.he.net/|he.net]] <sup>6)</sup> | [[http://joker.com/|joker.com]] | [[http://loopia.se/|loopia.se]] <sup>6)</sup> ([[http://loopia.com/|loopia.com]]| [[http://mydns.jp/|mydns.jp]] <sup>6)</sup> | +| ddo.jp                                                                                | [[http://dy.fi/|dy.fi]]                                    infomaniak.com                                                                     | [[http://nsupdate.info/|nsupdate.info]] <sup>6)</sup>          transip.nl                                              | 
-| [[http://myonlineportal.net/|myonlineportal.net]] <sup>6)</sup>[[http://mythic-beasts.com/|mythic-beasts.com]] <sup>6)</sup> | [[http://namecheap.com/|namecheap.com]] | [[http://nettica.com/|nettica.com]] | +| desec.io                                                                              | dyndns.it                                                  | ipnodns.ru                                                                         | [[http://nubem.com/|nubem.com]]                                | [[http://twodns.de/|twodns.de]]                         
-| [[http://no-ip.com/|no-ip.com]] <sup>1)</sup> (noip.com) | [[http://no-ip.pl/|no-ip.pl]] <sup>6)</sup> | [[http://nsupdate.info/|nsupdate.info]] <sup>6)</sup> | [[http://nubem.com/|nubem.com]] | +| [[http://dhis.org/|dhis.org]] <sup>6)</sup>                                           | [[http://dyndns.org/|dyndns.org]] <sup>6)</sup> (dyn.com)  | [[https://inwx.de|inwx.de]]                                                        | [[http://ovh.com/|ovh.com]]                                    | udmedia.de                                              
-| [[http://ovh.com/|ovh.com]] | [[http://regfish.de/|regfish.de]] <sup>6)</sup> | [[http://schokokeks.org/|schokokeks.org]] | [[http://selfhost.de/|selfhost.de]] +| [[http://dnsdynamic.org/|dnsdynamic.org]]                                             | [[http://dyndnss.net/|dyndnss.net]]                        | [[http://joker.com/|joker.com]]                                                    | opendns.com                                                    | [[http://variomedia.de/|variomedia.de]] <sup>6)</sup>   | 
-[[http://sitelutions.com/|sitelutions.com]] | [[http://spdyn.de/|spdyn.de]] <sup>6)</sup> (spdns.de) | [[http://strato.com/|strato.com]] | [[http://system-ns.com/|system-ns.com]] | +| [[http://dnsexit.com/|dnsexit.com]]                                                   | dyns.net                                                   | [[http://loopia.se/|loopia.se]] <sup>6)</sup> ([[http://loopia.com/|loopia.com]])  | oray.com                                                       | xlhost.de                                               | 
-| [[http://thatip.com/|thatip.com]] | [[http://twodns.de/|twodns.de]] | [[http://variomedia.de/|variomedia.de]] <sup>6)</sup> | [[http://zerigo.com/|zerigo.com]] <sup>6)</sup>+| [[http://dnshome.de/|dnshome.de]] <sup>6)</sup>                                       | dynsip.org                                                 | moniker.com                                                                        | [[http://regfish.de/|regfish.de]] <sup>6)</sup>                | [[http://zoneedit.com/|zoneedit.com]] <sup>5)</sup>     
-| [[http://zoneedit.com/|zoneedit.com]] <sup>5)</sup> | [[http://www.zzzz.io/|zzzz.io]] <sup>5) 6)</sup> | | BIND nsupdate <sup>3) 4) 6)</sup> |+| [[http://dnsmax.com/|dnsmax.com]]                                                     | [[http://dynu.com/|dynu.com]]                              | [[http://mydns.jp/|mydns.jp]] <sup>6)</sup>                                        | [[http://schokokeks.org/|schokokeks.org]]                      | BIND nsupdate <sup>3) 4) 6)</sup>                       
 +| [[http://dnsomatic.com/|dnsomatic.com]]                                               | [[http://dynv6.com/|dynv6.com]] <sup>6)</sup>              [[http://myonlineportal.net/|myonlineportal.net]] <sup>6)</sup>                    | [[http://selfhost.de/|selfhost.de]]                            |                                                         |
  
-  - Requires additional package [[packages:pkgdata:ddns-scripts_no-ip_com]] to be installed. +  - Requires additional package [[packages:pkgdata:ddns-scripts-noip]] to be installed. 
-  - Needs additional package [[packages:pkgdata:ddns-scripts_cloudflare.com-v4]] to be installed. +  - Needs additional package [[packages:pkgdata:ddns-scripts-cloudflare]] to be installed. 
-  - Directly updates a PowerDNS (or maybe bind server) via nsupdate. +  - Directly updates a DNS server (Bind, PowerDNS, Knot) via nsupdate (RFC 2136)
-  - Needs additional package [[packages:pkgdata:ddns-scripts_nsupdate]] and [[packages:pkgdata:bind-client]] to be installed. +  - Needs additional package [[packages:pkgdata:ddns-scripts-nsupdate]] and [[packages:pkgdata:bind-client]] to be installed. 
-  - SSL support required.+  - Requires SSL support.
   - Supports IPv6.   - Supports IPv6.
  
Line 58: Line 61:
 Read their help pages for details and also read provider specific information below. Read their help pages for details and also read provider specific information below.
  
-===== Support ===== +===== Web interface instructions ===== 
-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: +Set up DDNS client service using web interface. 
-   * [[https://forum.openwrt.org/|OpenWrt Forum]] +  - Navigate to **LuCI -> System -> Software** 
-   [[https://github.com/openwrt/packages/issues|Github-OpenWrt-Packages]] for //ddns-scripts// +  - Press the button **Update Lists** to update internal lists of available packages. 
-   * [[https://github.com/openwrt/luci/issues|Github-OpenWrt-LuCI]] for //luci-app-ddns//+  - Install the packages [[packages:pkgdata:ddns-scripts]] and [[packages:pkgdata:luci-app-ddns]] to provide DDNS client service and web interface. 
 +  - Install the packages [[packages:pkgdata:wget-ssl]] and [[packages:pkgdata:ca-certificates]], or [[packages:pkgdata:curl]] and [[packages:pkgdata:ca-bundle]] for SSL support. 
 +  - Install the provider specific packages ''ddns-scripts_*'' and LuCI language packages ''luci-i18n-ddns-*''
 +  - Refresh the page and navigate to **LuCI -> Services -> Dynamic DNS**. 
 +  - Use the instances ''myddns_ipv4'' and ''myddns_ipv6'' or delete them and define your own. 
 +  - Modify the fields you need to change and check the **Enabled** option. 
 +  - Click **Save & Apply** button to save changes.
  
-A full list of supported settings, some not supported by LuCI: +===== Command-line instructions ===== 
-   * UCI documentation -> [[docs:guide-user:base-system:ddns|DDNS client configuration]] +Install ''ddns-scripts'' and the provider-specific packages ''ddns-scripts_xxxxx''
- +Also provide SSL support with ''wget'' and ''ca-certificates'', or ''curl'' and ''ca-bundle''.
-The source code is available at GitHub: +
-|  CC 15.05 | [[https://github.com/openwrt/packages/tree/for-15.05/net/ddns-scripts|ddns-scripts_2.4.3-1]] | [[https://github.com/openwrt/luci/tree/for-15.05/applications/luci-app-ddns| luci-app-ddns_2.2.4-1]] | +
-|  trunk | [[https://github.com/openwrt/packages/tree/master/net/ddns-scripts|ddns-scripts]] | [[https://github.com/openwrt/luci/tree/master/applications/luci-app-ddns|luci-app-ddns]] | +
- +
-===== Installation ===== +
-==== Web interface ==== +
-  * Login into your router through your browser. +
-  * Navigate to **LuCI -> System -> Software** +
-  * Press button **Update Lists** to update internal lists of available packages. +
-  * Install the packages [[packages:pkgdata:luci-app-ddns]] and [[packages:pkgdata:ddns-scripts]]. +
-  * You might need to install provider specific packages ''ddns-scripts_*'' and LuCI language packages ''luci-i18n-ddns-*''+
-  * Refresh the page and navigate to **LuCI -> Services -> Dynamic DNS**. +
- +
-==== Command-line interface ==== +
-To install //ddns-scripts// use the [[docs:guide-user:additional-software:opkg|OPKG Package Manager]]. +
-You might need to install provider specific packages //ddns-scripts_xxxxx//.+
  
 <code bash> <code bash>
Line 88: Line 81:
 opkg install ddns-scripts opkg install ddns-scripts
 opkg install ddns-scripts_xxxxx opkg install ddns-scripts_xxxxx
-</code> 
- 
-==== SSL support ==== 
-By default //ddns-scripts// uses BusyBox built-in ''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 [[packages:pkgdata:wget]] and [[packages:pkgdata:ca-certificates]], or [[packages:pkgdata:curl]] and [[packages:pkgdata:ca-bundle]] packages. 
- 
-If both ''wget'' and ''curl'' are installed you can configure which one to prefer. 
-Default is ''wget''. 
- 
-You can install either via LuCI from the menu select **LuCI -> System -> Software** and search for ''wget'' or ''curl'' or install via console using the following commands: 
- 
-<code bash> 
-opkg update 
 opkg install wget ca-certificates opkg install wget ca-certificates
 opkg install curl ca-bundle opkg install curl ca-bundle
-opkg install ca-certificates 
 </code> </code>
  
-:!: If you, also for other software, need all certificates in one file or you want to update CA certificates regularly, then do **NOT** install  package. +Proceed with setting up the service using the UCI commands.
-''ca-certificates'' package is not always backported to older OpenWrt versions. +
-Install latest CA certificates (in one file) using console: +
- +
-<code bash> +
-mkdir -p /etc/ssl/certs +
-curl -o /etc/ssl/certs/ca-certificates.crt http://curl.haxx.se/ca/cacert.pem +
-wget  --no-check-certificate -O /etc/ssl/certs/ca-certificates.crt http://curl.haxx.se/ca/cacert.pem +
-</code>+
  
 ===== Configuration ===== ===== Configuration =====
-==== Basics ==== 
 ddns-scripts are designed to update one host per configuration/section. 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. To update multiple hosts or providers or IPv4 and IPv6 for the same host you need to define separate configurations/sections.
 Some providers offer to update multiple host within one update request. Some providers offer to update multiple host within one update request.
-A possible solution for this option is to use ''--custom--'' service name settings. +A possible solution for this option is to use ''%%--custom--%%'' service name settings. 
-Have a look at [[#provider_specifics|Provider specifics]].+Have a look at [[#provider_specifics|provider specifics]].
  
-The main settings you need to set are (all other normally work fine with the defaults)+==== Web interface instructions ==== 
-|  Service name the DDNS service provider to use +The main settings you need to set: 
- Host/Domain your [[wp>Fully_qualified_domain_name|FQDN]] you want to update (used by //ddns-scripts// using nslookup to check if update has happened) +|  DDNS Service provider Service provider name as it is known to OpenWrt                                                                                                                                                           
- Username | username or other parameter to use as username (send urlencoded) | +       Lookup Hostname The [[wp>Fully_qualified_domain_name|FQDNs]] you want to update, script will make DNS queries against it to check if IP address update is needed                                                          
- Password | password or other parameter to use as password (send urlencoded)\\ :!: **__including BB 14.07__** Ensure this password does not have "$1" or $ with any number following in it, as this breaks the script. | +                Domain | Usually the same as Lookup Hostname, script will include this name into the update request sent to provider                                                                                               | 
- Interface | network name (i.e. wan, wan6) used by OpenWrt hotplug event system to start //ddns-scripts// |+|               Username | Username or other parameter used for authentication in update request (will be sent URL-encoded                                                                                                         
 +              Password | Password or other parameter (like token) used for authentication in update request (will be sent URL-encoded)\\ :!: Ensure this password does not have have ''$'' characters, as this breaks the script.  
 +             Interface | Network name used by OpenWrt hotplug event system to start //ddns-scripts//, e.g. ''wan'', ''wan6''                                                                                                       |
  
-:!: **__since DD (trunk)__** the following main settings need to be set: +  * It is not allowed to use ''dash''-sign "-" inside configuration/section names. 
-|  Service name | the DDNS service provider to use | +  * A full list of supported settings (some not supported by LuCI) you will find in [[docs:guide-user:base-system:ddns|UCI documentation]]. 
-|  Lookup Host | ONE of your defined [[wp>Fully_qualified_domain_name|FQDNs]] you want to update (used by //ddns-scripts// using nslookup to check if update has happened) | +  * Always keep in mind the [[#provider_specifics|Provider specific]] settings if there are any. 
-|  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 | +  * Don't forget to enable your configuration/section. 
-|  Username | username or other parameter to use as username (send urlencoded) | +  * You need minimum one enabled configuration/section for //ddns// service to start. 
-|  Password | password or other parameter to use as password (send urlencoded) | +  * You need to enable //ddns// service to enable updates being sent on reboot and hotplug events. 
-|  Interface | network name (i.e. wan, wan6) used by OpenWrt hotplug event system to start //ddns-scripts//+  * Do not change the files ''/usr/lib/ddns/services'' or ''/usr/lib/ddns/services_ipv6'' as they can be overwritten by system and package updates.
- +
-After fresh installation a configuration/section ''myddns'' and ''myddns_ipv4'' and ''myddns_ipv6'' exists ready to be modified for your needs. +
-You could delete them and define your own. +
- +
-{{:meta:icons:tango:dialog-warning.png?nolink&32x32}}  **Please heed the following important hints:** +
-  *** It is NOT allowed to use ''dash''-sign "-" inside configuration/section names.** +
-  ***A full list of supported settings (some not supported by LuCI) you will find in [[docs:guide-user:base-system:ddns|UCI documentation]]!** +
-  ***Always keep in mind the [[#provider_specifics|Provider specific]] settings if there are any!** +
-  ***Don't forget to enable your configuration/section!** +
-  ***You need minimum one enabled configuration/section for //ddns// service to start!** +
-  ***You need to enable //ddns// service to enable updates being sent on reboot and hotplug events!** +
-  ***__//Although described elsewhere, it is not recommended to change the files ''/usr/lib/ddns/services'' or ''/usr/lib/ddns/services_ipv6'' because they will be overwritten during system and package updates!//__** +
- +
-==== Web interface ==== +
-  * Log 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 a 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. +
- +
-''Username'' and ''Password'' fields are required fields. +
-If your provider does not require one or both of them, simply put in a character of your choice.+
  
 === SSL support === === SSL support ===
-Options to configure HTTPS communication are only available if ''wget'' or ''curl'' package is installed. (See ''Hints'' if shown.)+Options to configure HTTPS communication are only available if ''wget'' or ''curl'' package is installed.
  
   * Check **Use HTTP Secure** option. Additional field **Path to CA-Certificate** is shown with it's default setting.   * 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'' package leave the shown default ''/etc/ssl/certs''. 
-    * If you have installed CA certificates in one file from [[#ssl_support|above]] set the value to''/etc/ssl/certs/ca-certificates.crt'' +    * If you have installed CA certificates in one file from [[#ssl_support|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 you like to use other certificate you need to set here the full path to the certificate including file name, e.g. ''/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'') +    * If your certificates are stored in a different path, set here the path where your certificates are located, e.g. ''/path/to/files''. 
-  * Click [Save & Applybutton to save changes.+  * Click **Save & Apply** button to save changes.
  
 === Custom service === === Custom service ===
 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: 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. +  * Choose ''%%--custom--%%'' as service. Additional field **Custom update-URL** is shown. 
-  * Fill in the URL you like to use. :!: Please read URL syntax description [[#custom_service1|below]]. Also have a look at [[#provider_specifics|Provider specifics]]. +  * Fill in the URL you like to use. :!: Please read URL syntax description [[#custom_service1|below]]. Also have a look at [[#provider_specifics|provider specifics]]. 
-  * Click [Save & Applybutton to save changes.+  * 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 [[https://github.com/openwrt/packages|Github-OpenWrt-Packages]] so it can be included with the next release.** :!: **If you found a DDNS provider not listed or with additional IPv6 support or with changed update URL please open an issue at [[https://github.com/openwrt/packages|Github-OpenWrt-Packages]] so it can be included with the next release.**
  
-==== Command-line interface ====+==== Command-line instructions ====
 The easiest way to configure //ddns-scripts// via console is to edit the file ''/etc/config/ddns'' directly using build-in [[wp>Vi|vi editor]] or any other editor you prefer. The easiest way to configure //ddns-scripts// via console is to edit the file ''/etc/config/ddns'' directly using build-in [[wp>Vi|vi editor]] or any other editor you prefer.
 Other editors as ''vi'' needs to be installed separately. Other editors as ''vi'' needs to be installed separately.
Line 194: Line 135:
 A configuration/section looks like: A configuration/section looks like:
  
-<code bash /etc/config/ddns>+<code bash
 +/etc/config/ddns
 config 'service' 'myddns' config 'service' 'myddns'
  option 'service_name' 'example.org'  option 'service_name' 'example.org'
Line 210: Line 152:
  
 <code bash> <code bash>
-uci set ddns.myddns.service_name="ddnsprovider.com" # only use names listed in /usr/lib/ddns/services +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)  # or /usr/lib/ddns/services_ipv6 (since CC 15.05)
 uci set ddns.myddns.domain="host.yourdomain.net" uci set ddns.myddns.domain="host.yourdomain.net"
Line 244: Line 186:
 You need to add the following entries to the desired section in ''/etc/config/ddns'' file using ''ca-certificates'' package: You need to add the following entries to the desired section in ''/etc/config/ddns'' file using ''ca-certificates'' package:
  
-<code bash /etc/config/ddns>+<code bash
 +/etc/config/ddns
 config 'service' 'myddns' config 'service' 'myddns'
  ...  ...
Line 253: Line 196:
 using single file (ie. as descriped [[#ssl_support|above]]): using single file (ie. as descriped [[#ssl_support|above]]):
  
-<code bash /etc/config/ddns>+<code bash
 +/etc/config/ddns
 config 'service' 'myddns' config 'service' 'myddns'
  ...  ...
Line 268: Line 212:
 Edit ''/etc/config/ddns''. Edit ''/etc/config/ddns''.
  
-<code bash /etc/config/ddns>+<code bash
 +/etc/config/ddns
 config 'service' 'myddns' config 'service' 'myddns'
  ...  ...
Line 284: Line 229:
  
 == URL Syntax == == URL Syntax ==
-  * No need to set ''https:%%//%%'', it is replaced automatically if SSL support is activated.+  * No need to set ''%%https://%%'', it is replaced automatically if SSL support is activated.
   * The entries [USERNAME] [PASSWORD] [DOMAIN] [IP] are replaced by //ddns-scripts// just before update.   * 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.   * [USERNAME] is replaced by content of ''option username'' from configuration file.
Line 297: Line 242:
 :!: **If you found a DDNS provider not listed or with additional IPv6 support or with changed update URL please open an issue at [[https://github.com/openwrt/packages|Github-OpenWrt-Packages]] so it can be included with the next release.** :!: **If you found a DDNS provider not listed or with additional IPv6 support or with changed update URL please open an issue at [[https://github.com/openwrt/packages|Github-OpenWrt-Packages]] so it can be included with the next release.**
  
-==== Detecting public IP ==== +==== Detecting WAN IP ==== 
-Here a list (without preferences) of url'to detect your current public ip used by your system: +Here a list (without preferences) of URLs to detect your current public ip used by your system: 
-^ Dual-Stack  ^ IPv4-only  ^ IPv6-only  ^ Server Location  +^ Dual-Stack ^ IPv4-only ^ IPv6-only ^ Server Location ^ 
-| http://checkip.dns.he.net/        — — | US | +| http://checkip.dns.he.net/| US | 
-| http://checkip.freedyn.org/       — — | DE | +| http://checkip.freedyn.org/| DE | 
-| http://bot.whatismyipaddress.com/— — | US | +| http://bot.whatismyipaddress.com/| US | 
-| http://whatismyip.org/            — — | US | +| http://whatismyip.org/| US | 
-| http://myexternalip.com/raw       — — | DE | +| http://myexternalip.com/raw | | DE |php 
-| http://wtfismyip.com/text         — — | US | +| http://wtfismyip.com/text | http://ipv4.wtfismyip.com/text http://ipv6.wtfismyip.com/text | US | 
-| http://domains.google.com/checkip | — — | part of Google | +| http://domains.google.com/checkip | | part of Google | 
-| http://icanhazip.com/             | http://ipv4.icanhazip.com/ | http://ipv6.icanhazip.com/ | US | +| http://icanhazip.com/ | http://ipv4.icanhazip.com/ | http://ipv6.icanhazip.com/ | US | 
-| http://checkip.feste-ip.net/      | http://v4.checkip.feste-ip.net/ | http://v6.checkip.feste-ip.net/ | DE | +| http://checkip.feste-ip.net/ | http://v4.checkip.feste-ip.net/ | http://v6.checkip.feste-ip.net/ | DE | 
-| http://ident.me/                  | http://ipv4.ident.me/ | http://ipv6.ident.me/ | UK | +| http://ident.me/ | http://ipv4.ident.me/ | http://ipv6.ident.me/ | UK | 
-| http://ddnss.de/meineip.php       | http://ip4.ddnss.de/meineip.php | http://ip6.ddnss.de/meineip.php | DE | +| http://ddnss.de/meineip.php | http://ip4.ddnss.de/meineip.php | http://ip6.ddnss.de/meineip.php | DE | 
-| http://checkip.spdyn.de/          | http://checkip4.spdyn.de/ | http://checkip6.spdyn.de/ | DE | +| http://checkip.spdyn.de/ | http://checkip4.spdyn.de/ | http://checkip6.spdyn.de/ | DE | 
-| http://ifcfg.me/ip                | http://4.ifcfg.me/ip | http://6.ifcfg.me/ip | FR | +| http://ifcfg.me/ip | http://4.ifcfg.me/ip | http://6.ifcfg.me/ip | FR | 
-| http://nsupdate.info/myip         | http://ipv4.nsupdate.info/myip | http://ipv6.nsupdate.info/myip | DE | +| http://nsupdate.info/myip | http://ipv4.nsupdate.info/myip | http://ipv6.nsupdate.info/myip | DE | 
-| http://checkip.zerigo.com         | http://checkip4.zerigo.com/ | http://checkip6.zerigo.com/ | US | +| http://checkip.zerigo.com | http://checkip4.zerigo.com/ | http://checkip6.zerigo.com/ | US | 
-— | http://checkip.dyndns.com/ <sup>1)</sup> | http://checkipv6.dyndns.com/ <sup>1)</sup> | US + UK | +| http://checkip.dyndns.com/ <sup>1)</sup> | http://checkipv6.dyndns.com/ <sup>1)</sup> | US + UK | 
-— | http://checkip.dyndns.com:8245/          | http://checkipv6.dyndns.com:8245/ | US + UK | +| http://checkip.dyndns.com:8245/ | http://checkipv6.dyndns.com:8245/ | US + UK | 
-— | http://checkip.dyn.com/ <sup>1) 2)</sup> | http://checkipv6.dyn.com/ <sup>1) 2)</sup> | US + UK | +| http://checkip.dyn.com/ <sup>1) 2)</sup> | http://checkipv6.dyn.com/ <sup>1) 2)</sup> | US + UK | 
-— | http://ipv4.myip.dk/api/info/IPv4Address | http://ipv6.myip.dk/api/info/IPv6Address | US | +| http://ipv4.myip.dk/api/info/IPv4Address | http://ipv6.myip.dk/api/info/IPv6Address | US | 
-— | http://ipv4.ipogre.com/linux.php         | http://ipv6.ipogre.com/linux.php | US | +| http://ipv4.ipogre.com/linux.php | http://ipv6.ipogre.com/linux.php | US | 
-— | http://v4.ipv6-test.com/api/myip.php     | http://v6.ipv6-test.com/api/myip.php | FR | +| http://v4.ipv6-test.com/api/myip.php | http://v6.ipv6-test.com/api/myip.php | FR | 
-— | http://ipecho.net/plain | — | NL | +| http://ipecho.net/plain | | NL | 
-— | http://ipinfo.io/ip     — | part of Amazon AWS | +| http://ipinfo.io/ip | | part of Amazon AWS | 
-— | http://ifconfig.me/ip   — | JP | +| http://ifconfig.me/ip | | JP | 
-— | http://checkip.amazonaws.com | — | part of Amazon AWS | +| http://checkip.amazonaws.com | | part of Amazon AWS | 
-— | http://myip.dtdns.com   — | US | +| http://myip.dtdns.com | | US | 
-— | http://ip.changeip.com  — | US | +| http://ip.changeip.com | | US | 
-— | http://freedns.afraid.org/dynamic/check.php | — | ? | +| http://freedns.afraid.org/dynamic/check.php | | ? | 
-— | http://freedns.afraid.org:8080/dynamic/check.php | — | ? |+| http://freedns.afraid.org:8080/dynamic/check.php | | ? |
  
-  - Users reported timeout problems, use links in the line below (...:8245). + - Users reported timeout problems, use links in the line below (...:8245). 
-  - Alias of *.dyndns.com.+ - Alias of *.dyndns.com. 
 + 
 +==== WAN IP via own PHP script ==== 
 +If you don't like to use one of the above you can write your own. Here is a sample script in PHP which can easily be deployed on any web hosting: 
 + 
 +<code> 
 +<!DOCTYPE html> 
 +<body> 
 +<?php 
 +  echo $_SERVER['REMOTE_ADDR']; 
 +?> 
 +</body> 
 +</html> 
 +</code>
  
-==== Detecting WAN public IP by script ==== +==== Detecting WAN IP with script ==== 
-If your wan interface has the IP you want to propagate, this approach has the advantage of not depending on external services or even a working DNS resolution.+If your WAN interface has the IP you want to propagate, this approach has the advantage of not depending on external services or even a working DNS resolution.
  
 Create the script: Create the script:
Line 343: Line 301:
 . /lib/functions/network.sh . /lib/functions/network.sh
 network_flush_cache network_flush_cache
-network_find_wan NET_IF +for IPV in 4 6 
-network_find_wan6 NET_IF6 +do 
-network_get_ipaddr NET_ADDR "${NET_IF}+eval network_find_wan${IPV%4} NET_IF 
-network_get_ipaddr6 NET_ADDR6 "${NET_IF6}"+eval network_get_ipaddr${IPV%4NET_ADDR "${NET_IF}"
 echo "${NET_ADDR}" echo "${NET_ADDR}"
-echo "${NET_ADDR6}"+done
 EOF EOF
 chmod +x /etc/ddns/getwanip chmod +x /etc/ddns/getwanip
Line 392: Line 350:
  
 ==== Run manually ==== ==== Run manually ====
-=== Web interface ===+=== Web interface instructions ===
 To **check** running //ddns-scripts// processes from the menu go to **Status -> Processes**. To **check** running //ddns-scripts// processes from the menu go to **Status -> Processes**.
-Look for something like ''/bin/sh /usr/lib/ddns/dynamic_dns_updater.sh **myddns** 0''.+Look for something like ''/bin/sh /usr/lib/ddns/dynamic_dns_updater.sh -v 0 -S **myddns** %%--%% start''.
  
 To **stop** a desired process press the **Terminate** or **Kill** button. To **stop** a desired process press the **Terminate** or **Kill** button.
Line 404: Line 362:
 You can additionally enable/disable and start/stop individual configuration/section from **Overview -> Services -> Dynamic DNS**. You can additionally enable/disable and start/stop individual configuration/section from **Overview -> Services -> Dynamic DNS**.
  
-=== Command-line interface ===+=== Command-line instructions ===
 From console command line you could create an ''ifup'' hotplug event for the desired network interface. 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. This will start all enabled ddns configurations/sections monitoring this interface.
Line 417: Line 375:
  
 <code bash> <code bash>
-/usr/lib/ddns/dynamic_dns_updater.sh myddns &+/usr/lib/ddns/dynamic_dns_updater.sh -S myddns start &
 </code> </code>
- +Note that verbosity can also be increased, which is very useful for debugging when creating your own ddns client scripts. e.g.
-To **start** all //ddns-scripts// configurations configured for one interface (the interface name from /etc/config/network, usually 'wan'): +
 <code bash> <code bash>
-sh /usr/lib/ddns/dynamic_dns_functions.sh # note the leading period followed by a space +/usr/lib/ddns/dynamic_dns_updater.sh -S myddns -v1 start
-start_daemon_for_all_ddns_sections wan+
 </code> </code>
 +see ''/usr/lib/ddns/dynamic_dns_updater.sh -h'' for more details
  
-To **stop** one configuration/section you need to list running ddns processes with: +To **stop** one configuration/section you need to find it's PID and kill it manually e.g.
 <code bash> <code bash>
 pgrep -f -a dynamic pgrep -f -a dynamic
 +kill <pid of matching dynamic_dns_updater.sh process>
 </code> </code>
  
-you will get something like: 
  
 +To **start** all //ddns-scripts// configurations configured for a given interface e.g. ''wan''
 <code bash> <code bash>
-2493 root      1440 R    {dynamic_dns_upd} /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns_1 0 +/usr/lib/ddns/dynamic_dns_updater.sh -n wan start
-2494 root      1440 R    {dynamic_dns_upd} /bin/sh /usr/lib/ddns/dynamic_dns_updater.sh myddns_2 0+
 </code> </code>
  
-now you need to kill every running process: +**All** configured ddns services in ''/etc/config/ddns'' can of can be stopped,started,restarted and reloaded accordingly with the service command e.g. 
- +<code> 
-<code bash> +service ddns restart
-kill 2493 # to kill one process +
-kill 2493 2494 # to kill multiple processes +
-</code> +
- +
-To **stop** all running processes at once (''killall'' might not be available on all systems): +
- +
-<code bash> +
-killall dynamic_dns_updater.sh # if killall is available +
-ps | grep dynami[c] | awk '{print $1}' | xargs kill # or if not available +
-</code> +
- +
-**__Since BB 14.07__** you could ''enable/disable'' and ''start/stop/restart'' all enabled ddns configuration/section like every other service+
- +
-<code bash+
-/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+
 </code> </code>
  
Line 469: Line 405:
 To configure your configuration/section to run once you need to set ''option force_interval 0''. To configure your configuration/section to run once you need to set ''option force_interval 0''.
 Setting of ''option force_unit'' is ignored. Setting of ''option force_unit'' is ignored.
-Inside LuCI set **Force Interval** in [Timer Settings]-tab of your desired configuration or edit ''/etc/config/ddns'' on console.+Inside LuCI set **Force Interval** in **Timer Settings** tab of your desired configuration or edit ''/etc/config/ddns'' on console.
  
-<code bash /etc/config/ddns>+<code bash
 +/etc/config/ddns
 config 'service' 'myddns' config 'service' 'myddns'
  ...  ...
Line 490: Line 427:
 === Syslog === === Syslog ===
 The ''option use_syslog'' (also in LuCI) allows to define the level of events logged to syslog: The ''option use_syslog'' (also in LuCI) allows to define the level of events logged to syslog:
- Value  ^ Reporting  ^+^ Value ^ Reporting ^
 | 0 | disable | | 0 | disable |
 | 1 | info, notice, warning, errors | | 1 | info, notice, warning, errors |
Line 496: Line 433:
 | 3 | warning, errors | | 3 | warning, errors |
 | 4 | errors | | 4 | errors |
-| :!: Critical errors forcing //ddns-scripts// to break (stop) are always logged to syslog :!: ||+| :!: Critical errors forcing //ddns-scripts// to break (stop) are always logged to syslog ||
  
  
Line 506: Line 443:
 From console you need to edit the config file: From console you need to edit the config file:
  
-<code bash /etc/config/ddns>+<code bash
 +/etc/config/ddns
 config 'service' 'myddns' config 'service' 'myddns'
  ...  ...
Line 515: Line 453:
 To achieve this, you need to change the log file location by adding the following line in the ''global'' section of ''/etc/config/ddns'': To achieve this, you need to change the log file location by adding the following line in the ''global'' section of ''/etc/config/ddns'':
  
-<code bash /etc/config/ddns>+<code bash
 +/etc/config/ddns
 config 'ddns' 'global' config 'ddns' 'global'
  ...  ...
Line 538: Line 477:
  
 ^ Level ^ Description ^ ^ Level ^ Description ^
- 0 | Non verbose, no output | +| 0 | Non verbose, no output | 
- 1 | Output to console (default) | +| 1 | Output to console (default) | 
- 2 | Output to console and logfile, run once WITHOUT retry on error | +| 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 |+| 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: Before starting debugging stop all running //ddns-scripts// processes:
Line 606: Line 545:
 The relevant parameters to use together with a custom settings are: The relevant parameters to use together with a custom settings are:
  
-^ UCI option  ^ LuCI description  ^ Explanatory note  ^+^ 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 | | 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 | | update_url | Custom update-URL | Copy from description below, if necessary |
Line 616: Line 555:
 Please post a [[#support]] request if something is not working as described or needs to be updated. Please post a [[#support]] request if something is not working as described or needs to be updated.
  
-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 +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
-  "http://[USERNAME]:[PASSWORD]path_to_your_provider_and_other_things" + 
-to +<code diff> 
-  "--user=[USERNAME] --password:[PASSWORD] http://path_to_your_provider_and_other_things" +/etc/config/ddns 
-AND change one line in ''/usr/lib/ddns/dynamic_dns_updater.sh'' from +http://[USERNAME]:[PASSWORD]path_to_your_provider_and_other_things 
-  update_output=$( $retrieve_prog "$final_url"+--user=[USERNAME] --password:[PASSWORD] http://path_to_your_provider_and_other_things 
-to + 
-  update_output=$( $retrieve_prog $final_url )+/usr/lib/ddns/dynamic_dns_updater.sh 
 +update_output=$( $retrieve_prog "$final_url"
 +update_output=$( $retrieve_prog $final_url ) 
 +</code>
  
 ==== cloudflare.com ==== ==== cloudflare.com ====
-Last updated: 2020-08-31+Last updated: 2022-09-11
  
 [[https://www.cloudflare.com/|Homepage]] [[https://www.cloudflare.com/|Homepage]]
 +
 +As of OpenWrt version 22.03.0, //ddns-scripts// supports the use of [[https://blog.cloudflare.com/api-tokens-general-availability/|API tokens]].
 +API Tokens provide a new way to authenticate with the Cloudflare API.
 +
 +[[https://dash.cloudflare.com/profile/api-tokens|Create Custom Token]] by following the [[https://developers.cloudflare.com/api/tokens/create/|Creating API tokens guide]]. make sure to add "Zone DNS Edit" Permission to your custom token. 
 +You can also "include Specific zone" under Zone Resources.
 +These allow for scoped and permissioned access to resources and use the RFC compliant [[rfc>6750#section-2.1|Authorization Bearer Token Header]].
 +For more information on Token vs Key see the [[https://api.cloudflare.com/#getting-started-requests|Cloudflare v4 API]] documentation.
 +
 +<code>
 +service_name cloudflare.com-v4
 +domain [Your domain, here: example.com]
 +username Bearer
 +password [Your API token]
 +</code>
  
 To use subdomains (CNAME or A records), use the format below when filling your credentials: To use subdomains (CNAME or A records), use the format below when filling your credentials:
Line 638: Line 595:
 Examples: Examples:
   * If the hostname is "sample.example.com", the "domain" field would be "sample@example.com"   * If the hostname is "sample.example.com", the "domain" field would be "sample@example.com"
-  * if the hostname is "dev1.sample.example.com", the "domain" field would be "dev1.sample@example.com"+  * If the hostname is "dev1.sample.example.com", the "domain" field would be "dev1.sample@example.com"
   * If using Cloudflare's "Subdomain Support", your zone may already be "foo.example.com", so if the DDNS hostname is "bar.foo.example.com" the domain field would be "bar@foo.example.com"   * If using Cloudflare's "Subdomain Support", your zone may already be "foo.example.com", so if the DDNS hostname is "bar.foo.example.com" the domain field would be "bar@foo.example.com"
  
-The version of //ddns-scripts// in the master branch of the packages feed supports the use of [[https://blog.cloudflare.com/api-tokens-general-availability/|API tokens]]. 
-API Tokens provide a new way to authenticate with the Cloudflare API. 
-They allow for scoped and permissioned access to resources and use the RFC compliant [[rfc>6750#section-2.1|Authorization Bearer Token Header]]. 
-For more information on Token vs Key see the [[https://api.cloudflare.com/#getting-started-requests|Cloudflare v4 API]] documentation. 
  
-<code> 
-service_name cloudflare.com-v4 
-domain [Your domain, here: example.com] 
-username Bearer 
-password [Your API token] 
-</code> 
  
 ==== dnsomatic.com ==== ==== dnsomatic.com ====
-Last updated: 2020-01-06+Last updated: 2021-05-16
  
-DNS-O-Matic provides you a free and easy way to announce your dynamic IP changes to multiple services with a single update.+DNS-O-Matic provides you a freeeasy and secure way to announce your dynamic IP changes to multiple services with a single update.
 Using DNS-O-Matic allows you to pick and choose what Dynamic DNS services you want to notify, all from one easy to use interface. Using DNS-O-Matic allows you to pick and choose what Dynamic DNS services you want to notify, all from one easy to use interface.
-[[https://www.dnsomatic.com/|From dns-o-matic homepage]] -- [[https://www.dnsomatic.com/wiki/|Documentation]] +[[https://www.dnsomatic.com/|From dns-o-matic homepage]] -- [[https://www.dnsomatic.com/wiki/|Documentation]]
  
-You need to change your OpenDNS password to one that doesn't contain HTML special characters [[https://support.opendns.com/hc/en-us/community/posts/360055742852-dns-o-matic-username-password-|On dnsomatic username and password]]+DNS-O-Matic authentication is integrated with OpenDNS, so your DNS-O-Matic credentials are the same as your OpenDNS ones. You need to change your OpenDNS password to one that doesn't contain HTML special characters [[https://support.opendns.com/hc/en-us/community/posts/360055742852-dns-o-matic-username-password-|On dnsomatic username and password]] 
 + 
 +If you would like to make sure your SSL connection is verified, then [[:docs:guide-user:services:ddns:client#ssl_support|install the CA certificates]] 
 + and set the path to **/etc/ssl/certs** //(Path to CA-Certificate in the LuCI or **option 'cacert' '/etc/ssl/certs'** when configuring by command line.)//
  
 To update all services registered with DNS-O-Matic in one configuration/section use the following settings in /etc/config/ddns: To update all services registered with DNS-O-Matic in one configuration/section use the following settings in /etc/config/ddns:
-<code bash /etc/config/ddns>+<code bash
 +/etc/config/ddns
 config service 'DNSoMATIC' config service 'DNSoMATIC'
-        option lookup_host   'anotherddns.com'             # It must be a FQDN that is active on dns-o-matic dashboard to be refreshed by it+        option lookup_host   'anotherddns.com'             # It must be a FQDN that is active on dns-o-matic dashboard to be refreshed by it. if using openDNS, use myip.opendns.com
         option interface     'wan'                         # Set it to the network interface to be monitored on changes         option interface     'wan'                         # Set it to the network interface to be monitored on changes
         option ip_source     'web'         option ip_source     'web'
-        option ip_url        'http://checkip.amazonaws.com/'+        option ip_url        'http://checkip.amazonaws.com/' # does not appear to be used, at least by the LUCI interface
         option use_https     '1'         option use_https     '1'
 +        option cacert         '/etc/ssl/certs'
         option service_name  'dnsomatic.com'         option service_name  'dnsomatic.com'
         option domain        'all.dnsomatic.com'            # It will instruct dns-o-matic to update all services set on its dashboard         option domain        'all.dnsomatic.com'            # It will instruct dns-o-matic to update all services set on its dashboard
Line 684: Line 636:
 uci set ddns.dnsomatic.interface='wan'                           ##Change it to yours uci set ddns.dnsomatic.interface='wan'                           ##Change it to yours
 uci set ddns.dnsomatic.ip_source='web' uci set ddns.dnsomatic.ip_source='web'
-uci set ddns.dnsomatic.ip_url='http://checkip.amazonaws.com/'+uci set ddns.dnsomatic.ip_url='http://checkip.amazonaws.com/'    ## not mandatory
 uci set ddns.dnsomatic.use_https='1' uci set ddns.dnsomatic.use_https='1'
 uci set ddns.dnsomatic.service_name='dnsomatic.com' uci set ddns.dnsomatic.service_name='dnsomatic.com'
Line 696: Line 648:
  
 ==== duckdns.org ==== ==== duckdns.org ====
-Last updated: 2015-07-14+Last updated: 2024-01-02
  
-[[http://www.duckdns.org/|Homepage]] -- [[http://www.duckdns.org/install.jsp|Installation instructions]] -- [[http://www.duckdns.org/faqs.jsp|FAQ]]+For detailed instructions, see [[docs:guide-user:services:ddns:duckdns|DuckDNS DDNS Client]].
  
-FIXME +==== dynu.com ==== 
-There is another [[docs:guide-user:services:ddns:duckdns|description]] here. +Last updated2024-10-05
-I take over the link during rewriting this wiki page.+
  
-Inside LuCI web UI select **--custom--** and fill in the other options accordingly. +[[http://dynu.com/ | Homepage]] -- [[https://www.dynu.com/DynamicDNS/IP-Update-Protocol | IP Update Protocol]]
-:!: Be sure you install ssl support.+
  
-Additional use update_url and settings from below:+It works out of the box in the standard most common setup with a single user-defined //hostname// and a domain selected from what is offered by this provider. 
 + 
 +In order to update v4 or v6 IP address for a //subdomain// that they call [[https://www.dynu.com/Resources/Tutorials/DynamicDNS/Advancedfeatures/Aliases | alias]] the following custom configuration can be used:
  
 <code> <code>
-update_url http://www.duckdns.org/update?domains=[USERNAME]&token=[PASSWORD]&ip=[IP] +service_name delete --custom-- 
-domain [Your FQDN] +update_url api.dynu.com/nic/update?hostname=[DOMAIN]&alias=[PARAMENC]&myipv6=[IP]&password=[PASSWORD
-username [Your Host without ".duckdns.org"] +domain [your 3rd level domain, like "mydomain.example.com"] 
-password [Your token+paramenc [your alias, like "myhost"
-use_https 1 +username [dummy, not used, but Luci expects something to be set] 
-cacert [path to certificate file or directory]+password [your update token]
 </code> </code>
 +This will update IPv6 address for ''myhost.mydomain.example.com''
 +
 +The //update token// used as a password in both standard and custom configurations is an MD5/SHA256 hash of "IP Update Password" that is set in Control Panel /[[https://www.dynu.com/en-US/ControlPanel/ManageCredentials | Manage Credentials]]
 +
 +The hash can be generated on their [[https://www.dynu.com/NetworkTools/Hash | web site]] or locally by the user.
 +
  
 ==== freedns.afraid.org ==== ==== freedns.afraid.org ====
Line 804: Line 762:
  
 ==== he.net ==== ==== he.net ====
-Last updated: 2015-07-15+Last updated: 2023-10-05
  
 [[https://dns.he.net/|Homepage]] [[https://dns.he.net/|Homepage]]
 +[[https://dns.he.net/docs.html|Details about their free dynamic DNS service]]
  
-FIXME +Background (who they are): Hurricane Electric (referred to as HE.net below) is one of the //original// supporters/pushers of the IPv6 internet (and also provide a [[https://tunnelbroker.net/|free tunnel broker]] if you want IPv6 connectivity but your ISP is in the stone-ages), and HE.net also run major internet backbones. 
-There is another [[docs:guide-user:services:ddns:hurricaneelectricfreedns|description]] here+ 
-take over the link during rewriting this wiki page.+HE.net is a great option if you //already// have a domain (or sub-domain) you can point at their 5 nameservers (ns[1-5]/dot/he.net).  This will need to be done **before** you can setup the zone (your domain or subdomain) up. 
 + 
 +You can then opt for one of an A (for IPv4) record or an AAAA (for IPv6) record //under// that sub-domain, to be updated dynamically by the ddns-service.  Security of this ability is provided via a 16-character api-access-key they can generate for you (or you can specify your own). 
 + 
 +If you don't have an HE.net account, you will need to [[https://ipv6.he.net/certification/register.php|open a free account]] 
 + 
 +If you don't already have a domain (or subdomain) pointing to HE.net 
 +* Go to the [[https://dns.he.net/|DNS management page]]. 
 +* Click on **Add a new domain** (on the left side-bar) 
 +* Enter your domain or subdomain (that should //already// have pointed to their 5 nameservers), and click the green **Add domain!** button (the page may take a few seconds to respond, do not click multiple times) 
 +* Next to the //new domain//, click the 2nd icon (the one that looks like classic-windows app + pencil icon) to **Edit** the records for that dns-zone. 
 +* Click the **New A** button (for IPv4) or **New AAAA** button (for IPv6). 
 +* For **Name**, enter only the part part before the first period in the FQDN (the part that goes //before// the domain or subdomain you pointed at HE's nameserver). 
 +* **//MAKE SURE//** you click **Enable entry for dynamic dns** checkbox **ON** 
 +* Click **Submit** 
 +* Click the //icon that looks like a small two-arrows// in a circle (pointing to each other) in the **DDNS** column. 
 +* In the popup **Dynamic DNS Record**, here you can either generate a key (up to 16 characters) or specify your own.  **You will need this for the password in the example config below** 
 + 
 +(src - above steps tested and based on [[https://networkingnotesblog.wordpress.com/2015/10/15/using-dynamic-dns-server-with-he-net/|this blog]]). 
 + 
 +*Note:* In order for a zone to be accepted for addition to HE.net's DNS-manager, it **must** //already// be configured to point to ns1.he.net / ns2.he.net / ns3.he.net / ns4.he.net / ns5.he.net.  Adding the domain or subdomain to HE.net will fail w/ an error otherwise.  Note: I don't know if they check for all five nameservers, but may as well just add all 5 NS records to your domain (with the registrar you setup the domain) or if a sub-domain (at your existing host. 
 + 
 +Lastly, if you want to (it's optional) protect the update-requests that the ddns-service does, with TLS, you can see the [[client#ssl_support1|above section on SSL]]. 
 +The following settings have been tested/worked: 
 + 
 +In the below example config, the (sub-)domain pointing to HE.net nameservers is "zone.domain.tld", and the A record is "addr-a-record" (thus the full dynamic hostname will be addr-a-record.zone.domain.tld).
  
-Use the following settings: 
 <code> <code>
-service_name he.net +# /etc/config/ddns 
-domain [Your FQDN] +config service 'dns_he_net' 
-username [Your FQDN] +        option service_name 'he.net' 
-password [Your password]+        option enabled '1' 
 +        option domain 'addr-a-record.your.domain.tld'       # this is the A or AAAA record you created and set up a DynDNS Key for  
 +        option lookup_host 'addr-a-record.your.domain.tld'  # same as above - script queries this to see if it's outdated and needs to be updated 
 +        option use_ipv6 '0'                                 # whether to update your AAAA record (by default: A record) 
 +        option username 'your.domain.tld'                   # this is not your HE.net username, but your zone (zone.domain.tld) delegated to HE.net nameservers 
 +        option password 'XXXXXXXXXXXXXXXX'                  # this part is the generated Key for the DynDNS function  
 +        option ip_source 'network' 
 +        option ip_network 'wan' 
 +        option interface 'wan' 
 +        option use_syslog '2' 
 +        option check_unit 'minutes' 
 +        option force_unit 'minutes' 
 +        option retry_unit 'seconds'
 </code> </code>
 +
 +More info about how this works underneath the covers: https://dns.he.net/docs.html
 +
 +Note: There is another (older) doc here: [[docs:guide-user:services:ddns:hurricaneelectricfreedns|doc here]].
 +
  
 ==== mythic-beasts.com ==== ==== mythic-beasts.com ====
Line 877: Line 877:
  
 ==== noip.com ==== ==== noip.com ====
-Last updated: 2015-07-21+Last updated: 2024-10-03
  
-[[http://www.noip.com/|Homepage]] -- [[http://www.noip.com/support/|SupportCenter]]+[[http://www.noip.com/ | Homepage]] -- [[http://www.noip.com/support/ | SupportCenter]] -- [[https://www.noip.com/integrate/request/ | Dynamic DNS API]]
  
-:!: Install the [[packages:pkgdata:ddns-scripts_no-ip_com]] package.+:!: Install the [[packages:pkgdata:ddns-scripts-noip]] 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''.+The default is to use ''username'' and ''password'' as normal inside //ddns-scripts// together with ''service_name no-ip.com''.
  
 If you want to update multiple hosts inside one configuration/section you need the following settings: If you want to update multiple hosts inside one configuration/section you need the following settings:
Line 943: Line 943:
  
 <code bash> <code bash>
--"$(cat /etc/ddns/services 2>/dev/null | grep ipv4.tunnelbroker.net)+grep -q -e "ipv4\.tunnelbroker\.net" /etc/ddns/services 
-&& echo "\"tunnelbroker.net\"      \"http://[USERNAME]:[PASSWORD]@ipv4.tunnelbroker.net/nic/update?hostname=[DOMAIN]&myip=[IP]\"     \"good|nochg\"" >> /etc/ddns/services+&& echo -e "\"tunnelbroker.net\"\t\"http://[USERNAME]:[PASSWORD]@ipv4.tunnelbroker.net/nic/update?hostname=[DOMAIN]&myip=[IP]\"\t\"good|nochg\"" >> /etc/ddns/services
 </code> </code>
  
 Now you can configure your tunnelbroker ddns: Now you can configure your tunnelbroker ddns:
  
-<code bash /etc/config/ddns>+<code bash
 +/etc/config/ddns
 config service 'HE6in4' config service 'HE6in4'
         option service_name  'tunnelbroker.net'         option service_name  'tunnelbroker.net'
Line 963: Line 964:
  
 Instead of using a web service, that has the risk of being eventually offline, to detect the public IP, you can detect the [[client#Detecting WAN public IP by script|WAN public IP by this script]]. Instead of using a web service, that has the risk of being eventually offline, to detect the public IP, you can detect the [[client#Detecting WAN public IP by script|WAN public IP by this script]].
 +
 +===== Additional forum threads for configuration =====
 +
 +https://forum.openwrt.org/t/enabling-dynamic-dns-is-too-convoluted-difficult/152939
  
  • Last modified: 2024/12/19 18:26
  • by andrewz