/mkddns

DynamicDNS Server

Primary LanguageRuby

README

Initial setup

  • Run sh -x ./bin/setup-ddns.sh ddns.example.com
  • Some files used by bind9 :
    config/named/DOMAIN.key.conf
    Included from named.conf.DOMAIN. When you move this file, edit named.conf.DOMAIN too.
    config/named/DOMAIN.zone
    Copy to /var/cache/bind/DOMAIN.zone as an initial zone file.
    config/named/name.conf.DOMAIN
    Include from your name.conf.

Permissions

  • Client side files. These files used by nsupdate command.
    config/named/KDOMAIN.*.{key,private}
    Readable from your ddns account only. (client’s secret key)
    config/named/DOMAIN.key
    Symlink to KDOMAIN.*.key. Symlink can be world readable.
  • Server side files. You can remove these files from config/named after setup bind.
    config/named/DOMAIN.key.conf
    Readable from bind only. (server’s secret key)
    config/named/DOMAIN.zone
    An example initial zone file. Set permissions as normal zone file. You can remove after copy to /var/cache/bind/DOMAIN.zone.
    config/named/named.conf.DOMAIN
    An example named.conf file. Set permissions as normal named.conf file.

Run test

  • Run ruby test/test_plain_db.rb -v.
  • Run ruby test/test_ddns.rb -v when domain is ‘ddns.example.com’.
  • Run bundle install
  • Run ruby test/test_app.rb -v when domain is ‘ddns.example.com’.

Update via ssh

  • Add ssh public key to config/hosts/FQDN/some.pub (e.g. config/hosts/test.ddns.example.com/id_rsa.pub)
  • Run ruby bin/update-sshkeys.rb
  • Copy or merge .ssh/authorized_keys to your ddns account or set this directory as ddns account’s home directory.
  • Run ssh -T ddns@your.ddns.server.example.com from ssh client machine. (-T option is required by no-pty)