All Projects → felix → tinydnsdyn

felix / tinydnsdyn

Licence: other
[mirror] Dynamic DNS for djbdns or tinydns

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to tinydnsdyn

dynamic-cloud-dns
Dynamic DNS with Google Cloud Functions
Stars: ✭ 30 (+66.67%)
Mutual labels:  dynamic-dns
DynamicDNS
基于DNSPod构建的DDNS软件
Stars: ✭ 21 (+16.67%)
Mutual labels:  dynamic-dns
digitalocean-dyndns
Dynamic DNS using DigitalOcean's DNS Services
Stars: ✭ 64 (+255.56%)
Mutual labels:  dynamic-dns
Trust Dns
A Rust based DNS client, server, and resolver
Stars: ✭ 2,155 (+11872.22%)
Mutual labels:  dynamic-dns
docker-ddns-cloudflare
Cloudflare DDNS Script
Stars: ✭ 21 (+16.67%)
Mutual labels:  dynamic-dns
route53-dynamic-dns
Update AWS Route53 hosted zone with current public IP address. Alternative to Dynamic DNS services such as Dyn, No-IP, etc
Stars: ✭ 29 (+61.11%)
Mutual labels:  dynamic-dns
ovh-dynhost
A command line script to update a OVH DynHost with your current public ip. (This repo is a mirror. Official one: https://gitlab.com/rubendibattista/ovh-dynhost)
Stars: ✭ 12 (-33.33%)
Mutual labels:  dynamic-dns
ddns
Simple restful dynamic DNS service
Stars: ✭ 25 (+38.89%)
Mutual labels:  dynamic-dns
python-dyndnsc
dynamic dns (dyndns) update client with support for multiple protocols
Stars: ✭ 36 (+100%)
Mutual labels:  dynamic-dns
python-ddns
A self-hosted dynamic DNS service using BIND9 and python.
Stars: ✭ 26 (+44.44%)
Mutual labels:  dynamic-dns
DnsTube
Access your computer from anywhere. DnsTube is a Windows .NET dynamic DNS client for Cloudflare.
Stars: ✭ 137 (+661.11%)
Mutual labels:  dynamic-dns
Vultr-Dynamic-DNS
Dynamically update IP addresses in Vultr DNS without services like No-IP
Stars: ✭ 18 (+0%)
Mutual labels:  dynamic-dns
dynamic-dns-netcup-api
A simple dynamic DNS client written in PHP for use with the netcup DNS API.
Stars: ✭ 127 (+605.56%)
Mutual labels:  dynamic-dns
bind-to-tinydns
Convert zone files from the BIND DNS server into configs for djbdns's tinydns
Stars: ✭ 18 (+0%)
Mutual labels:  tinydns

TinyDNSDyn

This is a basic dynamic server for the djbdns DNS server 'tinydns' by Dan Bernstein. It enables a client to update its IP address via a simple HTTP based API.

It should run on any Linux or BSD with Python installed.

Requirements

  • Administrative access to a server running tinydns and hence daemontools or similar (such as runit in Void linux).
  • Administrative access to a *nix box on you local network.
  • Python (>2.7.9) installed on both client and server.
  • An open port on the server's firewall.

Installation

Server

  1. Copy script and all files onto your server to the daemontools service directory (i.e. /etc/tinydnsdyn/)

  2. The supplied 'run' script is tailored for debian/ubuntu and may need to be changed.

  3. You can added dynamic DNS entries to your main data file or alternatively use a seperate file for dynamic entries. An existing entry in the tinydns data file should already exist. This script will NOT add one. Only those hosts listed with prefixes '+' and '=' are able to update their entries.

    For example:

     +groucho.example.com:192.168.0.2:3360
     +groucho.example.com:192.168.0.2
     =groucho.example.com:192.168.0.2:60
     +*.groucho.example.com:192.168.0.2:60
     +*.groucho.example.com:192.168.0.2
    

    will all get updated if the host groucho.example.com does a request.

  4. Create a password file. This is of the format created by Apache's htpasswd and consists of one user per line in the following format:

     <username>:<crypted hash>:<optional list of domains>
    
  5. The script will run 'make' in the data directory. This enables you to concatenate your data files and whatever else before they are compiled. For instance, you may need to combine all your primary and seconary zones and then add the dynamic hosts before compiling.

    An example Makefile is included with some ideas.

  6. Start the service by symlinking this directory into your svscan directory (i.e. "ln $(pwd) /etc/service/" ).

Client

The service operates over HTTP and should be reasonably close to the service operated by DynDns.com having the following request format:

http://username:[email protected]/?hostname=yourhostname&myip=optionaladdress

The only required parameter is the hostname you wish to change. This can be a comma separated list of hostnames to update. The IP address will be determined automatically if the 'myip' parameter is missing.

The response codes are taken from here (not all of them):

http://www.dyndns.com/developers/specs/return.html

The Python code is basic and inefficient but it should work. I take no responsibility for anything that may happen to any of your machines. That said, please let me know if there are any issues.

TODO

  • Better sanity checking.
  • Multithread the server. Find a way to gracefully handle the data file.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].