User Tools

Site Tools


doc:howto:ddns.client

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
doc:howto:ddns.client [2014/02/14 11:09]
nabilion
doc:howto:ddns.client [2014/11/05 11:46] (current)
marco.sulla
Line 18: Line 18:
 Here is a list of suggested DDNS providers. Here is a list of suggested DDNS providers.
  
-  * http://dyndns.org   ​:!: needs credit card number, even for "​Trial"​ Account. ​ Free (with no credit card) if user donated back in 1998-2001. +  * http://freedns.afraid.org :!: free 
-  * http://changeip.com :!: dynamic dns is free +  * http://noip.com :!: free but requires annoying account confirmation every 30 days 
-  * http://zoneedit.com :!: non-free +  * http://changeip.com :!: free 
-  * http://no-ip.com    still free =) +  * http://duckdns.org :!: free - generated config on site 
-  * http://freedns.afraid.org +  * http://system-ns.com :!: free 
-  * http://​dnsdynamic.org +  * https://dns.he.net/ ​:!: free - if you have your own domain name, [[doc/howto/ddns.client/hurricaneelectricfreedns]]
-  * http://dyndns.fr +  * http://dnsdynamic.org  ​:!: free 
-  * http://dyndnspro.com +  * http://zoneedit.com :!: non-free (dns update by https required, curl needed. See [[http://wiki.openwrt.org/​doc/​howto/​ddns.client#​ssl.support|SSL support]].
-  * http://​dynamicdomain.net +  * http://​dyndns.org :!: non-free except if you donated in 1998-2001. 30-day free trial needs credit card number. 
-  * http://duckdns.org  free - generated config on site =) +  * http://​dyndns.fr :!: non-free
-  * http://system-ns.com  free +
-  * https://dns.he.netfree - if you have your own domain name, [[doc/​howto/​ddns.client/​hurricaneelectricfreedns]].+
   * Any other service that can update when some URL is accessed. ​ The script is quite versatile.   * Any other service that can update when some URL is accessed. ​ The script is quite versatile.
  
Line 46: Line 44:
 Installing the package ''​luci-app-ddns''​ will automatically install the package ''​ddns-scripts'',​ which contains the scripts that actually update the dynamic DNS name (see below). Installing the package ''​luci-app-ddns''​ will automatically install the package ''​ddns-scripts'',​ which contains the scripts that actually update the dynamic DNS name (see below).
  
-After ''​luci-app-ddns''​ is installed, just press any other link on the Openwrt LuCI WebUI, and the page will refresh itself and Dynamic DNS will appear under Services > Dynamic DNS. If those tabs don't show up, reboot the router.+After ''​luci-app-ddns''​ is installed, just press any other link on the Openwrt LuCI WebUI, and the page will refresh itself and Dynamic DNS will appear under Services > Dynamic DNS. If those tabs don't show up, run ''/​etc/​init.d/​uhttpd restart''​ or reboot the router
 + 
 +Beginning ddns-scripts Version 1.0.0-23 you need to enable ''​ddns''​ service in "​System"​-"​Startup"​ or run: ''/​etc/​init.d/​ddns enable''​ to enable updates being send on reboot and hotplug events.
  
 ==== Step 2: Configuration ==== ==== Step 2: Configuration ====
Line 60: Line 60:
 | Hostname | The DNS name to update (this name must already be registered with the the DDNS service) | your.domain.name | | Hostname | The DNS name to update (this name must already be registered with the the DDNS service) | your.domain.name |
 | Username | Username of your DDNS service account | yourusername | | Username | Username of your DDNS service account | yourusername |
-| Password | Password of your DDNS service account ​(ensure ​this password does not have "​$1"​ or $ with any number following in it, as this breaks the script| yourpassword |+| Password | Password of your DDNS service account. Ensure ​this password does **not** have "​$1"​ or $ with any number following in it, as this **breaks** the script. **For freedns.afraid.org,​ [[ddns.client#​Specific settings for freedns.afraid.org|read below]]**. ​| yourpassword |
 | Source of IP address | This tells the script how to determine your interface external IP address. See below for a description. | Usually "​network"​ | | Source of IP address | This tells the script how to determine your interface external IP address. See below for a description. | Usually "​network"​ |
 | Network/​Interface/​URL | This will be named based on the section of "​Source of IP address"​. Select the network, interface physical name, or type in the URL to use to determine the external IP address. | Usually "​wan"​ | | Network/​Interface/​URL | This will be named based on the section of "​Source of IP address"​. Select the network, interface physical name, or type in the URL to use to determine the external IP address. | Usually "​wan"​ |
-| Check for changed IP every | Self Explanatory | 10 |+| Check for changed IP every | Self Explanatory. Checks below 5 minutes make no sence because from testing, it takes this time until the global DNS servers be in sync | 10 |
 | Check-time unit | The unit for the value above | min | | Check-time unit | The unit for the value above | min |
 | Force update every | Even if the detected external IP address has not changed, update the DDNS name anyway after this time interval | 72 | | Force update every | Even if the detected external IP address has not changed, update the DDNS name anyway after this time interval | 72 |
Line 70: Line 70:
 Click "Save & Apply" to save changes. Click "Save & Apply" to save changes.
  
-=== Further details === +=== Specific settings for freedns.afraid.org ​=== 
-  * freedns.afraid.org ​specific settings: +    * You must **NOT** set your account password in the "​password" ​field. ​On the contrary, go to http://​freedns.afraid.org/​dynamic/,​ login, click "​Direct URL". On the location bar of your browser, copy the the authorisation tokenthe part after http://​freedns.afraid.org/​dynamic/​update.php? ​url. and paste it in the password field.
-    * leave the username ​field empty. +
-    * put the authorisation token from the update url (the part after http://​freedns.afraid.org/​dynamic/​update.php?​in the password field.+
     * DO enter the host into the Hostname field. Although it is not used for the update, it //is// used to check the host's current IP address (via ''​nslookup''​).     * DO enter the host into the Hostname field. Although it is not used for the update, it //is// used to check the host's current IP address (via ''​nslookup''​).
 +
 +=== Further details ===
 +  * **A full list of supported settings (some not supported by LuCI WebUI) and their description you will find [[doc:​uci:​ddns|in UCI documentation]].**
   * Source of IP address ("​ip_source"​ in the configuration file)   * Source of IP address ("​ip_source"​ in the configuration file)
     * The "​ip_source"​ option can be "​network",​ "​interface",​ "​script"​ or "​web",​ with "​network"​ as the default     * The "​ip_source"​ option can be "​network",​ "​interface",​ "​script"​ or "​web",​ with "​network"​ as the default
Line 80: Line 81:
     * If "​ip_source"​ is "​interface"​ you specify a hardware interface (e.g. "​eth1"​) and whatever the current ip of this interface is will be associated with the domain when an update is performed.     * If "​ip_source"​ is "​interface"​ you specify a hardware interface (e.g. "​eth1"​) and whatever the current ip of this interface is will be associated with the domain when an update is performed.
     * If "​ip_source"​ is "​script"​ you specify a script to obtain ip address. The "​ip_script"​ option should contain path to your script. This option is not available through the LuCI web interface.     * If "​ip_source"​ is "​script"​ you specify a script to obtain ip address. The "​ip_script"​ option should contain path to your script. This option is not available through the LuCI web interface.
-    * The last possibility is that "​ip_source"​ is "​web",​ which means that in order to obtain our ip address we will connect to a website (specified in the URL field), and use the first valid ip address listed on that page. Use this option ​of the OpenWrt device is behind a NAT device and does not have a real external IP address assigned to the WAN interface being monitored. The correct URL will depend on the DDNS service being used. Check with the service'​s documentation to determine if they offer this feature and, if so, what the correct URL is.+    * The last possibility is that "​ip_source"​ is "​web",​ which means that in order to obtain our ip address we will connect to a website (specified in the URL field), and use the first valid ip address listed on that page. Use this option ​if the OpenWrt device is behind a NAT device and does not have a real external IP address assigned to the WAN interface being monitored. The correct URL will depend on the DDNS service being used. Check with the service'​s documentation to determine if they offer this feature and, if so, what the correct URL is.
       * For the DynDNS service, the URL is [[http://​checkip.dyndns.org]]       * For the DynDNS service, the URL is [[http://​checkip.dyndns.org]]
       * Multiple URLs can be used by separating the entries with a space.       * Multiple URLs can be used by separating the entries with a space.
Line 89: Line 90:
   * The simplest option is to reboot the router. This will automatically start the scripts as part of the normal interface startup process.   * The simplest option is to reboot the router. This will automatically start the scripts as part of the normal interface startup process.
   * If a reboot should be avoided, the scripts can be started manually by generating a hotplug event from the command line (see below for details)   * If a reboot should be avoided, the scripts can be started manually by generating a hotplug event from the command line (see below for details)
 +  * Beginning ddns-scripts Version 1.0.0-23 you need to enable //​**ddns**//​ service in "​System"​-"​Startup"​ to enable updates being send on reboot and hotplug events.
 +  * You can also start/​stop/​restart the service without reboot or generating a hotplug event.
  
 ==== Step 4: You're done! ==== ==== Step 4: You're done! ====
Line 183: Line 186:
 root@OpenWrt:​~#​ uci commit ddns root@OpenWrt:​~#​ uci commit ddns
 </​code>​ </​code>​
- 
-=== Configuration example for noip.com === 
- 
-An example for **noip.com** service that updates via pinging web url: 
-<​code>​ 
-config ​ service "​myddns"​ 
- option enabled ​         "​1"​ 
- option interface ​       "​wan"​ 
- option service_name ​    "​no-ip.com"​ 
- option force_interval ​  "​72"​ 
- option force_unit ​      "​hours"​ 
- option check_interval ​  "​10"​ 
- option check_unit ​      "​minutes"​ 
- option username ​        "​USERNAME"​ 
- option password ​        "​PASSWORD"​ 
- option ip_source ​       "​web"​ 
- option ip_url ​          "​http://​[USERNAME]:​[PASSWORD]@dynupdate.no-ip.com/​nic/​update?​hostname=[DOMAIN]&​myip=[IP]"​ 
- option domain ​          "​DOMAIN.no-ip.org"​ 
-</​code>​ 
- 
-=== Configuration example for dyndns.fr ​ === 
- 
- ​**dyndns.fr** service that updates via pinging web url: 
-<​code>​ 
-config ​ service "​myddns"​ 
- option enabled ​         "​1"​ 
- option interface ​       "​wan"​ 
- option service_name ​    "​dyndns.fr"​ 
- option force_interval ​  "​72"​ 
- option force_unit ​      "​hours"​ 
- option check_interval ​  "​10"​ 
- option check_unit ​      "​minutes"​ 
- option username ​        "​USERNAME"​ 
- option password ​        "​PASSWORD"​ 
- option ip_source ​       "​web"​ 
- option ip_url ​          "​http://​[DOMAIN]:​[PASSWORD]@dyndns.dyndns.fr/​update.php?​hostname=[DOMAIN]&​myip=[IP]"​ 
- option domain ​          "​DOMAIN.dyndns.fr"​ 
-</​code>​ 
-=== Configuration example for dyndnspro.com ​ === 
- 
- ​**dyndnspro.com** service that updates via pinging web url: 
-<​code>​ 
-config ​ service "​myddns"​ 
- option enabled ​         "​1"​ 
- option interface ​       "​wan"​ 
- option service_name ​    "​dyndnspro.com"​ 
- option force_interval ​  "​72"​ 
- option force_unit ​      "​hours"​ 
- option check_interval ​  "​10"​ 
- option check_unit ​      "​minutes"​ 
- option username ​        "​USERNAME"​ 
- option password ​        "​PASSWORD"​ 
- option ip_source ​       "​web"​ 
- option ip_url ​          "​http://​[DOMAIN]:​[PASSWORD]@dyndns.dyndnspro.com/​update.php?​hostname=[DOMAIN]&​myip=[IP]"​ 
- option domain ​          "​DOMAIN.dyndnspro.com"​ 
-</​code>​ 
- 
-=== Configuration example for dynamicdomain.net ​ === 
- 
- ​**dynamicdomain.net** service that updates via pinging web url: 
-<​code>​ 
-config ​ service "​myddns"​ 
- option enabled ​         "​1"​ 
- option interface ​       "​wan"​ 
- option service_name ​    "​dynamicdomain.net"​ 
- option force_interval ​  "​72"​ 
- option force_unit ​      "​hours"​ 
- option check_interval ​  "​10"​ 
- option check_unit ​      "​minutes"​ 
- option username ​        "​USERNAME"​ 
- option password ​        "​PASSWORD"​ 
- option ip_source ​       "​web"​ 
- option ip_url ​          "​http://​[DOMAIN]:​[PASSWORD]@dyndns.dynamicdomain.net/​update.php?​hostname=[DOMAIN]&​myip=[IP]"​ 
- option domain ​          "​DOMAIN.dynamicdomain.net"​ 
-</​code>​ 
- 
  
 === Configuration for duckdns.org === === Configuration for duckdns.org ===
-**As of 2013 this is now a completely free Dynamic DNS provider.** 
 == Add Duck DNS to ''​services''​ == == Add Duck DNS to ''​services''​ ==
 The reason you want to add Duck DNS to the ''​services''​ file is because this will allow you to configure other ddns services if needed, and it allows for proper https usage with ''​curl''​. The reason you want to add Duck DNS to the ''​services''​ file is because this will allow you to configure other ddns services if needed, and it allows for proper https usage with ''​curl''​.
Line 333: Line 259:
 </​code>​ </​code>​
  
-Note that with the namecheap protocol, the ''​username''​ option is translated to the ''​host''​ argument in the update request. ​ Therefore, it should be the hostname on the DNS record, **not** the username that you use to log into the namecheap.com site.  In this example, the script will update the '​@'​ (full domain) DNS A-record. ​ To update a subdomain A-record, enter the name of the subdomain instead. ​ To get your password, log into the namecheap.com site, enter the management console for the domain, and click the ''​Dynamic DNS''​ menu option.+Note that with the namecheap protocol, the ''​username''​ option is translated to the ''​host''​ argument in the update request. ​ Therefore, it should be the hostname on the DNS record, **not** the username that you use to log into the namecheap.com site.  In this example, the script will update the '​@'​ (full domain) DNS A-record. ​ To update a subdomain A-record, enter the name of the subdomain instead. ​ To get your password, log into the namecheap.com site, enter the management console for the domain, and click the ''​Dynamic DNS''​ menu option. ​  
 + 
 +Make a record for each subdomain. ​ Using Luci, enter a label for the subdomain into the Add field (near lower left of page)and click the (+), or hand edit the /​etc/​config/​ddns file and add a new stanza. ​  
 + 
 +Example /​etc/​config/​ddns records to update two subdomains at namecheap:​ 
 +<​code>​ 
 +config service '​myddns'​ 
 +        option interface '​wan'​ 
 +        option force_unit '​hours'​ 
 +        option check_interval '​20'​ 
 +        option check_unit '​minutes'​ 
 +        option retry_interval '​60'​ 
 +        option retry_unit '​seconds'​ 
 +        option password '​YourNamecheapDDNSpassword'​ 
 +        option enabled '​1'​ 
 +        option ip_source '​interface'​ 
 +        option ip_interface '​pppoe-wan'​ 
 +        option service_name '​namecheap.com'​ 
 +        option force_interval '​72'​ 
 +        option domain '​Your.Domain'​ 
 +        option username '​www'​ 
 + 
 +config service '​mail'​ 
 +        option interface '​wan'​ 
 +        option force_unit '​hours'​ 
 +        option check_interval '​20'​ 
 +        option check_unit '​minutes'​ 
 +        option retry_interval '​60'​ 
 +        option retry_unit '​seconds'​ 
 +        option password '​YourNamecheapDDNSpassword'​ 
 +        option enabled '​1'​ 
 +        option ip_source '​interface'​ 
 +        option ip_interface '​pppoe-wan'​ 
 +        option service_name '​namecheap.com'​ 
 +        option force_interval '​24'​ 
 +        option domain '​Your.Domain'​ 
 +        option username '​mail'​ 
 + 
 +</​code>​ 
 + 
 +You can hand test the records for '​www'​ and '​mail',​ labeled '​myddns'​ and '​mail'​ with: 
 +<​code>​ 
 +/​usr/​lib/​ddns/​dynamic_dns_updater.sh myddns 
 +/​usr/​lib/​ddns/​dynamic_dns_updater.sh mail 
 +</​code>​ 
 + 
 +Look at the return XML and see that the Error Count is 0 to validate a successful update. Check each record, one at a time. Use <​Ctrl-C>​ to kill the test daemons. 
  
 ===== Manually starting ddns-scripts ===== ===== Manually starting ddns-scripts =====
Line 354: Line 327:
 start_daemon_for_all_ddns_sections "​wan"​ start_daemon_for_all_ddns_sections "​wan"​
 exit exit
 +</​code>​
 +
 +  * Beginning ddns-scripts Version 1.0.0-23
 +    * simply enable/​disable start/​stop/​restart like every other service
 +
 +<​code>​
 +root@OpenWrt:​~#​ /​etc/​init.d/​ddns enable
 +root@OpenWrt:​~#​ /​etc/​init.d/​ddns start
 </​code>​ </​code>​
  
Line 359: Line 340:
  
   * Verify the ddns-scripts interface monitor script is running   * Verify the ddns-scripts interface monitor script is running
-    ​* One instance of this script should be running for each ddns-scripts configuration defined+  ​* One instance of this script should be running for each ddns-scripts configuration defined
  
 <​code>​ <​code>​
doc/howto/ddns.client.1392372546.txt.bz2 · Last modified: 2014/02/14 11:09 by nabilion