pydnsup - DNS dynamic updates from router info

The most current version is 1.0, released 2009-10-29.


The motivation to write that little piece of software was to

  • run my own private dynamic DNS service with my own domain in a secure (TSIG backed) way
  • get the external IP address from my DSL-router per UPnP and not be dependant on some external services

So, pydnsup implements the client side. It uses a TSIG key for DNS updates and for UPnP the specification from the PDF WANIPConnection :1 Service Template Version 1.01 kindly provided by the UPnP Forumâ„ , to query the ConnectionStatus and - if connected - request the ExternalIpAdress from your local DSL/broadband router.


  • standard python installation
  • module dnspython


1.0 - 2009-10-29
initial release


The software is licensed under a BSD style license. See license.txt.



Markus Stumpf <>

Commandline Options

-c configfile
specify an alternate config file
debug; prints some info for trouble shooting
do not add/modify but delete all record for the host. This is useful before you shutdown your host or turn off the DSL router. This way no stale information is kept.
-h | --help
a brief overview of all commandline options
-i IPadress
specify an IP address to use for DNS update; skips requesting the IP address from the router
no DNS update; just request the IP from the router
verbose; basically just outputs the IP address. If you want more output try -d for debug.

Configuration Settings

All of the below fields are mandatory in the config file.

this is the name that was used, when creating the key.
the base64 encoded string for the Key: line, that can be found in the .private file that was created when the key was created.
this is the name of the (sub-)domain for which the update should happen.
this is the name of the host within domain for which the update should happen.
Time To Live. How long the record should be cached by DNS caches. A value of 60-300 (seconds) is reasonable
True or False. If true a TXT record will be added along with the A record containing a timestamp, when the record was added/updated. descriptive text "2009-10-29" "16:03:01" has address
time in seconds to wait for the DNS update to signal a status. After that the update is treated as failed and a error message is issued.
the ip address of the DSL/broadband router.
the port to use for the UPnP request on the router (see also table below)
the local URI to use for the UPnP request on the router (see also table below)

To query an UPnP compatible router one has to know how to access the information. Port numbers and Request-URIs differ from vendor to vendor and while they can be detected with UPnP walkers I have started a list for ease of configuration.

ManufacturerProductPortHTTP Request
AVMFRITZ!Box Fon WLAN 717049000/upnp/control/WANCommonIFC1

Valid HTML 4.01 Transitional Valid CSS! BY- CC-3.0 Copyright © 2009 Markus 'Maex' Stumpf
created: 2009-10-25 17:52:29 GMT+1
last modified: 2009-10-29 17:03:58 GMT+1