| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision |
| docs:guide-user:services:ddns:client [2023/12/18 10:18] – old revision restored and fix wget package romarin421 | docs:guide-user:services:ddns:client [2024/10/05 13:46] – [dynu.com] andrewz |
|---|
| * 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. |
| ==== 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 host, but can provide a list of hosts to be updated | | | Domain | Usually the same as Lookup Hostname, script 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. |
| </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 |
| |
| ==== 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 updated: 2024-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 ==== |
| |
| ==== 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: |