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 [2023/11/02 19:37] – [Detecting WAN IP with script] optimize code vgaeteradocs:guide-user:services:ddns:client [2024/10/05 13:46] – [dynu.com] andrewz
Line 32: Line 32:
   * Pick one from the list https://github.com/openwrt/packages/blob/master/net/ddns-scripts/files/usr/share/ddns/list   * 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/|dns.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://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> 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 DNS server (Bind, PowerDNS, Knot) via nsupdate (RFC 2136).   - 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.
   - Requires SSL support.   - Requires SSL support.
   - Supports IPv6.   - Supports IPv6.
Line 65: Line 66:
   - Press the button **Update Lists** to update internal lists of available packages.   - Press the button **Update Lists** to update internal lists of available packages.
   - 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:ddns-scripts]] and [[packages:pkgdata:luci-app-ddns]] to provide DDNS client service and web interface.
-  - Install the packages [[packages:pkgdata:wget]] and [[packages:pkgdata:ca-certificates]], or [[packages:pkgdata:curl]] and [[packages:pkgdata:ca-bundle]] for SSL support.+  - 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-*''.   - Install the provider specific packages ''ddns-scripts_*'' and LuCI language packages ''luci-i18n-ddns-*''.
   - Refresh the page and navigate to **LuCI -> Services -> Dynamic DNS**.   - Refresh the page and navigate to **LuCI -> Services -> Dynamic DNS**.
Line 95: Line 96:
 ==== Web interface instructions ==== ==== Web interface instructions ====
 The main settings you need to set: The main settings you need to set:
-|  Service name The DDNS service provider to use +|  DDNS Service provider Service provider name as it is known to OpenWrt                                                                                                                                                           
- Lookup Host One of your [[wp>Fully_qualified_domain_name|FQDNs]] you want to update, used by //ddns-scripts// with nslookup to check if update has happened +       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                                                          
- Host/Domain | Mostly same as lookup hostbut can provide a list of hosts to be updated +                Domain | Usually the same as Lookup Hostnamescript will include this name into the update request sent to provider                                                                                               
- Username | Username or other parameter to use as username (send urlencoded) | +              Username | Username or other parameter used for authentication in update request (will be sent URL-encoded                                                                                                         
- Password | Password or other parameter to use as password (send urlencoded)\\ :!: Ensure this password does not have have ''$'' characters, as this breaks the script. | +              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'' |+             Interface | Network name used by OpenWrt hotplug event system to start //ddns-scripts//, e.g. ''wan'', ''wan6''                                                                                                       |
  
   * It is not allowed to use ''dash''-sign "-" inside configuration/section names.   * It is not allowed to use ''dash''-sign "-" inside configuration/section names.
Line 278: Line 279:
  
 ==== WAN IP via own PHP script ==== ==== 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: 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:
  
Line 290: Line 290:
 </html> </html>
 </code> </code>
 +
 ==== Detecting WAN IP with 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.
Line 566: Line 567:
 </code> </code>
  
-==== bind / nsupdate ==== 
-Last updated: 2021-10-23 
- 
-If you have your own domain and are running bind as your primary DNS server, you can use the [[packages:pkgdata:ddns-scripts-nsupdate]] package to update bind. There are two parts: 
- 
-  - Configure bind to accept DNS updates using TSIG. 
-  - Configure OpenWRT to send DNS updates to bind when the IP changes. 
- 
-In the below example, we will use the following parameters: 
-  * Domain name: **example.org** 
-  * DNS Server: **ns.example.org** 
-  * Router hostname: **openwrt.example.org** 
- 
-=== Configure Bind === 
-The first step is to set up bind to allow updates to the ''A'' (IPv4) and ''AAAA'' (IPv6) records for **openwrt.example.org**. To do this, log onto your DNS server and run ''/usr/sbin/ddns-confgen -s openwrt.example.org''. This will generate the key and shared secret that will be used to update DNS. You should see output similar to the following: 
-<code> 
-$ /usr/sbin/ddns-confgen -s openwrt.example.org 
-# To activate this key, place the following in named.conf, and 
-# in a separate keyfile on the system or systems from which nsupdate 
-# will be run: 
-key "ddns-key.openwrt.example.org" { 
-        algorithm hmac-sha256; 
-        secret "B1m6Xb1ngrEeNFSExr8homgfzeN8kWIBkJpnoAHF5D8="; 
-}; 
- 
-# Then, in the "zone" statement for the zone containing the 
-# name "openwrt.example.org", place an "update-policy" statement 
-# like this one, adjusted as needed for your preferred permissions: 
-update-policy { 
-          grant ddns-key.openwrt.example.org name openwrt.example.org ANY; 
-}; 
- 
-# After the keyfile has been placed, the following command will 
-# execute nsupdate using this key: 
-nsupdate -k <keyfile> 
-</code> 
- 
-The two important things to note for the second part of the setup, on openwrt, are: 
-  - Key Name: **ddns-key.openwrt.example.org** 
-  - Shared Secret (Base64 encoded): **B1m6Xb1ngrEeNFSExr8homgfzeN8kWIBkJpnoAHF5D8=** (yours will differ as it is randomly generated) 
- 
-You then need to do as the comments in the output say and put both the ''key'' block and the ''update-policy'' block in the proper places within your bind configuration file (generally ''/etc/bind/named.conf.local'' or ''/etc/bind/named.conf'') and reload/restart bind. 
- 
-To test that bind is now properly configured you can run a test as follows: 
-<code> 
-$ nsupdate 
-server ns.example.org 
-key hmac-sha256:ddns-key.openwrt.example.org B1m6Xb1ngrEeNFSExr8homgfzeN8kWIBkJpnoAHF5D8= 
-update del openwrt.example.org A 
-update add openwrt.example.org 600 A 10.10.10.10 
-show 
-send 
-answer 
-quit 
-$ dig @ns.example.org openwrt.example.org A 
-</code> 
- 
-You should see no errors, and the ''10.10.10.10'' IPv4 address returned for **openwrt.example.org**. If so, you are ready to move on to the next step which is to configure DDNS on OpenWRT to send updates to bind. 
- 
-See also: [[https://bind9.readthedocs.io/en/latest/advanced.html#tsig|BIND 9 Administrator Reference Manual]] 
- 
-=== OpenWRT === 
-== LuCI == 
-To configure DDNS using the LuCI WUI, you will need to install the [[packages:pkgdata:luci-app-ddns]] package. Once you log into LuCI, go to **Services** -> **Dynamic DNS**. In the bottom section, Services, you will see two example configurations: one for IPv4 and one for IPv6. Click the **Edit** button, and enter the following information (based on the example config from above; but, use your own values): 
-  * Lookup Hostname: **openwrt.example.org** 
-  * DDNS Service provider: **bind-nsupdate** 
-  * Domain: **openwrt.example.org** 
-  * Username: **hmac-sha256:ddns-key.openwrt.example.org** 
-  * Password: **B1m6Xb1ngrEeNFSExr8homgfzeN8kWIBkJpnoAHF5D8=** 
-  * DNS-Server (on the Advanced Settings tab): **ns.example.org** 
- 
-Then click **Save**, followed by **Save & Apply**. 
- 
-Congratulations, if you did everything right, openwrt should now update DNS with the current IP Address for your router. 
- 
-== UCI == 
-If you are not using LuCI and want to configure manually, you will need to edit ''/etc/config/ddns'' as follows (using the example config from above): 
-<file [enable_line_numbers="true"]> 
-config ddns 'global' 
-        option ddns_dateformat '%F %R' 
-        option ddns_loglines '250' 
-        option ddns_rundir '/var/run/ddns' 
-        option ddns_logdir '/var/log/ddns' 
- 
-config service 'myddns_ipv4' 
-        option enabled '1' 
-        option lookup_host 'openwrt.example.org' 
-        option use_ipv6 '0' 
-        option service_name 'bind-nsupdate' 
-        option domain 'openwrt.example.org' 
-        option ip_source 'network' 
-        option ip_network 'wan' 
-        option interface 'wan' 
-        option dns_server 'ns.example.org' 
-        option use_syslog '2' 
-        option check_unit 'minutes' 
-        option force_unit 'minutes' 
-        option retry_unit 'seconds' 
-        option username 'hmac-sha256:ddns-key.openwrt.example.org' 
-        option password 'B1m6Xb1ngrEeNFSExr8homgfzeN8kWIBkJpnoAHF5D8=' 
-</file> 
-You can then add another stanza for IPv6, by turning on ''use_ipv6'' and changing ''ip_network'' and ''interface'' to **wan6**. 
 ==== cloudflare.com ==== ==== cloudflare.com ====
 Last updated: 2022-09-11 Last updated: 2022-09-11
Line 749: 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 972: 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:
  • Last modified: 2024/12/19 18:26
  • by andrewz