为什么 ddclient 在尝试更新动态 DNS 时给出“无效 IP”错误?

为什么 ddclient 在尝试更新动态 DNS 时给出“无效 IP”错误?

我真的很难得到ddclient(哪些更新开放DNS使用我当前的 IP 地址)来工作。我将其作为守护进程运行,但它从未成功更新我的 IP 地址openDNS

为了排除故障,我从命令行运行ddclient如下。

(在这些例子中,出于安全原因,方括号 [] 中的值代替了真实值)

我的/etc/ddclient.conf包含:

use=web, web=checkip.dyndns.org/, web-skip='IP Address'
server=updates.opendns.com
protocol=dyndns2
login=[my login]
password=[my password]
Home

当我跑步时:

sudo ddclient -daemon=0 -debug -verbose -noquiet

我得到:

WARNING:  file /var/cache/ddclient/ddclient.cache, line 3: Invalid Value for keyword 'ip' = ''
...
WARNING:  skipping update of Home from <nothing> to [my real ip].
WARNING:   last updated <never> but last attempt on Tue Oct  4 08:38:32 2011 failed.

如果我使用rm缓存文件,ddclient确实可以工作一次,但随后的几次都会失败。

答案1

已知错误 - 已修复上游 - 从 PPA 获取最新版本

这是一个已知的“错误”——它是由动态 DNS 提供商使用dyndns2协议不正确并向发送格式错误的响应ddclient

问题已经早已修复在 ddclient 中(基于 trac 中链接的补丁之一),但 Ubuntu 的 ddclient 太古老了(从上游继承),甚至无法手动修补。(Ubuntu 的版本是 106/Jan-2009,而最新版本是 r130/Nov-2011)。

解决方案:

  1. 添加此 PPAsudo apt-add-repository ppa:nathan-renniewaldock/ppa
  2. sudo apt-get update && sudo apt-get install ddclient(如有必要将升级)

PPA 拥有最新版本 10.04、11.10 和 12.04。


对于那些好奇的人来说,这是补丁/错误位:

        # bug #10: 一些 dyndns 提供商不返回 IP,因此
        # 我们不能使用返回的 IP
        我的($status,$returnedip)=拆分/ /,lc $line;
        $ip = $returnedip 如果(不是 $ip);

答案2

您需要 ppa:nathan-renniewaldock/ppa 中较新的 ddclient 软件包,但请注意,如果您只想让 ddclient 正常工作,则此 PPA 包含许多其他您可能不需要的软件包。请使用以下步骤仅升级 ddclient。

sudo apt-get install python-software-properties
sudo apt-add-repository ppa:nathan-renniewaldock/ppa

现在,以 root 身份创建文件/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

这告诉 apt-get 忽略 PPA 中除 ddclient 之外的软件包。现在,可以安全地执行以下安装操作:

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

或者如果你已经安装了它,请执行以下操作:

sudo apt-get upgrade

只需检查是否只有 ddclient 需要升级。

答案3

跳过@从到71.422.000.000的更新。

大多数情况下,当我设置 ddclient 后收到此警告时
警告:文件 /var/cache/ddclient/ddclient.cache,第 3 行:关键字“ip”的值无效 = ''
这是因为 ddclient.conf 文件中存在拼写错误或小问题。我需要停下来逐行对照我的域提供商示例进行检查。

我使用 NameCheap 是因为我喜欢他们的密码系统的安全性,该系统与每个域名单独绑定,自动生成,并且可以快速轻松地更改。

我最近遇到的问题是 NameCheap 的知识库示例中没有显示的内容,但我记得以前必须这样做。那就是我必须在要更新的主机名(域名之前的名称)之间添加逗号。因此,下面是我的示例,目前适用于我的域名提供商。

daemon=3600
ssl=yes
protocol=namecheap
use=web, web=dynamicdns.park-your-domain.com/getip
server=dynamicdns.park-your-domain.com
login=yourdomainname.com
password=0fc0ur5ethi5i5n0tmypa55w0rdfoob
@, hostname1
缺少这个小小的逗号会引发错误

相关内容