dyndns

Check-in [8e43c0e365]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Initial README for the project
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | master | trunk
Files: files | file ages | folders
SHA3-256:8e43c0e365e6c327b2906df7ea6b5a1012d66232a7d8a50d47048c485835d909
User & Date: ajv-899-334-8894@vsta.org 2017-05-12 16:19:23
Context
2017-05-12
16:19
Initial bringup completed check-in: b715809753 user: ajv-899-334-8894@vsta.org tags: master, trunk
16:19
Initial README for the project check-in: 8e43c0e365 user: ajv-899-334-8894@vsta.org tags: master, trunk
2017-05-11
17:07
Initial commit, DNS server framework check-in: e2a053c2e7 user: ajv-899-334-8894@vsta.org tags: master, trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Added README.md.



























































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
This is a Dynamic DNS setup, appropriate for a small/personal solution.

It uses the Python library "dnslib", a copy of which is in a directory
of that name.

The server is a Python script which listens to two UDP ports: one for
dynamic DNS updates, one as a DNS server.

The client is also a Python script; it periodically sends a UDP packet
(which is cryptographically signed) to the server.  The server uses the
packet's source as the current IP address, and if it has changed (with
the update from a source which has correctly signed this update), notes
the new IP address.

The other server port is a simple DNS server.  It is intended to be used
as a sub-zone of your main domain, and answers A requests with the
current IP address of any registered host.  In your main zone you want
to define both the serving host (it requires its own IP address; NS
records do not specify a port, alas):

$ORIGIN example.com.
ns3	IN	A	a.b.c.d

and then you need to delegate your dynamic DNS sub-domain:

dyn	IN	NS	ns3.example.com.

Now the host at a.b.c.d receives DNS questions about hosts under
dyn.example.com ("joe.dyn.example.com", "home.dyn.example.com", etc.).

Hosts are managed by a simple file mapping host name to pre-shared key.
Nonces are used, but are not saved on disk; the security here is intended
to be enough to deflect casual vandalism, not to hold off a nation-state.
Similarly, host state is not saved to disk; if the host is not sending an
update, presumably it's offline, so why bother giving its old IP address?

The hosts supported are tabulated in etc/hosts, with a format:
<host> <pass>

Continuing example.com above, the line:
joe xyz

would let the client update joe.dyn.example.com if it knows the
pre-shared key "xyz".