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

我很难获得ddclient (用当前的IP地址更新OpenDNS )。 我让它作为守护进程运行,但它在openDNS更新我的IP地址永远不会成功。

要进行故障排除,我从命令行运行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  to [my real ip]. WARNING: last updated  but last attempt on Tue Oct 4 08:38:32 2011 failed. 

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

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

这是来自一个已知的“错误” – 它是由动态DNS提供程序错误地使用dyndns2协议并向ddclient发送格式错误的响应引起的。

  • ddclient sourceforge trac ticket
  • Debian错误报告

问题早已在ddclient中修复 (基于trac中链接的一个补丁),但Ubuntu的ddclient是如此古老(inheritance自上游),甚至无法手动修补。 (Ubuntu是在2009年1月的第106版,而最新版本是r130 / Nov-2011)。

解:

  1. 使用sudo apt-add-repository ppa:nathan-renniewaldock/ppa添加此PPA sudo 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,$ returnip)= split / /,lc $ line;
         $ ip = $ returnip if(not $ ip);

你想从ppa:nathan-renniewaldock / ppa获得更新的ddclient软件包,但要注意这个PPA包含许多你可能不想要的软件包,如果你想做的就是让ddclient工作。 使用以下步骤仅升级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忽略除了ddclient之外的PPA中的包。 所以现在安装它应该是安全的:

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

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

 sudo apt-get upgrade 

只需检查是否只有ddclient才会升级。

跳过@的更新到71.422.000.000。

大部分时间我在设置ddclient后收到此警告
警告:文件/var/cache/ddclient/ddclient.cache,第3行:关键字’ip’=”的值无效
这是因为ddclient.conf文件中的拼写错误或只是一个小小的推文。 我需要停止并逐行检查我的域名提供商示例。

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

我的最新问题是NameCheap在他们的知识库示例中没有显示的内容,但是我记得以前必须做的事情。 那就是我必须在我想要更新的主机名之间放一个逗号(域名之前的名称)。 以下是我目前与我的域名提供商合作的示例。

守护= 3600
SSL = YES
协议= namecheap
use = web,web = dynamicdns.park-your-domain.com / getip
服务器= dynamicdns.park-your-domain.com
登录名= yourdomainname.com
密码= 0fc0ur5ethi5i5n0tmypa55w0rdfoob
@,hostname1
错过这个小小的逗号会引发错误