我在 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. 检查你的系统日志