Pages

Tuesday, 29 April 2014

Update your Domain Name (DNS) with a Dynamic IP and Amazon Route 53

Note: works also on a QNAP NAS

  • Install Python and pip (for QNAP you can find a how-to here).
  • Install the required libraries
    $ curl -o boto-2.27.0.tar.gz https://pypi.python.org/packages/source/b/boto/boto-2.27.0.tar.gz#md5=47a4d81554380b21d85005f91d12a585 -k
    
    $ pip install boto-2.27.0.tar.gz
    
    $ curl -o dnspython.zip  https://pypi.python.org/packages/source/d/dnspython/dnspython-1.11.1.zip#md5=5829130ed557d6f2e1c3ca9ed01d337a -k
    
    $ pip install dnspython.zip
    
  • Configure boto
    $ touch /etc/boto.cfg
    $ vim /etc/boto.cfg
    

    Add the following lines to boto.cfg:

    [Credentials]
    aws_access_key_id = <your_access_key_here>
    aws_secret_access_key = <your_secret_key_here>
    

    Note: you can find a cheatsheet on how to use vim here.

  • Install the script to update your DNS. The script is also available on Github here.
    $ cd /share/MD0_DATA]
    $ mkdir scripts
    $ cd scripts        
    
    $ curl -o dyndns_route53.py  https://gist.githubusercontent.com/glnds/11352999/raw/7958f754f4422ca09a8e338f231101cd845a31e3/dyndns_route53.py -k
    
  • Configure the script
    $ vim dyndns_route53.py
    
    • Change the following lines (more info about Amazon Hosted Zones is available here):
      # Settings, Change me!
      HOSTED_ZONE = 'ZXQU10000001'
      DOMAIN_NAME = 'home.mydomain.com'
      
    • Change the file permissions:
      $ chmod +x dyndns_route53.py
      
    • Test the script:
      $ ./dyndns_route53.py   
      
  • Run your update script every 5 minutes

    $ vim /etc/config/crontab
    
    • Add the following line:

      */5 * * * * /share/MD0_DATA/scripts/dyndns_route53.py
      
    • Restart cron and reboot

      $ /etc/init.d/crond.sh restart
      $ reboot
      

Note: there seems to be a script available on the QNAP NAS just to retrieve your WAN ip, the script is located on your NAS under /etc/init.d/get_external_ip.sh.