Code Monkey home page Code Monkey logo

ddclient's Introduction

DDCLIENT

ddclient is a Perl client used to update dynamic DNS entries for accounts on many dynamic DNS services. It uses curl for internet access.

Alternatives

You might also want to consider using one of the following, if they support your dynamic DNS provider(s): https://github.com/troglobit/inadyn or https://github.com/lopsided98/dnsupdate.

Supported services

Dynamic DNS services currently supported include:

ddclient supports finding your IP address from many cable and DSL broadband routers.

Comments, suggestions and requests: please file an issue at https://github.com/ddclient/ddclient/issues/new

The code was originally written by Paul Burry and is now hosted and maintained through github.com. Please check out https://ddclient.net

REQUIREMENTS

  • An account from a supported dynamic DNS service provider
  • Perl v5.10.1 or later
    • JSON::PP perl library for JSON support
  • Linux, macOS, or any other Unix-ish system
  • An implementation of make (such as GNU Make)
  • If you are installing from a clone of the Git repository, you will also need GNU Autoconf and GNU Automake.

DOWNLOAD

See https://github.com/ddclient/ddclient/releases

INSTALLATION

Distribution Package

Packaging status The easiest way to install ddclient is to install a package offered by your operating system. See the image to the right for a list of distributions with a ddclient package.

Manual Installation

  1. Extract the distribution tarball (.tar.gz file) and cd into the directory:

    tar xvfa ddclient-3.XX.X.tar.gz
    cd ddclient-3.XX.X

    (If you are installing from a clone of the Git repository, you must run ./autogen before continuing to the next step.)

  2. Run the following commands to build and install:

    ./configure \
        --prefix=/usr \
        --sysconfdir=/etc/ddclient \
        --localstatedir=/var
    make
    make VERBOSE=1 check
    sudo make install
  3. Edit /etc/ddclient/ddclient.conf.

systemd

cp sample-etc_systemd.service /etc/systemd/system/ddclient.service

enable automatic startup when booting

systemctl enable ddclient.service

start the first time by hand

systemctl start ddclient.service

Known issues

This is a list for quick referencing of known issues. For further details check out the linked issues and the changelog.

Note that any issues prior to version v3.9.1 will not be listed here. If a fix is committed but not yet part of any tagged release, the notes here will reference the not-yet-released version number.

v3.11.2 - v3.9.1: SSL parameter breaks HTTP-only IP acquisition

The ssl parameter forces all connections to use HTTPS. While technically working as expected, this behavior keeps coming up as a pain point when using HTTP-only IP querying sites such as http://checkip.dyndns.org. For the future (v3.11.3), the behavior is changed to respect http:// in a URL. A separate parameter to disallow all HTTP connections or warn about them may be added later.

Fix: v3.11.3 will use HTTP to connect to URLs starting with http://. See here for more info.

Workaround: Disable the SSL parameter

v3.10.0: Chunked encoding not corretly supported in IO::Socket HTTP code

Using the IO::Socket HTTP code will break in various ways whenever the server responds using HTTP 1.1 chunked encoding. Refer to this issue for more info.

Fix: v3.11.0 - IO::Socket has been deprecated there and curl has been made the standard.

Workaround: Use curl for transfers by either setting -curl in the command line or by adding curl=yes in the config

v3.10.0: Spammed updates to some providers

This issue arises when using the use parameter in the config and using one of these providers:

  • Cloudflare
  • Hetzner
  • Digitalocean
  • Infomaniak

Fix: v3.11.2

Workaround: Use the usev4/usev6 parameters instead of use.

TROUBLESHOOTING

  1. enable debugging and verbose messages: $ ddclient -daemon=0 -debug -verbose -noquiet

  2. Do you need to specify a proxy? If so, just add a proxy=your.isp.proxy to the ddclient.conf file.

  3. Define the IP address of your router with fw=xxx.xxx.xxx.xxx in /etc/ddclient/ddclient.conf and then try $ ddclient -daemon=0 -query to see if the router status web page can be understood.

  4. Need support for another router/firewall? Define the router status page yourself with: fw=url-to-your-router's-status-page fw-skip=any-string-preceding-your-IP-address

    ddclient does something like this to provide builtin support for common routers. For example, the Linksys routers could have been added with:

fw=192.168.1.1/Status.htm
fw-skip=WAN.*?IP Address

OR Send me the output from: $ ddclient -geturl {fw-ip-status-url} [-login login [-password password]] and I'll add it to the next release!

ie. for my fw/router I used: $ ddclient -geturl 192.168.1.254/status.htm

  1. Some broadband routers require the use of a password when ddclient accesses its status page to determine the router's WAN IP address. If this is the case for your router, add
fw-login=your-router-login
fw-password=your-router-password

to the beginning of your ddclient.conf file. Note that some routers use either 'root' or 'admin' as their login while some others accept anything.

USING DDCLIENT WITH ppp

If you are using a ppp connection, you can easily update your DynDNS entry with each connection, with:

## configure pppd to update DynDNS with each connection
cp sample-etc_ppp_ip-up.local /etc/ppp/ip-up.local

Alternatively, you may just configure ddclient to operate as a daemon and monitor your ppp interface.

USING DDCLIENT WITH cron

If you have not configured ddclient to use daemon-mode, you'll need to configure cron to force an update once a month so that the dns entry will not become stale.

## configure cron to force an update twice a month
cp sample-etc_cron.d_ddclient /etc/cron.d/ddclient
vi /etc/cron.d/ddclient

USING DDCLIENT WITH dhcpcd

If you are using dhcpcd-1.3.17 or thereabouts, you can easily update your DynDNS entry automatically every time your lease is obtained or renewed by creating an executable file named: /etc/dhcpc/dhcpcd-{your-interface}.exe ie.: cp sample-etc_dhcpc_dhcpcd-eth0.exe /etc/dhcpc/dhcpcd-{your-interface}.exe

In my case, it is named dhcpcd-eth0.exe and contains the lines:

#!/bin/sh
PATH=/usr/bin:/root/bin:${PATH}
logger -t dhcpcd IP address changed to $1
ddclient -proxy fasthttp.sympatico.ca -wildcard -ip $1 | logger -t ddclient
exit 0

Other DHCP clients may have another method of calling out to programs for updating DNS entries.

Alternatively, you may just configure ddclient to operate as a daemon and monitor your ethernet interface.

USING DDCLIENT WITH dhclient

If you are using the ISC DHCP client (dhclient), you can update your DynDNS entry automatically every time your lease is obtained or renewed by creating an executable file named: /etc/dhclient-exit-hooks ie.: cp sample-etc_dhclient-exit-hooks /etc/dhclient-exit-hooks

Edit /etc/dhclient-exit-hooks to change any options required.

Alternatively, you may just configure ddclient to operate as a daemon and monitor your ethernet interface.

ddclient's People

Contributors

abelbeck avatar awalon avatar cadence-github avatar dancapper avatar davesophoservices avatar dkerr64 avatar drinn avatar droe avatar frogging101 avatar geraldhansen avatar gkranis avatar gottaloveit avatar harry-xue avatar indrajitr avatar jabaz avatar jortkoopmans avatar lenardhess avatar lucaschoeneberg avatar michal-josef-spacek avatar nelsonjr avatar okeeblow avatar rhansen avatar roberthawdon avatar rrthomas avatar supersandro2000 avatar tchebb avatar tduboys avatar tinfoilsubmarine avatar wimpunk avatar zlaski avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ddclient's Issues

Permissions for ddclient.conf and ddclient.cache

I'm still trying to set up ddclient to work on an Ubuntu (18.04) server to work with Cloudflare.

When I run ddclient -daemon=0 -debug -verbose -noquiet, I get the following warnings and errors related to permissions:

WARNING: file /etc/ddclient/ddclient.conf: file /etc/ddclient/ddclient.conf must be accessible only by its owner.
WARNING: file /etc/ddclient/ddclient.conf: file /etc/ddclient/ddclient.conf must be accessible only by its owner.
[...]
FATAL: Cannot create file '/var/cache/ddclient/ddclient.cache'. (Permission denied)

What do the permissions of ddclient.conf need to be to remove this warning?

And how can I fix the fatal permissions error about ddclient.cache?

Thanks!

-ssl flag ignored for dyndns2 (and others) -- http: hard-coded

When using ddclient to update a dnydns2 server, I have "ssl=yes" specified in the /etc/ddclient/ddclient_eth0.conf file. However, the URL it uses appears to be plain-old http://, as evidenced by the debug session (specifying -ssl here too, just 'cause):
sudo ddclient -file /etc/ddclient/ddclient_eth0.conf -ssl -daemon=0 -debug
yields:
DEBUG: url = http://ipv4.nsupdate.info/nic/update?system=dyndns&hostname=[my_subdomain].dnsupdate.info&myip=[x.x.x.x]
I spent the better part of a day reading the code and experimenting, and I noticed line 2727:
my $url = "http://$config{$h}{'server'}$config{$h}{'script'}?system=";
"http://" is hard-coded for dyndns, as it is for several others (while several are hard-coded "https://")

Perhaps I'm missing something. Or is the DEBUG message just a red herring? I've not gone to the trouble of connecting a switch, port mirroring, and sniffing the actual connection to be certain.

Exit code

Hey guys,

The way I have my network setup is mostly in Docker.

I have a Pihole with a dnscrypt upstream.

If DDClient starts up before anything else (which is likely, with it being such a light application), I can experience issues such as "WARNING: cannot connect to checkip.dyndns.com:80 socket: IO::Socket::INET: Bad hostname 'checkip.dyndns.com'"

If when the application saw this error, if we could get some form of exit code which either 1. indicates it to try again x number of times or 2. allowed it to mark the container/application as unhealthy, this would make sure these errors were either really errors, or more likely, an issue with when it initially checked dyndns.

Hope it makes sense!

Thanks

Unable to determine IP address

I'm still trying to get ddclient set up on my Ubuntu server using Cloudflare for DNS.

When I run ddclient -daemon=0 -debug -verbose -noquiet, I get several error messages, including:

WARNING:  found neither ipv4 nor ipv6 address
DEBUG:    get_ip: using ip, ip reports <undefined>
WARNING:  unable to determine IP address

(Other error messages include warnings about permissions for ddclient.conf, a fatal error about failing to create ddclient.cache, and errors with sendmail, but I feel pretty confident that those are separate issues.)

The relevant section of ddclient.conf is:

##
## CloudFlare (www.cloudflare.com)
##
ssl=yes
protocol=cloudflare,
server=www.cloudflare.com,
login=<my Cloudflare login email>
zone=<mydomain.us>,
password=<API token>
<mydomain.us>,

What can I do to resolve these issues so that ddclient can properly identify my IP address?

Thanks.

API Tokens for cloudflare require a prefix "Bearer "

#73 is probably on the same topic.

After some experimenting I managed to get it working with cloudflare by changing

$headers .= "X-Auth-Key: $config{$key}{'password'}\n";

to

$headers .= "Authorization: Bearer $config{$key}{'password'}\n";

... it would need a protocol switch for general use

Edit: X-Auth-Key had to be changed to "Authorization". Although I would think I got it working with X-Auth-Key yesterday. :/

... I tried to add "Bearer" to the configuration file but it results in the actual key being dropped.

Update raspbian/debian apt-get version

Currently, using

sudo apt-get install ddclient

will install a very old ddclient version, and certainly not the latest 3.9.1.

Perhaps update this package over there,
Thanks!

ddserver?

I would love a small update to the README showing where some of us (few) can get an open-sourced DD server software (in which we can use to test the ddclient with).

ddclient behind a NAT gateway.

For some reason, the ddclient's outgoing packets would be modified by NAT POSTROUTING rules so that the packets' source IP address would be changed from the ddclient machine's IP address to the NAT gateway's address.

So, would this affect the domains being maintained by ddclient? Thank you.

ddclient runs as root by default.

The ddclient service runs as root by default. The default cron config also suggest to run the client as root.
$ ps -aux | grep ddclient
root 655098 0.0 0.0 21100 14296 ? S 10:43 0:00 ddclient - sleeping for 300 seconds

The client can also run as a user, provided the files permissions are set accordingly. It should not run as root by default, specially if it is running as a daemon.

ipv4 and ipv6 at the same time?

Greetings.

Maybe it's my setup, but I can't update ipv4 and ipv6 at the same time.

Right now, I'm using if=eth1 for my IPv4 interface and if=sit1 for my IPv6 interface. I can't figure out how to configure a single ddclient.conf file to use different interfaces for different versions.

The problem with this is ... when you update DynDNS's ipv4 address, it clears the ipv6 address. So I'm hoping that if a single ddclient command can manage both, then I won't have that problem.

Thanks.

Criteria to update IP only on home network

Let's say that we want to run the client on a laptop and only update the IP when it detects that it's on the home network. This would require us to specify a criteria for it to update.
Easiest way in my point of view would be to add a criteria= parameter to the config file to any file and use exec to execute that criteria. If exit code is 0, it should update the IP, if it returns anything else, it should skip the update.
This would allow any script to be used to check if you want to update the IP or not. This could be a WIFI network SSID name for example.

Support for inwx with ipv6

Please add support for inwx dyndns service.

https://www.inwx.de/
Update-URL: https://dyndns.inwx.com/nic/update?myip=(ipaddr)&myipv6=(ip6addr)

We support the DynDNS2 protocol via HTTPS.
To update your domain, you must in many cases provide an update URL in your client (e.g. router).
With the additional "myipv6" parameter our DynDNS service is also fully IPv6 capable.

or It would be nice if some one could post a working config since for me errors out every time.
I use this following docker container -> https://hub.docker.com/r/linuxserver/ddclient

WARNING: file /var/cache/ddclient/ddclient.cache, line 3: Invalid Value for keyword 'ip' = ''
WARNING: cannot connect to https:443 socket: Name does not resolve IO::Socket::IP configuration failed
FAILED: updating ddns.byteframe.de: Could not connect to https://dyndns.inwx.com.

daemon=150				# check every 300 seconds
syslog=yes				# log update msgs to syslog

#pid=/var/run/ddclient/ddclient.pid		# record PID in file.
ssl=yes 				# use ssl-support.  Works with

protocol=dyndns2
use=web, web=https://ipv6.nsupdate.info/myip
#use=if, if=br0
#if-skip=Scope:Link
ipv6=yes
server=https://dyndns.inwx.com
login=XXXXXXXXXX
password=XXXXXXXXXXXXX
subdomain.abc.de

Move check for header ok inside geturl()

The header_ok() function is called by many protocols. This should be moved inside geturl() function and the return code from that signal whether the request was successful or not. It adds complexity to require every protocol function to test the headers after returning from geturl.

Require daemonization with a non-zero interval

Command line arguments currently override settings in the config file, so there is no way to pass an argument to ddclient that means "daemonize with an interval of 10m unless the config file wants a different non-zero interval." This makes it difficult to write a robust init script (see the tricky config file parsing in the example init script) or systemd service unit config.

One way around this is to run ddclient with $0 set to something like ddclientd. If $0 ends with the letter d there is special logic that sets -daemon=1m by default. I'm not a fan of this magical behavior because it's not discoverable, it's not documented, users are likely to be confused by the d that appears in ps, and there's no way to change the 1m to something else (other than via the config file).

Can we do better? What do you think about these possibilities:

  • Add special -default-foo=bar flags that act like -foo=bar except they are overridden by the config file. If we did this, the init script could simply pass -default-daemon=10m. We can automatically create these extra flags inside process_args. A daemon=0 line in the config file would thwart -default-daemon, which isn't ideal but probably not a problem in practice.
  • Add a new -require-daemon flag that causes ddclient to error out if the config file (or other flags) does not set daemon to a positive value.
  • Invert the priority: the config file overrides the flags, not the other way around.
  • Other ideas?

Can no longer update cloudflare

Just downloaded the new release and now I am getting this error in my logs and can't update cloudflare.
The previous release was working just fine.

ddclient[2671]: WARNING: file /var/cache/ddclient/ddclient.cache, line 3: Invalid Value for keyword 'ip' = ''

use iproute2 by default, with net-tools as fallback

Hi,
as the title suggest, I think it would be a good time now to switch away from net-tools. this has been deprecated for years in favor of iproute2, and is only still working nowadays because the kernel did not break it... Yet.

I understand you can't change it, as in permanently get rid of this, but perhaps ddclient could start using either net-tools or iproute2 where possible, and not exclusively rely on net-tools.

Document coding style (and perhaps formatting tool options)

It would be nice to document code style such as tabs vs. spaces, indentation level, tightness of parentheses, etc. in a contributor guide.

Perhaps the guide should encourage the use of a code formatter. I used the following perltidy command to help with PR #120:

perltidy -l=0 -conv -ci=4 -ola -ce -nbbc -kis -pt=2 -o=ddclient.new ddclient

Can I update only an AAAA Record in CloudFlare?

I want to make CloudFlare to resolve my dynamic IP address server to only IPv6 address, so I added an AAAA record to DNS setting of CF and ran DDclient, but it said No DNS record ID found.
Then, I add an A record to DNS and ran DDclient, it successed, but updating of the A record was skipped because the server's IPv4 address was local (started with 192.168..)

In my case, the existence of A record is unnecessary, so I would like you to change the program so that A record does not need to exist.

Environment

DDclient 3.9.0, lubuntu 19.04

Remove dead providers

Some of DDNS providers listed are no longer operating. Removing them would clean up the code a bit. These include:

  • Hammernode: site does not resolve
  • ConCont: does not resolve, possibly a typo for dy[n]dns.za.net?
  • DnsPark: site seems broken, a cached search result notes that the domain itself is for sale
  • Loopia: Maybe broke--Site only loads the main page title and times out
  • DTDNS (as the site itself says)

Some other sites listed may no longer be working for other reasons:

  • woima.fi: redirects to a new site, and I can't tell if it offers DDNS because I can't read Finnish.
  • Yandex: redirects to a page offering some kind of mail service.

New version?

There are no new version since more one year, it is possible to have a new version?

Warning about invalid fully qualified hostname on Cloudflare

I've been trying to set ddclient up to update Cloudflare. When I run ddclient -daemon=0 -debug -verbose -noquiet, I get four warnings, two of which are the same:

WARNING: skipping host: <example.com>: 'zone=' is an invalid fully qualified host name.

<example.com> is a stand-in for my actual registered domain.

The Cloudflare section of my ddclient.conf file looks like this:

##
## CloudFlare (www.cloudflare.com)
##
ssl=yes                     \
protocol=cloudflare,        \
server=www.cloudflare.com,  \
login=<my Cloudflare login email>     \
password=<API token>             \
<example.com>,

Is this warning something I should be worried about? How do I resolve it? I'm unfortunately quite clueless when it comes to administrative stuff like this, so I appreciate all the help you can provide.

Thanks!

New configuration concept: "service"

ddclient currently has a notion of "protocol", which is how an IP address is updated. Protocols can set default values for server, etc. For services that have a unique protocol, configuration is usually trivial because users don't need to override the defaults. This creates an incentive to define a new protocol for every service, even if the update function from another protocol can be reused unmodified.

I wonder if it would make sense to introduce "service" as a first-class configuration concept. A service is basically a shorthand for the various settings required for the service.

For example, suppose there's a new dynamic DNS service called "foo". It uses the same protocol used by DynDNS, offers a checkip service at https://ipv4.foo.example.com/checkip, and the update URL is https://foo.example.com/update. In this case, specifying:

service=foo

would be equivalent to specifying:

protocol=dyndns2 \
ssl=true \
server=foo.example.com \
script=/update \
web=https://ipv4.foo.example.com/checkip

The Debian package could take advantage of this for simple setup: Upon installation, Debian would pop up a dialog asking "Which service are you using?" along with a list of all the supported services (plus an "other" option).

Cloudflare - API-Token: Failed - No DNS-record ID found

I tried the new approach a couple of hours, ago and am not able to get if working.
The debug shows:

DEBUG:    url    = https://api.cloudflare.com/client/v4/zones/89de6f41d90716f308a2079776f60fe5/dns_records?type=A&name=\
DEBUG:    server = api.cloudflare.com
CONNECT:  api.cloudflare.com
CONNECTED:  using SSL
SENDING:  GET /client/v4/zones/89de6f41d90716f308a2079776f60fe5/dns_records?type=A&name=\ HTTP/1.0
SENDING:   Host: api.cloudflare.com
SENDING:   User-Agent: ddclient/3.9.1
SENDING:   Connection: close
SENDING:   Content-Type: application/json
SENDING:   Authorization: Bearer nddddddYgVcj5tFexxxxxxxxM0cPeIQJ4eQYYR91

and

RECEIVE:  Server: cloudflare
RECEIVE:  cf-request-id: 0252b697cb0000dcfa4826a200000001
RECEIVE:  
RECEIVE:  {"result":[],"result_info":{"page":1,"per_page":20,"total_pages":0,"count":0,"total_count":0},"success":true,"errors":[],"messages":[]}
FAILED:   updating \: No DNS record ID found.

If I compare the GET-line with the API-Documentation, it seems that the DNS-Record Name (example.com) is missing.

The A-record is defined as xxxxxxxx.com.

Thanks for the tool, and your help!

Originally posted by @Tiemichael in #102 (comment)

Ubuntu PPAs with nightly and stable release packages

Maintaining Ubuntu PPAs of nightly and stable release packages provides some benefits to the project:

  • Users can easily install the latest version to get newer features. This encourages new contributions.
  • Contributors can easily dogfood the latest changes to quickly uncover bugs.
  • New changes will be tested by the PPA users before being widely released via official distribution packages.

I requested access to https://launchpad.net/ddclient so that I can set up "official" PPAs. If I understand correctly, we can set up Launchpad to automatically build new nightly packages and new stable release packages, so the maintenance burden should be low. I'm willing to take this on if nobody objects.

ddclient partialy work with a Netgear 4G router

Good day everyone.

I successful install ddclient and use dyni with the router/WiFi of my neighbour, but I use temporary and I do not have access of the admin panel od the router.

I now switch to my routers. I have a Raspberry with a sixfab 3/4G/Wifi routezr and a netgear 4G router (AC785) : [url=https://www.netgear.fr/home/products/mobile-broadband/hotspots/ac785.aspx]Your text to link here...[/url]

On both router, I can not access ,y Raspberry Zero whihc is connected to the WiFi.
Actually, I need to make working and be able to remote ssh access to my Raspberry Zero which is connected to the netgear AC 785.

The first test, I ran the command (from the Raspberry Zero) : sudo ddclient -daemon=0 -debug -verbose -noquiet, and it return me a successful reply from dynu.

but when I try to access my raspberry with ss [email protected], I got a error regarding the port 22.

What is funny, from my neighbour router it did nothing else than configuring ddclient and it's works. With my netgear 785 router, it never work, even if I tried to redirect the port 22 (port forwarding) on my Raspberry Zero.

I really wonder what I can do to be able to remote access my Raspberry zero with dynu through my netgear Ac 785 4G router.

Many thanks fro your help, if you have any suggestion

Unit test infrastructure

It would be nice if ddclient had some infrastructure to make it easy to write and run unit tests.

Comprehensive IPv6 support

This issue is to help us track everything involved in adding full IPv6 support:

  • Create a design document: #163
  • Add the ability to force IPv4 or IPv6 in geturl: #169
  • Function to extract the first global IPv6 address from the output of ip -6 addr show or ifconfig: #197
  • Function(s) to get IPv4 or IPv6 address from an interface: #266
  • Allow users to define the same host multiple times (with different options)
  • Implement the new configuration settings mentioned in the design document
  • Deprecate the legacy configuration settings
  • Protocol support:
    • inwx.com: #96
    • DynDNS: #75
    • nsupdate
    • noip.com
    • others...
  • Remove deprecated 'wantip' once all protocols have been updated to 'wantipv4'/'wantipv6'.
  • Ideally geturl would implement RFC 8305. Probably the easiest way to do this is to switch to curl.
  • Delete support for the deprecated configuration settings after enough time has elapsed.

Dynamic DNS service "Secure Point at https://www.spdyn.de/"

Good morning, thanks for developing ddclient, it is very useful for many people.
Could you please include Secure Point as DDNS provider "https://www.spdyn.de/", can I collaborate in any way to help include it?
I'm new to GNU / Linux and it may take me longer to get something, but I don't stop.
At this moment I am seeing how to install ddclient v3.9.1 and I am going to create an account in one of the supported DDNS providers.
Thanks in advance!

Create a man page

The output of -help is quite unwieldy. I think it would be good to move the examples to a man page to drastically shrink the amount of help text. The man page would also be a good place to clarify the config file format.

Nginx + DDClient + Cloudflare

Hello All. I haven’t been able to find any help with this elsewhere, so I’m hoping someone here may have some ideas.

A bit about my setup:

  1. Ubuntu 18.04 LTS server
  2. Static ip and DNS set within Network Manager
  3. Running several apps (Jellyfin, Calibre-Web, Sonarr etc)
  4. Nginx fully installed
  5. GoDaddy domain proxied through Cloudflare
  6. DDClient synchronizing ip from server to Cloudflare
  7. Port 80, 443 and 8096 (Jellyfin for testing) allowed in server Firewall and from router to static ip

I’ve installed DDClient and setup the connection between my server and Cloudflare to propagate the proper ip address on the domains I currently have setup (example.com and jellyfin.example.com). This connection seems to be working as when I visit the updated IP address listed on Cloudflare from the browser on the server, it opens the default Nginx landing page. If I use that ip with a port (ex: http://CloudflareIP:8096 for Jellyfin) in a browser on the server, it also opens Jellyfin, but very slowly. These links of course also work with simply localhost or 127.0.0.1 as the url on the server.

However, when attempting to visit the Cloudflare ip on another device, it doesn’t open the default index page nor any of the apps on ports. Also worth mentioning is that visiting http://staticip or http://staticip:port only works when calling the url from a device other than the server. When trying to visit the static ip from the server, it’s unable to connect. And of course, visiting the domain and subdomain listed in Cloudflare (example.com and jellyfin.example.com) don’t pick up the Nginx index page at all, but instead show a Cloudflare page with host error; again confirming that the DDClient/Cloudflare connection is working.

What I’d like to know is how do I make the domains listed on Cloudflare serve externally or in other words, work as they’re supposed to. Additionally, how do I ensure that the speed of the pages served is faster than tested. As mentioned, when visiting http://CloudflareIP:8096 from the server, the page loads but is a bit slow. I assume this is due to bandwidth (which I can deal with), but want to make sure there’s nothing I’ve done to slow this down or anything that I can do to help the speed.

Lastly, the domains hosted with Cloudflare will be the main domain and subdomains (ex: example.com, jellyfin.example.com, calibre.example.com and so on). I don’t know if this has any effect on possible configuration or misconfiguration recommendations, but wanted to include as much information as possible.

Any and all recommendations or possible scenarios are greatly appreciated. Thanks in advance.

Unable to read WAN IP from my Actiontek router

But, it does end up working.. sortof :)

-query output:

use=if, if=enp2s0 address is 192.168.1.9
use=if, if=lo address is 127.0.0.1
use=if, if=virbr0 address is 192.168.122.1
use=if, if=virbr0-nic address is NOT FOUND
use=fw, fw=192.168.1.1/index.cgi address is NOT FOUND
use=web, web=dnspark address is NOT FOUND
use=web, web=dyndns address is ww.xxx.yyy.zzz
use=web, web=loopia address is ww.xxx.yyy.zzz
use=web, web=dynamicdns.park-your-domain.com/getip address is ww.xxx.yyy.zzz

Also tried fw with :443, still no read.
Actual router URL where the IP Address string should be is:
https://192.168.1.1/index.cgi?active%5fpage=9132&active%5fpage%5fstr=page%5fhome%5fact%5fvz&req%5fmode=0&mimic%5fbutton%5ffield=submit%5fbutton%5flogin%5fsubmit%3a+%2e%2e&strip%5fpage%5ftop=0&button%5fvalue=%2e

Do I have to put that whole thing in the fw?

No idea what those other use=web lines are coming from.
Kinda useless for it to get the IP from namecheap, as that's what I'm trying to update!

Is using fw and web redundant? Not clear from the docs or the config comments.

Ddclient gives warning "cannot connect to checkip.dyndns.org"

My ddlclient (3.9.0) recently started kicking out an odd warning message. Site checkip.dyndns.org is definitely available. I rebooted a few times just to be sure. Ideas?

From SYSLOG:
Dec  4 16:53:41 MINIPC ddclient[918]: WARNING:  cannot connect to checkip.dyndns.org:80 socket: IO::Socket::INET: Bad hostname 'checkip.dyndns.org'
Dec  4 16:53:41 MINIPC ddclient[918]: WARNING:  found neither ipv4 nor ipv6 address

From BASH (IP returned IS correct):
16:55 ~ : curl checkip.dyndns.org
<html><head><title>Current IP Check</title></head><body>Current IP Address: xxx.xxx.xxx.xxx</body></html>

Document Perl and module compatibility policy

Currently ddclient only requires Perl 5.8.0 (released 2002) and very few Perl modules. As time goes on, contributors will inevitably open pull requests that add new module dependencies or rely on newer features.

There's a trade-off to make: Limiting ourselves to old modules and old Perl versions means that ddclient can run on more systems, but it makes it harder to add new features, clean up old code, and test compatibility of changes. What is the right cut-off for this project? The cut-off should be documented in a contributor guide to help contributors make decisions.

Here's my first-draft attempt at the policy:

  • ddclient should work with the version of Perl distributed with Debian oldstable (currently Perl 5.24.1) and the oldest supported Ubuntu release (currently Ubuntu 16.04, which uses Perl 5.22.1).
  • Core ddclient functionality should not depend on any modules or module features that are not available in Debian oldstable or the oldest supported Ubuntu release.
  • A new dependency can be added for a new feature as long as the rest of ddclient continues to work well on old systems that do not support the dependency.

Thoughts?

Should mkdir /var/cache/ddclient if non-existent

# ddclient -debug -foreground
DEBUG:    proxy  = 
DEBUG:    url    = http://checkip.dyndns.org/
DEBUG:    server = checkip.dyndns.org
DEBUG:    get_ip: using web, http://checkip.dyndns.org/ reports 197.113.84.132
DEBUG:    
DEBUG:     nic_cloudflare_update -------------------
DEBUG:    proxy  = 
DEBUG:    url    = https://www.cloudflare.com/zones?name=jenniferthames.com
DEBUG:    server = www.cloudflare.com
FATAL:    Cannot create file '/var/cache/ddclient/ddclient.cache'. (No such file or directory)

Creating the directory and running again fixed the problem.

-bash: ddclient: command not found

I'm trying to set up ddclient on a YunoHost server. I cloned the git repository and used the commands at the beginning of the installation guide in order to move and copy files as needed.

When I try to execute ddclient -daemon=0 -debug -verbose -noquiet from the terminal, I now get a bash error message:

-bash: ddclient: command not found

How can I resolve this? Thanks!

I can't use ddclient without a conf file

It would be nice if I could just put everything on the command line. It doesn't seem to work though.

ddclient
  -file=/dev/null
  -foreground
  -daemon=300
  -syslog
  -verbose
  -debug

  -use=fw
  -fw=http://testwifi.here/api/v1/status
  -fw-skip=localIpAddress

  -ssl
  -protocol=cloudflare
  -login=sixcorners%[email protected]
  -password=CVfTw07Ii1bzq7159gQV
  -options=zone=example.com
  -host=asdf.example.com

It keeps giving me this error:

WARNING:  skipping host: asdf.example.com: 'login=' is an invalid login.

I see that it is set correctly with the debug output:

opt{login}                           : sixcorners%[email protected]

ddclient version 3.9.0,

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.