尝试更新动态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)。
解:
- 使用
sudo apt-add-repository ppa:nathan-renniewaldock/ppa
添加此PPAsudo apt-add-repository ppa:nathan-renniewaldock/ppa
-
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
错过这个小小的逗号会引发错误