]> www.wagner.pp.ru Git - oss/dyngo.git/blob - README.md
Fixed handling of situation where address for some network is not found
[oss/dyngo.git] / README.md
1 DYNGO
2 =====
3
4 I like when I can log into my notebook via ssh using some easily
5 remembered name. 
6
7 But it is not always a case in the world of NATs and VPNs.
8
9 If machine always have public IP address, than using some dynamic DNS
10 service may help (short of necessity to use full domain name. But 
11 ${HOME}/.ssh/config may help). But what if you log into your office
12 workstation via corporate VPN, and want ssh back home?
13
14 If you have enough power to run (or persuade system administrator to
15 run) dyndns service in your office network, dyndns can help even there.
16
17 But your setup need to know different dyndns servers depending on IP
18 address.
19
20 So, I wrote  DYNGO is dynamic DNS client which can handle lots of
21 dynamic DNS servers simultaneously. It reads config file, which
22 specifies which network ranges correspond to which server, and
23 then runs as a daemon, periodically polling IP addresses of all
24 interfaces of the machine. If it finds change, it makes http(s) request
25 to specified URL.
26
27 See [manual page](dyngo.md) for more info.
28
29 PRROTOCOL
30 =========
31
32 **dyngo** uses protocol compatible with dyndns.org, as described 
33 pn [help.dyn.com](https://help.dyn.com/remote-access-api/perform-update/
34 )
35 As different dynamic DNS servers use different path components of URL,
36 you should specify URL with path component (up to question mark) in 
37 the *server* parameter of configuraton section.
38
39 INSTALLATION
40 ============
41
42 **dyngo** is simple script which doesn't require anything but
43 python3 with standard library and **ip** utility from iproute (or
44 iproute2 on Debian) package, which presents on every modern Linux
45 system.
46
47 I've even preferred to use
48 [urllib](https://docs.python.org/3/library/urllib.request.html#module-urllib.request)
49 to [requests](http://docs.python-requests.org/) to eliminate extra
50 external dependency.
51
52 So, you can just drop **dyngo** somewhere in your filesystem, say in 
53 **/usr/local/sbin** and put config into */etc* But **dyngo** should run
54 as a service, so you might want to use provided service file.
55
56 **dyngo** should run as unprivileged user. But its configuration file
57 should, readable for this user, contains somewhat sensitive information
58 —  your dyndns passwords. So, don't use common account many untrusted
59 code run as such as **nobody** or **www-data**. Better to create special
60 user dyngo.
61
62 There should be writable directory, writable for this user for
63 persistent state database. By default it is /var/lib/dyngo.
64
65