Dynamic DNS

From DD-WRT Wiki

(Difference between revisions)
Jump to: navigation, search
Revision as of 05:57, 29 October 2009 (edit)
Starter48 (Talk | contribs)
m (CHANGEIP.COM)
← Previous diff
Revision as of 21:30, 1 December 2009 (edit) (undo)
Dmcg (Talk | contribs)
(NameCheap - Updated NameCheap Dynamic DNS section with actual working example.)
Next diff →
Line 385: Line 385:
=== NameCheap === === NameCheap ===
-[http://www.namecheap.com NameCheap] is a domain registrar that includes free dynamic dns with the host registration. Under $10/year. NameCheap doesn't use normal http auth for updating, so you have to include your domain and password in the URL.+[http://www.namecheap.com NameCheap] is a domain registrar that includes free dynamic dns with the host registration. Under $10/year. NameCheap doesn't use normal http auth for updating, so you have to include your domain and password in the URL. Anything between brackets should be changed to your appropriate information. Do not put anything after the &host= in the URL option!
{| border=1 cellspacing=0 cellpadding=5 {| border=1 cellspacing=0 cellpadding=5
Line 395: Line 395:
|- |-
|Username: |Username:
-|(not used)+|(Any jibberish can go here.)
|- |-
|Password: |Password:
-|(not used)+|[Your NameCheap-defined Dynamic DNS password]
|- |-
|Host Name: |Host Name:
-|'Your subdomain (or @ for none)'+|[Your subdomain ('www' for the standard, or '@' for no subdomain)]
|- |-
|URL: |URL:
Line 408: Line 408:
|} |}
-(Note: I think these instructions may be old. It doesn't cost anything now. I registered my domain at godaddy and was able to change the nameservers to those from namecheap. Also, for ddns, try using your domain name in the username field and the password generated by namecheap (specifically for ddns -- *not* your login password!) in the password field. And it doesn't seem to need the password in the url as part of the get request (which is kind of stupid, sending it in the clear...). This worked for me. see http://www.electronox.net/blog/how-to/namecheap-ddns-and-ddwrt --wikiterra Aug 8, 2009)+ 
 + 
 +Note: If you would like to update the IP address for more than one subdomain, separate each subdomain in the Host Name box with an '-a' argument. For instance:
 + 
 +{| border=1 cellspacing=0 cellpadding=5
 +|Host Name:
 +|www -a webmail -a waycoolstuff
 +|-
 +|}
 + 
 +would cause www.[your domain], webmail.[your domain], and waycoolstuff.[your domain] to be updated to the same IP address.
 + 
 +<small>Updated Dec 1, 2009, after the instructions provided at electronox.net (see link below) worked. [[User:Dmcg|Dmcg]] 22:30, 1 December 2009 (CET)</small>
 + 
 +<small>(Note: I think these instructions may be old. It doesn't cost anything now. I registered my domain at godaddy and was able to change the nameservers to those from namecheap. Also, for ddns, try using your domain name in the username field and the password generated by namecheap (specifically for ddns -- *not* your login password!) in the password field. And it doesn't seem to need the password in the url as part of the get request (which is kind of stupid, sending it in the clear...). This worked for me. see http://www.electronox.net/blog/how-to/namecheap-ddns-and-ddwrt --wikiterra Aug 8, 2009)</small>
=== DNSexit === === DNSexit ===

Revision as of 21:30, 1 December 2009

Dynamic DNS (DDNS) is a DNS caching service

DD-WRT v23 SP2 and later use inadyn as its embedded dyndns client solution.

Here's a list of Dynamic DNS service providers:

http://www.dyndns.com
http://www.easydns.com
http://freedns.afraid.org
http://www.no-ip.com
http://www.tzo.com
http://www.zoneedit.com
http://www.ChangeIP.com
http://www.regfish.de
http://www.dnsomatic.com

Contents

Configuration

Predefined

DD-WRT provides a set of predefined configurations for the most common DDNS services. After choosing from one of the predefined DDNS services, you have to provide the "User Name" and the "Password" for the account of your DDNS service. In the "Host Name" field, you have to enter the fully qualified name of you dynamic domain (e.g. myhostname.example.org).

Multiple DDNS host names

If you have multiple host names registered at your DDNS service, you can enter them in the "Host Name" field using the "-a" option.

Example: You want to update the IP address for myhostname1.example.org, myhostname2.example.org and myhostname3.example.org; in this case, you have to enter in the "Host Name" field the following string: "myhostname1.example.org -a myhostname2.example.org -a myhostname3.example.org". (Note: no "-a" for the first host name.)

Custom (URL Updates)

With url updates, the client program usually submits a request using the hypertext transport protocal (HTTP) to a DDNS Server. The request may contain your requested hostname (your dynamic domain name) and/or your IP address. The server then asks for the username and password. The client program returns the information to authorize itself, and the update is completed with the server request response to verify the result.

When your DDNS Service provider uses URL updates, you need to know the url which the client program requests. An example of such a url is:

http://example.com/dyndns/update?hostname=hostname.example.org&ip=1.2.3.4

The URL is divided into parts, the parts should be simple to divide.

Protocol Usually appears first and is followed by "://"
Location Usually after protocol, this can be an IP address or a domain name
Port (optional) Sometimes appears after location, only appears after a colon.
URI The last part of the URL, which can be subdivided. It normally appears after the location and port.

The URI can be subdivided even futher. Most of the URI is optional.

URI Location Everything before the "?" or "#" ("?" first).
URI Parameters Everything after the "?" and before the "#". There can be many parameters. Many times, as in the above example is it specified in the "name=value" form. And commonly when more than one value needs to be specified, it is divided with "&" so "name1=value1&name2=value2&name3=value3" can be used to specify three parameters.
URI Link Everything after the "#", used to specify a specific point in a page.

The example request above is:

Protocol http
Location example.com
Port Not specified
URI /dyndns/update?hostname=hostname.example.org
URI Location /dyndns/update
URI Paramater "hostname" hostname.example.org

To confirm that you have the correct URL and can manually update your IP by using your web browser. When prompted, input your registered username and password. If you aren't registered, register one and setup (add) your dynamic domain name first. Once you have the information, you should be able to set it up using DD-WRT.

  1. Login to the Web GUI, Set DDNS under "Setup" to "custom"
  2. If the URL paramaters have "hostname" use "dyndns@dyndns.org" for DNS System. Otherwise use "custom@http_svr_basic_auth"
  3. Enter "Username" and "Password" with your registered username and password of your DDNS service provider.
  4. Fill in your hostname in "Host Name"
  5. Complete options in "Additional DDNS Options" textarea.
  6. Save Changes and Reboot Router

Additional DDNS Options

For the custom DDNS to work properly we must specify options so that the program knows what to do.

  • Specify the Server Name option, this is Location and perhaps the port (if specified) of the URL.
  • Specify Server URL Option. If you used the "dyndns@dyndns.org" as "DNS System" you need to specify the Server URL option as just the URI Location; otherwise you need to specify the entire URI.

Using the example above, the Additional DDNS Options should be:

" --dyndns_server_name example.com --dyndns_server_url /dyndns/update"

If this isn't working, try pinging checkip.dyndns.org. You may have to use the "ip_server_name" option if you are unable to recieve a response. The IP address option is used to specify an alternate source to get your IP. Many websites have options to view your IP Address. For the update to work properly, the IP Address check must be be done on the server side (no javascript/vbscript) and your ip address must be the first address on the page. You may need to confirm this by using "View Source" in your browser.

Example:

http://www.dnsstuff.com/tools/my-ip-address.ch

Dividing this URL is similar to dividing the one above:

Protocol http
Location www.dnsstuff.com
Port Not specified
URI /tools/my-ip-address.ch
URI Location /tools/my-ip-address.ch

The "ip_server_name" option uses the Location and the URI. If there is not a URI, use "/"

The "ip_server_name" string using the server above should be:

"--ip_server_name www.dnsstuff.com /tools/my-ip-address.ch"

Note the space beteen the Location and URI.

If you have multiple dyndns domains under the same account and need to update them together, you can add one or more "-a" options to do so. ie, "-a SECOND_HOSTNAME.example.com". This only works if the domains are under the same provider and account.

So, finally, the additional options should be complete and will work in general cases.

Examples

dnspark.com

The URL listed below did not work for me, followed the developers information at dnspark and the proper URL seems to be:

 /api/dynamic/update.php?mx=ON&mxpri=5&hostname= 

All else below seems correct.

dnspark.com
This configuration has worked for me.
DDNS Service: Custom
DYNDNS Server: www.dnspark.net
Username: your ddns' username
Password: your ddns' password
Host Name: your fqdn ex: www.dd-wrt.com
URL: /visitors/update.html?mx=ON&mxpri=5&hostname=
Additional DDNS Options: --verbose 5

I used the "Additional Option" to verify that it is working, It gives a result of "OK" if it works. Warning the log will be quite lengthly if you use --verbose 5, it is not recommended after it is functional.

Example/Edited log below for a successful update.

Tue Sep 16 00:00:00 2008: INADYN: Started 'INADYN Advanced version 1.96-ADV' - dynamic DNS updater. Tue Sep 16 00:00:00 2008: The request for IP server: GET http://checkip.dyndns.org/ HTTP/1.0


Tue Sep 16 00:00:00 2008: DYNDNS: IP server response: HTTP/1.1 200 OK Content-Type: text/html Server: DynDNS-CheckIP/1.0 Connection: close Cache-Control: no-cache Pragma: no-cache Content-Length: 106

Current IP Address: 192.168.1.1

Tue Sep 16 00:00:00 2008: W: DYNDNS: My IP address: 192.168.1.1 Tue Sep 16 00:00:00 2008: I:INADYN: IP address for alias 'www.dd-wrt.com' needs update to '192.168.1.1' Tue Sep 16 00:00:00 2008: DYNDNS my Request: GET /visitors/update.html?mx=ON&mxpri=5&hostname=www.dd-wrt.com HTTP/1.0 Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxx Host: www.dnspark.com User-Agent: inadyn advanced/1.96-ADV software@stevehorbachuk.com


Tue Sep 16 00:00:00 2008: I:INADYN: Alias 'www.dd-wrt.com' to IP '192.168.1.1' updated successfully. Tue Sep 16 00:00:00 2008: W:INADYN: DYNDNS Server response: HTTP/1.0 200 OK Connection: close Expires: Wed, 17 Sep 2008 00:00:00 GMT Expires: Thu, 19 Nov 1981 00:00:00 GMT Cache-Control: max-age=86400 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 X-Powered-By: PHP/5.2.6 Set-Cookie: DNSPARKSESSID=xxxxxxxxxxxxxxxxxxxxxxxx; path=/; secure Pragma: no-cache Content-type: text/html Date: Tue, 16 Sep 2008 00:00:00 GMT Server: lighttpd/1.4.18

ok

3222.org

Example option for 3322.org (a chinese dyndns provider)

Username: USERNAME Password: PASSWORD Registered Dynamic Domain Name: SAMPLEHOSTNAME.3322.org

3322.org Updating Methods typical url: http://www.3322.org/dyndns/update?system=dyndns&hostname=SAMPLEHOSTNAME.3322.org

[1]

option string, using a chinese ip_server

using dyndns@dyndns.org " --dyndns_server_name www.3322.org --dyndns_server_url /dyndns/update? --ip_server_name www.bliao.com:2000 /ip.phtml "

using custom@http_svr_basic_auth: " --dyndns_server_name www.3322.org --dyndns_server_url /dyndns/update?hostname= --ip_server_name www.bliao.com:2000 /ip.phtml "

No-IP

No-IP a leading DNS provider including free DDNS and fully managed DNS service they also offer ICANN accredited domain registration and email services.

DDNS Service Custom
DYNDNS Server dynupdate.no-ip.com
User name 'Your No-IP username/email'
Password 'Your No-IP password'
Hostname 'Your No-IP hostname (comma separated for multiple hosts)'
URL /nic/update?hostname=
Additional DDNS Options --ip_server_name ip1.dynupdate.no-ip.com:8245 /

freedns.afraid.org

Go to http://freedns.afraid.org/dynamic/ and login with your normal username and password for the freedns service. Click Direct URL on the domain you would like to be set to your WAN IP address. Copy everything from the right of the ? in the address bar.

Router Settings:

DDNS Service: freedns.afraid.org

User Name: USERNAME

Password: PASSWORD

Host Name: yourdomain.com,What_You_Copied_Before

Force Update Interval 10


(Note: Since afraid.org doesn't require a username and password when doing a "wget-style" update, you can also just do the following to keep from exposing your username and password:

User Name: guest

Password: guest

Note2: I've had problems where the end of the hash value was corrupted/cutoff in the text field. Double-check it! If there is any doubt as to what hash value is actually being used, check the contents of the /tmp/inadyn.conf file against your dynamic update URL from afraid.org.)

DNS-O-Matic

DNS-O-Matic provides you a free and easy 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.
DNS-O-Matic with dd-wrt
DNS-O-Matic with dd-wrt

More info can be found in the forums. Using DNS-O-Matic is an easy way to update your favorite dynamic dns service and OpenDNS (which currently does not work with dd-wrt's built in inadyn).


DDNS Service: Custom
DYNDNS Server: updates.dnsomatic.com
User Name: your dns-o-matic username
Password: your dns-o-matic password
Host Name: all.dnsomatic.com
URL: /nic/update?

Additional info can be found in the OpenDNS article.

DynDNS

Adapted from Sme pesky little bugs in dd-wrt on my WRT350N

Note that as of v23, using DDNS in DD-WRT will not allow updates to the DynDNS server using the pre-set DynDNS settings. You must set settings to Custom, and following all instructions below.

The below is my setting for dynamic DDNS using dyndns.org

  • substitute your account setting for those in quotes
DDNS Service Custom
DYNDNS Server members.dyndns.org
User name 'Your DynDNS username'
Password 'Your DynDNS password'
Hostname 'Your DynDNS hostname'
URL /nic/update?
Additional DDNS Options --dyndns_system dyndns@dyndns.org --ip_server_name checkip.dyndns.org:8245 /

If static DNS is used, use statdns@dyndns.org instead of dyndns@dyndns.org.


EveryDNS

EveryDNS is a basic free dynamic DNS provider.

DDNS Service: Custom
DYNDNS Server: dyn.everydns.net
Username: 'Your EveryDNS Username'
Password: 'Your EveryDNS Password'
Host Name: 'Your Domain Name'
URL: /index.php?ver=0.1&domain=

Edit DNS

EditDNS

DDNS Service: Custom
DYNDNS Server: dyndns.editdns.net
Username: 'Your Email'
Password: 'Your Password' (optional?)
Host Name: 'Your Domain Name'
URL: /api/dynLinux.php?p=<PASSWORD>&r=

NameCheap

NameCheap is a domain registrar that includes free dynamic dns with the host registration. Under $10/year. NameCheap doesn't use normal http auth for updating, so you have to include your domain and password in the URL. Anything between brackets should be changed to your appropriate information. Do not put anything after the &host= in the URL option!

DDNS Service: Custom
DYNDNS Server: dynamicdns.park-your-domain.com
Username: (Any jibberish can go here.)
Password: [Your NameCheap-defined Dynamic DNS password]
Host Name: [Your subdomain ('www' for the standard, or '@' for no subdomain)]
URL: /update?domain=[your domain]&password=[your password]&host=


Note: If you would like to update the IP address for more than one subdomain, separate each subdomain in the Host Name box with an '-a' argument. For instance:

Host Name: www -a webmail -a waycoolstuff

would cause www.[your domain], webmail.[your domain], and waycoolstuff.[your domain] to be updated to the same IP address.

Updated Dec 1, 2009, after the instructions provided at electronox.net (see link below) worked. Dmcg 22:30, 1 December 2009 (CET)

(Note: I think these instructions may be old. It doesn't cost anything now. I registered my domain at godaddy and was able to change the nameservers to those from namecheap. Also, for ddns, try using your domain name in the username field and the password generated by namecheap (specifically for ddns -- *not* your login password!) in the password field. And it doesn't seem to need the password in the url as part of the get request (which is kind of stupid, sending it in the clear...). This worked for me. see http://www.electronox.net/blog/how-to/namecheap-ddns-and-ddwrt --wikiterra Aug 8, 2009)

DNSexit

DNSexit is a domain registrar that provides free to top level domains for both business and internet users.

DDNS Service: Custom
DYNDNS Server: www.dnsexit.com
Username: BOGUS
Password: BOGUS
Host Name: 'Your Domain Name'
URL: /RemoteUpdate.sv?login=USERNAME&password=PASSWORD&host=


CHANGEIP.COM

The information below is how to configure your router to update www.ChangeIP.com dynamic dns hostnames:

  • substitute your account setting for those in quotes
DDNS Service Custom
DYNDNS Server nic.changeip.com
User name 'Your ChangeIP.com username'
Password 'Your ChangeIP.com password'
Hostname 'Your DynDNS hostname' or '*1' for Group #1
URL /nic/update?system=dyndns&hostname=
Additional DDNS Options --ip_server_name ip.changeip.com /

Regfish

Regfish is a domain registrar that provides dyndns updates.

DDNS Service: Custom
DYNDNS Server: dyndns.regfish.de
Username: something
Password: something
Host Name: mydomain.de
URL: ?token=DynDNS_Kennwort&fqdn=mydomain.de.&thisipv4=1&

Note: The domain name in 'fqdn=' must end with a period, and the whole URL string must end with an ampersand.

Give UP?

I gave up on trying to setup my freedns.afraid.org setup and just set a cron script at startup to use freedns' wget method of updating my dns every 5 minutes on the router. If this does not work for you, some variation on this theme might:

echo '*/5 * * * * root /usr/bin/wget http://freedns.afraid.org/dynamic/index.php?action=script&data_id=XXXXXX -o - >/dev/null 2>&1' >> /tmp/crontab

NOTE: In the above, the XXXXXX is an id number provided by freedns.afraid.org

Note2: This shouldn't be necessary and causes more traffic than is needed. Please read my entry in the afraid.org section above. It does work.

Debugging your configuration

Internaly, DD-WRT uses inadyn and creates in the directory /tmp/ddns a configuration file from your settings in the web form. To check whether the expected configuration file is created from your settings in the web form, you can inspect this file as follows:

  • ssh or telnet to the router
  • navigate to /tmp/ddns: cd /tmp/ddns
  • inspect file inadyn.conf: cat /tmp/ddns/inadyn.conf
  • the inadyn cache file in DD-WRT is located /tmp/ddns/inadyn_ip.cache

If you are not familiar with the format of the inadyn.conf file, you can just call /usr/sbin/inadyn from the command line and the allowed parameters are shown.

Put "--verbose 5" in the additional ddns options to get some helpful information.

See also