如何让 ddclient 与 freedns 协同工作?

如何让 ddclient 与 freedns 协同工作?

我在 12.04 服务器上使用 freedns.afraid.org 上的动态 DNS 服务。我曾假设协议是标准化的,ddclient 可以正常工作,但显然不是。我在 /var/log/syslog 中收到此消息:

ERROR: Invalid update URL (2): unexpected status ()

我尝试使用替代 PPA 中描述的 ddclient 的更新版本这个答案,但后来我遇到了这个错误:

FATAL:    Error loading the Perl module Digest::SHA1 needed for freedns update.
FATAL:     On Debian, the package libdigest-sha1-perl must be installed.

当我尝试安装该软件包时,出现以下信息:

E: Unable to locate package libdigest-sha1-perl

这让我此错误报告,显然无解。该怎么办?

答案1

直到 ddclient固定的,你可以手动安装它想要的旧模块:

sudo apt-get install cpanminus
cpanm --sudo Digest::SHA1

免费 DNS 的客户端页面ddclient --help提供示例 ddclient 配置。重新启动 ddclient 以使更改生效:

sudo service ddclient restart

答案2

我只需编辑以下两行就可以使 FreeDNS 正常工作/usr/sbin/ddclient

从:

my $sha1_loaded = eval {require Digest::SHA1};

到:

my $sha1_loaded = eval {require Digest::SHA};

从:

import  Digest::SHA1 (qw/sha1_hex/);

到:

import Digest::SHA (qw/sha1_hex/);

答案3

A评论在错误报告中表明“很容易将程序更改为使用 Digest::SHA 而不是 Digest::SHA1”。

因此完整的步骤是,首先,因为 add-apt-repository 默认没有安装:

sudo apt-get install python-software-properties

然后,作为描述来自 izx:

sudo apt-add-repository ppa:nathan-renniewaldock/ppa

现在,这个存储库包含许多软件包,但我们只想要 ddclient。因此,创建一个首选项文件(例如“/etc/apt/preferences.d/nathan-prefs”),并将其编辑为如下所示:

Package: *
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 400

Package: ddclient
Pin: release o=LP-PPA-nathan-renniewaldock
Pin-Priority: 500

现在安装 ddclient:

sudo apt-get update && sudo apt-get install ddclient

现在,成为 root 并编辑 /usr/sbin/ddclient。查找require Digest::SHA1并将其替换为require Digest::SHA。然后查找import Digest::SHA1后面几行并将其替换为import Digest::SHA

最后,打开 /etc/ddclient.conf 并使其看起来像这样(注意协议):

daemon=3600
protocol=freedns
use=if, if=eth0
ssl=yes
use=web, web=myip.dnsomatic.com
server=freedns.afraid.org
login=username
password='password'
mydomain.example.com

我最不满意的是破解文件并破坏 Ubuntu 的包管理。更好的解决方案是修复 PPA。

答案4

您可以从以下位置获取: libdigest-sha1-perl

您可能还需要安装libio-socket-ssl-perl. 检查你的系统日志

相关内容