Dynamic DNS (DDNS), Optware, and Asus RT-N66U
The built-in DDNS of the RT-N66U works well if you are connected by a standard modem which means that the WAN IP address is your true Internet address.
However, if you are making use of the capability of the RT-N66U to provide fail-over protection for your connection using a USB 3G/4G dongle, or there is another device between the RT-N66U and the Internet which is using NAT, then the built-in client does not work - it warns you that the IP address that it will send is the one for the local subnet and, sure enough, if you enable it then your DDNS provider will complain that you are trying to set an invalid address.
So, what can be done?
The answer is that there is an Optware package for ddns which uses the Internet address, not the WAN port address. This is ddclient, which is the most commonly used DDNS client for Linux. Provided that you are happy using the command line on the router via SSH, you should not be daunted.
Installing Asuswrt-Merlin and Optware on the RT-N66U will be the subject of another knowledgebase article in the future - for the time being a search for "RT-N66U install Optware" using your favourite search engine should yield useful results. It is relatively straightforward but the point we would note is that using an external USB Flash drive for storage may cause grief. We found that that USB Flash was frequently not recognised quickly enough during the boot sequence so Optware failed to work. Whilst it involves taking the lid off the RT-N66U (and thereby voiding the warranty), installing a micro-SD Flash inside the router has yielded totally reliable behaviour from Optware.
Once Optware is up and running, you need to first install ddclient itself:
ipkg install ddclient
This will install ddclient and some of its perl dependencies, but will not work with the default options as these are set use SSL and there is no SSL support for Perl available at this point. Dont panic, all that is needed is:
ipkg install perl-io-socket-ssl
Now, edit /opt/etc/ddclient/ddclient.conf and add the details for your DDNS provider (those for OpenDNS are here).
Check that it now works using:
ddclient -daemon=0 -noquiet -debug
If not, you can send us an e-mail or open a support ticket.
Assuming the test works, all that is needed now is to make ddclient run automatically. Asuswrt-Merlin includes support for a number of scripts via /jffs/scripts and we can use the firewall-start script (for example) to start ddclient. If the script does not already exist, which it won't do unless you have created it already so that you can do something else, create it and give it the following content:
#!/bin/shddclient -daemon 300 -syslog # Start ddclient with a 5 minute update interval
Change the rights on the file to make it executable:
chmod +x /jffs/scripts/firewall-start
Reboot, and DDNS should now be updated as required