说说3322动态域名在使用中遇到的一些问题(感谢hefish)

发表于:2007-07-04来源:作者:点击数: 标签:
root总收到信,内容包括“Incorrectlybuiltbinarywhichaccesseserrnoorh_errnodirectly.Needstobefixed.” 这个是ez-update客户端的问题,还是别的什么? 如何让这个信息不发送到ROOT里呢? 我已经加了-q参数(bequiet),但 Incorrectlybuiltbinarywhichacc

root总收到信,内容包括“Incorrectly built binary which aclearcase/" target="_blank" >ccesses errno or h_errno directly. Needs to be fixed.”

这个是ez-update客户端的问题,还是别的什么?

如何让这个信息不发送到ROOT里呢?

我已经加了-q参数(be quiet),但
Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed.
还是有

/etc/crontab里修改了MAILTO=root,已经去掉了,也不行……

 platinum 回复于:2004-06-06 23:01:43
问题解决了
原来总会在root信箱里收到
[quote:1f2ba19fa1]
Incorrectly built binary which accesses errno or h_errno directly. Needs to be fixed.
no update needed at this time
[/quote:1f2ba19fa1]
现在不会有了

解决步骤:

1、去下载一个ez-ipupdate源码包
http://www.3322.org/dyndnspage/ez-ipupdate-3.0.10.tgz

2、解压,修改代码
tar xzvf ez-ipupdate-3.0.10.tgz
cd ez-ipupdate-3.0.10

vi conf_file.c
添加代码
[code:1:1f2ba19fa1]
#include <errno.h>
[/code:1:1f2ba19fa1]

vi ez-ipupdate.c
查找“no update needed at this time”
注释掉那几行
[code:1:1f2ba19fa1]
//    else
//    {
//      fprintf(stderr, "no update needed at this time\n");
//    }
[/code:1:1f2ba19fa1]

3、编译,安装
./configure
make
make install

4、修改crontab,原有命令加个-q参数(be quiet)

 platinum 回复于:2004-06-06 23:05:26
附:

希网动态域名更新协议
http://www.3322.org/dyndnspage/protocol.html

希网动态域名——相关协议
[code:1:1158f3d045]
Client的请求应该使用HTTP/1.0以上协议,Server的相应一定为HTTP/1.0

支持HTTP和基于SSL的HTTPS协议

需要事务处理,Client发送完整的请求,并且解析服务器端的相应,保证域名更新的成功

1. 通过URL认证 (所有的在一行)
http://username:password@members.3322.org/dyndns/update?system=dyndns&hostname=yourhost.ourdomain.ext&myip=ipaddress&wildcard=OFF
&mx=mail.exchanger.ext&backmx=NO&offline=NO

2. HTTP GET 请求
1) dyndns, statdns
GET /dyndns/update?system=statdns&hostname=yourhost.ourdomain.ext
&myip=ipaddress&wildcard=OFF&mx=mail.exchanger.ext&backmx=NO
&offline=NO HTTP/1.1
Host: members.3322.org
Authorization: Basic username:pass 
(note: username:pass must be encoded in base64)
User-Agent: myclient/1.0 me@null.net

2) webhop
GET /dyndns/update?system=webhop&hostname=yourhost.ourdomain.ext&url=dest_url
&title=cloak_title&cloak=cloak HTTP/1.1
Host: members.3322.org
Authorization: Basic username:pass 
(note: username:pass must be encoded in base64)
User-Agent: myclient/1.0 me@null.net

3) subdom
GET /dyndns/update?system=subdom&hostname=yourhost.ourdomain.ext&ip1=address1&ip2=address2 HTTP/1.1
Host: members.3322.org
Authorization: Basic username:pass 
(note: username:pass must be encoded in base64)
User-Agent: myclient/1.0 me@null.net


username:password System:All Optional: No
用户名和密码用来登录

system=dyndns|statdns|webhop|subdom System:All Optional: Yes
只能使用二者之一,否则出错。如果没有这个参数,缺省是dyndns
(webhop, subdomain只能使用web更新,而用户自己的域名(3322.org的custom方式)
可以归并到现有的四种方式)

hostname=host.3322.org System:All Optional: No
需要更新的域名

myip=ipaddr System:All Optional: Yes
域名对应的IP。如果不指定,则服务器将选择最佳的IP(一些Proxy会传递客户端的IP,
这会被服务器检测到)。如果传递的地址格式错误,则忽略这个参数,而用服务器检测
到的IP。

wildcard=ON|OFF System:DynDNS, StatDNS Optional: Yes
是否支持通配符,缺省为OFF。ON意为着 *.host.3322.org等同于host.3322.org

mx=mailexchanger System:DynDNS, StatDNS Optional: Yes
指明Mail eXchanger。必须能够解析到一个IP,否则被忽略。如果不提供该参数或者
不能解析到一个IP,mx记录会被删除。

backmx=YES|NO System:DynDNS, StatDNS Optional: Yes
指明前面的mx参数会被设置成备份邮件服务器,即邮件会首先发送到你的机器上,如果
不成功,才会发送到备份邮件服务器上。

offline=YES|NO System:DynDNS Optional: Yes
使域名暂时失效。

url=dest_url System:WebHop Optional: No
webhop指向的URL地址

cloak=YES|NO System:WebHop Optional: Yes
指明webhop时是否使用frame,将转向的url包装起来。缺省是YES

title=cloak_title System:WebHop Optional: Yes
cloak时,frame的标题。缺省是 "Bentium DynDns System"

ip1=address1 System:SubDom Optional: YES
第一个域名服务器的IP地址,必须是正确的IP。如果不指定,则服务器将选择最佳的IP
(一些Proxy会传递客户端的IP, 这会被服务器检测到)。如果传递的地址格式错误,
则忽略这个参数,而用服务器检测到的IP。

ip2=address2 System:SubDom Optional: YES
第二个域名服务器的IP地址,必须是正确的IP
[/code:1:1158f3d045]

希网动态域更新返回码
http://www.3322.org/dyndnspage/codes.html


希网动态域名——返回码解释
[code:1:1158f3d045]
Pre-Update Errors
badauth Bad authorization (username or password)
badsys The system parameter given was not valid. 
badagent The useragent your client sent has been blocked at the access
level. Support of this return code is optional. 

Update Complete 
good Update good and successful, IP updated 
nochg No changes, update considered abusive 

good或noschg后面会跟着所更新的IP地址

Input Error Conditions
notfqdn A Fully-Qualified Domain Name was not provided
nohost The hostname specified does not exist
nourl WebHop时,没有设置URL
!donator The offline setting was set, when the user is not a donator,
this is only returned once
!yours The hostname specified exists, but not under the username
currently being used
!active The hostname specified is in a Custom DNS domain which has not
yet been activated
abuse The hostname specified is blocked for abuse; contact support to
be unblocked

Server Error Conditions
numhost Too many or too few hosts found
dnserr DNS error encountered

Wait Conditions 
wxxh Wait "xx" hours
wxxm Wait "xx" minutes
wxxs Wait "xx" seconds 

Emergency Conditions 
911 Shutdown until notified otherwise via status.shtm 
[/code:1:1158f3d045]

 Linux@初学者 回复于:2004-06-06 23:14:49
厉害,不过很晕!

 llzqq 回复于:2004-06-07 07:36:56
我一直用这种方式,没收到过来信:

/usr/local/bin/ez-ipupdate -i ppp0 -h nero.3322.org -S qdns -u llzqq:password


如果用这种方式就会有报错信息:

/usr/local/bin/ez-ipupdate -c /usr/local/bin/qdns.conf

 platinum 回复于:2004-06-07 07:47:24
对,我用的第二种方式

不过现在不会报错了:)

 hefish 回复于:2004-06-07 10:36:34
我的客户端是自己写的,用perl。。。。哈哈。。。

 platinum 回复于:2004-06-07 11:22:18
牛啊!

贴出来一起分享一下如何?

 hefish 回复于:2004-06-07 14:02:57
小彭客户端向来写的比较差。。。
我贪方便,也自己写了一个简单的。。。没有出错处理。。。。

[code:1:c8117213da]
hefish@lylib:~$ cat 3322.pl
#!/usr/bin/perl

require LWP::UserAgent;

$user="username";
$pass="password";
$domain="domain.3322.org";


$url = "http://".$user.":".$pass."\@members.3322.org/dyndns/update?system=dyndns&hostname=".$domain."&wildcard=OFF";

my $ua = LWP::UserAgent->new;
$ua->timeout(10);
$ua->env_proxy;

my $response = $ua->get($url);

if ($response->is_success) {
    print $response->content;  # or whatever
}
else {
    die $response->status_line;
}
[/code:1:c8117213da]

修改username, password, domain三个参数就可以用了。

 platinum 回复于:2004-06-07 14:25:05
看来写这个的人也是非常了解3322的机制啊

如此说来,其实用BROWSER直接写一个(或几个)URL也可以咯

 hefish 回复于:2004-06-07 14:37:10
小彭的3322本来就是很容易实现的。。。。

咱可以用powerdns+mysql来实现。。。

或者有精力自己用java写一个都行。

3322就是用java写的。

 platinum 回复于:2004-06-07 14:39:19
对,是个不错的主意
我们可以自己做二级域名代理,做一个基于数据库的C/S构架程序就OK了

 firebee 回复于:2004-06-07 20:08:49
Scalar found where operator expected at XXX.pl line 7, near "$domain"
        (Missing semicolon on previous line?)
syntax error at XXX.pl line 7, near "$domain"
Execution of xxx.pl aborted due to compilation errors.
这是什么毛病。。。。

 platinum 回复于:2004-06-07 20:37:09
$domain="domain.3322.org";
不对?

这个我还没用过

 hefish 回复于:2004-06-08 09:54:12
我天天在用,就没出错过。

 php2008 回复于:2004-06-08 17:19:15
用虎霸动态域名的Linux客户端软件很快就安装好了呢。
==================
虎霸动态域名Linux/Unix下客户端软件下载  
下载地址:
http://www.ip58.com/download/hubaddns.tar.gz


安装方法:
获取虎霸动态域名Linux/Unix下客户端软件
#wget http://www.ip58.com/download/hubaddns.tar.gz

解压软件
#tar zxvf hubaddns.tar.gz

把解压后的目录copy到/usr/local
#mv hubaddns /usr/local

进入到/usr/local/hubaddns目录
#cd /usr/local/hubaddns

进行安装虎霸动态域名Linux/Unix下客户端软件
[root@ip58.com hubaddns]# ./install
service hubaddnsd does not support chkconfig
service hubaddnsd does not support chkconfig
Configuration file name: /etc/hubaddns.conf
Hostname: love                          //输入在虎霸网申请的动态域名主机名
Domain[ip58.com]: ip58.com         //所属域名,默认为:ip58.com
Password: password                    //在虎霸网申请的每个动态域名都有一个独立的密码
HuBaDDNS Client Install successful![root@ip58.com hubaddns]# 

启动虎霸动态域名Linux/Unix下客户端软件
[root@ip58.com hubaddns]# /usr/local/hubaddns/hubaddnsd start

停此虎霸动态域名Linux/Unix下客户端软件
[root@ip58.com hubaddns]# /usr/local/hubaddns/hubaddnsd stop

重启虎霸动态域名Linux/Unix下客户端软件
[root@ip58.com hubaddns]# /usr/local/hubaddns/hubaddnsd restart

为了开机能运行虎霸动态域名Linux/Unix下客户端软件请在/etc/rc.local添加如下一行:
/etc/local/hubaddns/hubaddnsd start

[root@ip58.com hubaddns]# echo "/usr/local/hubaddns/hubaddnsd start" >> /etc/rc.local

看更新日志:
[root@ip58.com hubaddns]#tail -f /var/log/hubaddns.log

如果需要内网更新的客户端程序请先联系QQ#:57758078,近期将推出。
加入时请注明:虎霸
 

【收藏】【推荐】【大 中 小】【打印】【关闭】

 q1208c 回复于:2004-06-08 17:29:12
[quote:e3a6f3c92c="firebee"]Scalar found where operator expected at XXX.pl line 7, near "$domain"
        (Missing semicolon on previous line?)
syntax error at XXX.pl line 7, near "$domain"
Execution of xxx.pl aborted due to ..........[/quote:e3a6f3c92c]

你的第六行少一个";",加上试试。

 unixli 回复于:2004-06-14 16:07:31
哈哈,我现在把我的域名放在别人DNS服务器上,自己写了一个脚本做自动动态更新,爽呀!

 platinum 回复于:2004-06-14 17:35:39
不太明白,详细说明一下

 unixli 回复于:2004-06-14 22:33:23
就是我申请了一个国际域名,但因我的是拨号,所以没静态IP。而花生壳等对独立域名的动态IP解析是要收钱的,所以我放在别人那,域名由自己管理,一年还省了几十上百的,你说爽不爽呀!

 platinum 回复于:2004-06-15 00:10:28
编写脚本的原理是什么?

 szkingrose 回复于:2004-06-15 09:43:12
[quote:4aa16de859="unixli"]就是我申请了一个国际域名,但因我的是拨号,所以没静态IP。而花生壳等对独立域名的动态IP解析是要收钱的,所以我放在别人那,域名由自己管理,一年还省了几十上百的,你说爽不爽呀![/quote:4aa16de859]

将你的办法搞出来看看啊。学习学习。

 unixli 回复于:2004-06-15 11:11:25
我也就是用BIND在别人那架一个DNS服务器,设一个更新KEY,客户端动态更新IP时使用,所以没这个KEY是不能更新的;然后一秒钟取一次拨号机器的公网IP,再和域名IP比较,如不一样就更新。
其实上面几个帖子的客户端更新功能比较完整,如再加上服务器端的那就可以对外提供服务了。现在就看前面的几位仁兄谁有兴趣写程序了。
DNS版中有一些动态域名的相关帖子,也有人搞出了整套动态域名软件,但他是要出卖了,所以没办法得到。
2000、2003服务器版上的DNS也是可以动态更新的,所以服务器端用它们应该也是可以的。

能期待哪位仁兄把整套软件写好并共享出来了。期待中。。。。。。

 platinum 回复于:2004-06-15 11:20:44
“如不一样就更新”,我想,关键难点在这一步,如何更新DNS指向

 unixli 回复于:2004-06-15 11:38:21
我现在是这样的,因在LINUX下拨号的ADSL都是用PPP0做为它的接口名,那我就把PPP0的IP地址提取出来,再获取当前域名的IP,然后用PPP0的IP和域名IP比较,如不一样,就用nsupdate这个DNS命令更新。

 unixli 回复于:2004-06-15 11:58:08
如客户端是WINDOWS,并且是拨号,那也是取拨号接口IP。这就要用到FOR WINDOWS的SHELL工具了,当然如写一个程序或借助而其它的程序,应该也可以取到IP。
但如是内网,那就有点难取到公网出口的IP了。所以真的想比较通用的,那最好是由客户端定期给服务器发一个包,服务器从这包里提取出IP地址,然后用这个IP做比较并更新这个用户的域名IP。我相信现在很多网上的动态域名服务商都是用这原理更新的。
现在很多网站和论坛都是可以显示访问者IP的,所以要取客户端IP应不难实现。

 platinum 回复于:2004-06-15 12:00:51
那么,“我现在把我的域名放在别人DNS服务器上”的目的是……?
做三级解析吗?

 unixli 回复于:2004-06-15 22:51:53
哈哈,你说公网上的域名能做什么呢?有自己可以完全控制的DNS服务器你说有什么好处呀?
如有可能,也可以搞搞服务什么的呀!

 platinum 回复于:2004-06-16 01:00:24
原来这个目的 :mrgreen:

 adminxp 回复于:2004-06-17 05:37:37
这么麻烦?!

用用这个我认为最好的:

CHANIX.NET的

http://chanix.net/download/Signpost4Unix-0.0.1.zip

完全的DNS自主管理.
顶名域名绑定全免.

原文转自:http://www.ltesting.net