ddnsupdate 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/HISTORY +3 -0
- data/README.md +160 -1
- metadata +38 -41
data/HISTORY
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
DDNS Update History
|
2
2
|
===================
|
3
3
|
|
4
|
+
Version 0.1.6 (2011-09-09)
|
5
|
+
* README update
|
6
|
+
* gem dependencies updated
|
4
7
|
Version 0.1.5 (2011-09-08)
|
5
8
|
* Some DNS don't answer to SOA requests for hosts/subdomains (AEX I'm looking at you!) so we try domains recursively
|
6
9
|
Version 0.1.1 (2011-09-08)
|
data/README.md
CHANGED
@@ -1 +1,160 @@
|
|
1
|
-
|
1
|
+
DDNSUpdate
|
2
|
+
==========
|
3
|
+
|
4
|
+
DDNSUpdate is a simple wrapper around nsupdate and dig to make updating
|
5
|
+
a dynamic dns host easier. Right now, options are quite limited (single
|
6
|
+
host with optionnal wildcard) but it may change over time.
|
7
|
+
|
8
|
+
**Author**: [Hugues Lismonde](mailto:ryan@wonko.com)
|
9
|
+
|
10
|
+
**Version**: 0.1.6 (2011-09-09)
|
11
|
+
|
12
|
+
**Copyright**: Copyright (c) 2011 Hugues Lismonde. All rights reserved.
|
13
|
+
|
14
|
+
**License**: WTFPL 2.0 (http://sam.zoy.org/wtfpl/)
|
15
|
+
|
16
|
+
**Website**: http://github.com/epicagency/ddnsupdate/
|
17
|
+
|
18
|
+
|
19
|
+
Installation
|
20
|
+
------------
|
21
|
+
|
22
|
+
gem install ddnsupdate
|
23
|
+
|
24
|
+
Usage
|
25
|
+
-----
|
26
|
+
|
27
|
+
ddnsupdate <command> [options]
|
28
|
+
|
29
|
+
**Commands:**
|
30
|
+
|
31
|
+
up: Updates host
|
32
|
+
gen: Generate secret key from password
|
33
|
+
ip: Display current local or remote ip
|
34
|
+
|
35
|
+
**Update options:**
|
36
|
+
|
37
|
+
--key, -k <s>: DNS Key
|
38
|
+
--host, -h <s>: Hostname to update
|
39
|
+
--remote, -r: Use remote IP (default: local ip)
|
40
|
+
--wild, -w: Add a wildcard on the same IP (i.e. *.host IN A ip)
|
41
|
+
|
42
|
+
**Generate options:**
|
43
|
+
|
44
|
+
--pass, -p <s>: Password to hash
|
45
|
+
--bind, -b <s>: Output as a bind key definition
|
46
|
+
|
47
|
+
**IP options:**
|
48
|
+
|
49
|
+
--remote, -r: Display remote ip instead of local
|
50
|
+
|
51
|
+
Usage example
|
52
|
+
-------------
|
53
|
+
|
54
|
+
First you have to setup your dns server (see below for an example). Once
|
55
|
+
done, generate a key for your host by running:
|
56
|
+
|
57
|
+
ddnsupdate gen -p <password>
|
58
|
+
|
59
|
+
Append `-b <hostname>` to output to a bind key format if that's what you
|
60
|
+
use.
|
61
|
+
|
62
|
+
After your setup is complete, periodicaly run:
|
63
|
+
|
64
|
+
ddnsupdate up -h <hostname> -k <password>
|
65
|
+
|
66
|
+
This will update <hostname> with your local ip (usefull for testing on a
|
67
|
+
local network). If you want it to be your remote IP simply add `-r`.
|
68
|
+
|
69
|
+
You can also use the `-w` flag to add a wildcard to your host, pointing
|
70
|
+
on the same IP (so host.name and \*.host.name both point on the same
|
71
|
+
address).
|
72
|
+
|
73
|
+
Bind configuration example
|
74
|
+
--------------------------
|
75
|
+
|
76
|
+
For DDNSUpdate to be of any use you need to have a DNS server that
|
77
|
+
accepts dynamic update through `nsupdate`. Here you'll find a quick
|
78
|
+
example how to setup a zone to do just that.
|
79
|
+
|
80
|
+
First you'll have to chose a subdomain to use. While it's possible to
|
81
|
+
set it up on the root domain, I strongly recommand you do not so if you
|
82
|
+
have static hosts defined. nsupdate will mess with your zone file,
|
83
|
+
rendering it unreadable.
|
84
|
+
|
85
|
+
So, let's say we have `example.com` as our root domain and we want to
|
86
|
+
use `dyn.example.com` for our dynamic needs. First thing to do is
|
87
|
+
delegate the subdomain to another server (it doesn't need to be a
|
88
|
+
physically different host).
|
89
|
+
|
90
|
+
In the `example.com` zone file add:
|
91
|
+
|
92
|
+
$ORIGIN dyn.example.com.
|
93
|
+
@ IN NS dns.example.com.
|
94
|
+
|
95
|
+
Where `dns.example.com` is the server that will host the sub zone.
|
96
|
+
|
97
|
+
Then, create a new zone file for the sub zone and add the SOA:
|
98
|
+
|
99
|
+
$ORIGIN .
|
100
|
+
$TTL 300 ; 5 minutes
|
101
|
+
@ IN SOA dns.example.com. info.example.com. (
|
102
|
+
2011090933 ; serial
|
103
|
+
1800 ; refresh (30 minutes)
|
104
|
+
900 ; retry (15 minutes)
|
105
|
+
604800 ; expire (1 week)
|
106
|
+
1800 ; minimum (30 minutes)
|
107
|
+
)
|
108
|
+
NS dns.example.com.
|
109
|
+
|
110
|
+
A TTL of 5 minutes is good but change according to your needs.
|
111
|
+
|
112
|
+
Finally you need to update your `named.conf` to allow ddnsupdate to
|
113
|
+
update the zone.
|
114
|
+
|
115
|
+
zone "dyn.example.com" {
|
116
|
+
type master;
|
117
|
+
file "/var/named/dyn.example.com.conf";
|
118
|
+
update-policy {
|
119
|
+
grant *.dyn.example.com. self dyn.example.com. A;
|
120
|
+
};
|
121
|
+
};
|
122
|
+
|
123
|
+
Add your key files (use `ddnsupdate gen -p <pass> -b <host>` to get one
|
124
|
+
suitable for ddnsupdate):
|
125
|
+
|
126
|
+
key "host1.dyn.example.com." {
|
127
|
+
algorithm hmac-md5;
|
128
|
+
secret "YWNiZDE4ZGI0Y2MyZjg1Y2VkZWY2NTRmY2NjNGE0ZDg=";
|
129
|
+
};
|
130
|
+
|
131
|
+
Reload named and you should be good to go.
|
132
|
+
|
133
|
+
If you want to allow wildcard updates, you will need to add one grant
|
134
|
+
line per host allowed using the following model:
|
135
|
+
|
136
|
+
grant host1.dyn.example.com. subdomain host1.dyn.example.com. A;
|
137
|
+
|
138
|
+
Know issues
|
139
|
+
-----------
|
140
|
+
|
141
|
+
* If ddnsupdate can't find the SOA for the given host it will probably
|
142
|
+
loop infinitely. That will be corrected in the near future.
|
143
|
+
|
144
|
+
License
|
145
|
+
-------
|
146
|
+
<pre>
|
147
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
148
|
+
Version 2, December 2004
|
149
|
+
|
150
|
+
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
|
151
|
+
|
152
|
+
Everyone is permitted to copy and distribute verbatim or modified
|
153
|
+
copies of this license document, and changing it is allowed as long
|
154
|
+
as the name is changed.
|
155
|
+
|
156
|
+
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
|
157
|
+
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
158
|
+
|
159
|
+
0. You just DO WHAT THE FUCK YOU WANT TO.
|
160
|
+
</pre>
|
metadata
CHANGED
@@ -1,68 +1,65 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddnsupdate
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 0
|
7
|
-
- 1
|
8
|
-
- 5
|
9
|
-
version: 0.1.5
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.6
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Hugues Lismonde
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
12
|
+
date: 2011-09-09 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: trollop
|
16
|
+
requirement: &70214331638360 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.13'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70214331638360
|
25
|
+
description: ! 'DDNSUpdate is a wrapper around nsupdate to facilitate dynamic dns
|
26
|
+
updates
|
16
27
|
|
17
|
-
|
18
|
-
default_executable:
|
19
|
-
dependencies: []
|
20
|
-
|
21
|
-
description:
|
28
|
+
'
|
22
29
|
email: hugues@epic.net
|
23
|
-
executables:
|
30
|
+
executables:
|
24
31
|
- ddnsupdate
|
25
32
|
extensions: []
|
26
|
-
|
27
33
|
extra_rdoc_files: []
|
28
|
-
|
29
|
-
files:
|
34
|
+
files:
|
30
35
|
- HISTORY
|
31
36
|
- LICENSE
|
32
37
|
- README.md
|
33
38
|
- bin/ddnsupdate
|
34
39
|
- lib/ddnsupdate.rb
|
35
|
-
has_rdoc: true
|
36
40
|
homepage: https://github.com/epicagency/ddnsupdate/
|
37
41
|
licenses: []
|
38
|
-
|
39
42
|
post_install_message:
|
40
43
|
rdoc_options: []
|
41
|
-
|
42
|
-
require_paths:
|
44
|
+
require_paths:
|
43
45
|
- lib
|
44
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
- 1
|
50
|
-
- 8
|
51
|
-
- 6
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ! '>='
|
50
|
+
- !ruby/object:Gem::Version
|
52
51
|
version: 1.8.6
|
53
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
52
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ! '>='
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
requirements:
|
59
|
+
- nsupdate, dig
|
62
60
|
rubyforge_project:
|
63
|
-
rubygems_version: 1.
|
61
|
+
rubygems_version: 1.8.10
|
64
62
|
signing_key:
|
65
63
|
specification_version: 3
|
66
64
|
summary: Performs dynamic dns updates
|
67
65
|
test_files: []
|
68
|
-
|