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

Spa*_*Hit 9 networking dns dyndns ddclient

我真的很难ddclient(用我当前的 IP 地址更新OpenDNS)工作。我将它作为守护程序运行,但它从未成功更新我的 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
Run Code Online (Sandbox Code Playgroud)

当我运行时:

sudo ddclient -daemon=0 -debug -verbose -noquiet
Run Code Online (Sandbox Code Playgroud)

我得到:

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.
Run Code Online (Sandbox Code Playgroud)

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

ish*_*ish 5

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

这是/曾经来自一个已知的“bug”——它是由动态 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
        my($status, $returnedip) = split //, lc $line;
        $ip = $returnedip if (不是 $ip);