You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Your average commercial dynamic DNS provider provides a HTTP interface, so most routers only support that.
99
89
100
90
Somebody could grab your "secret url" with this and perform unintended updates of your record.
101
91
102
92
103
93
#### Encrypted operation
94
+
104
95
Because of the above reason, you _should_ use HTTPS to keep your update url token secret.
105
96
For that, your server needs a X.509 key and certificate.
106
97
You can create those with [let's encrypt](https://letsencrypt.org/), buy those somewhere, or create a self-signed one.
107
98
108
99
##### Self-signed certificate
100
+
109
101
To generate `server.key` and a self-signed `server.crt` valid for 1337 days:
110
102
111
103
```
@@ -125,6 +117,7 @@ Make sure you enter your server's domain name for _Common Name_.
125
117
The client triggers the IP update at the `sftdyn` server, so your DNS then delivers the correct IP.
126
118
127
119
#### Plastic router
120
+
128
121
To use your router as client, select _user-defined provider_, enter http://dyn.sft.mx:8080/yourupdatekey as the update URL, and random stuff as domain name/user name/password. (tested with my AVM Fritz!Box. YMMV). Most routers don't support HTTPS update requests (especially not with custom CA-cert, so you'll probably need HTTP.
129
122
130
123
#### Request with `curl`
@@ -144,6 +137,7 @@ If you use HTTPS with a self-signed certificate, `curl` will refuse to talk to t
144
137
| 200 |_your ip_| Returned if no key is provided |
145
138
146
139
##### systemd timer
140
+
147
141
`systemd` timers are like cronjobs. Use them to periodically run the update query.
148
142
149
143
Create `/etc/systemd/system/sftdynupdate.timer`:
@@ -199,7 +193,7 @@ Cronjobs are the legacy variant to periodically run a task, you could do this li
199
193
200
194
## About
201
195
202
-
I wrote this script after the free `dyndns.org` service was shut down.
196
+
This software was written after the free `dyndns.org` service was shut down.
203
197
After a week or so of using plain `nsupdate`, I was annoyed enough to decide to write this.
204
198
205
199
It is the main goal to stay as minimal as possible; for example, I deliberately didn't implement a way to specify the hostname or IP that you want to update; just a simple secret update key is perfectly good for the intended purpose. If you feel like it, you can make the update key look like a more complex request; every character is allowed. Example: `?host=test.sft.mx&key=90bbd8698198ea76`.
@@ -218,13 +212,17 @@ The conf file is interpreted as python code, so you can do arbitrarily complex s
218
212
Somebody who knows a valid udpate key could semi-effectively DOS your server by spamming update requests from two different IPs. For each request, nsupdate would be launched and your zone file updated.
219
213
220
214
## Development
221
-
IMHO, the project is feature-complete; it has everything that **I** currently want.
222
215
223
-
Features that _might_ be useful, which I _might_ implement if someone asked nicely:
224
-
- Support to run this inside a "real" webserver like nginx or Apache (WSGI?)
225
-
- I'm sure there are more
216
+
IMHO, the project is feature-complete; it has everything that **I** currently need.
217
+
218
+
If you have any requests, ideas, feedback or bug reports,
219
+
are simply filled with pure hatred,
220
+
or just need help getting the damn thing to run,
221
+
join our chatroom and just ask:
222
+
223
+
- IRC: `irc.freenode.net/#sfttech`
224
+
- Matrix: `#SFTtech:matrix.org`
226
225
227
-
If you have any requests, ideas, feedback or bug reports, are simply filled with pure hatred, or just need help getting the damn thing to run, join `irc.freenode.net/#sfttech` (I'm mic_e).
228
226
229
227
If you actually _did_ implement a useful feature, please send a pull request; I'd be happy to merge it.
0 commit comments