cfengine失败的原因,是由于域名反向解析出错。
从跟踪结果来看,我们的bind转发到网通的DNS 218.108.248.228, 而网通的域名服务器其对下列IP地址的反向解析有奇怪的结果[1],正常的结果应 该如[2]所示。 因此,对于网通这样诡异的运营商,自己的域名服务器还是必要的。
hz-307:/etc/bind# host -l wasu.vobile | grep 192.168 | awk '{print $4}' | while read k; do host $k; done | grep FAIL | sed 's/Host \(.*\).in-addr.*/\1/g' | awk -F. '{print $4,$3,$2,$1}' | sed 's/ /./g' | sort | uniq -c
3 192.168.x.106
2 192.168.x.113
1 192.168.x.115
1 192.168.x.116
1 192.168.x.50
2 192.168.x.71
hz-307:/etc/bind#
附:
故障现象:
hz-050:~# cfagent -q
cfengine:hz-050: Couldn't look up address v6 for : Temporary failure in name resolution
cfengine:hz-050: Id-authentication for hz-050.vobileinc.com failed
cfengine:hz-050:/var/lib/cfengine2/inputs/update.conf:42: Warning: actionsequence is empty
cfengine:hz-050:/var/lib/cfengine2/inputs/update.conf:42: Warning: perhaps cfagent.conf/update.conf have not yet been set up?
hz-050:~#
故障相关代码:
proto.c
if ((err=getnameinfo((struct sockaddr *)&myaddr,len,dnsname,CF_MAXVARSIZE,NULL,0,0)) != 0)
{
snprintf(OUTPUT,CF_BUFSIZE,"Couldn't look up address v6 for %s: %s\n",dnsname,gai_strerror(err));
CfLog(cferror,OUTPUT,"");
return false;
}
ltrace相关信息,可以看到返回值是-3:
getnameinfo(0xbfaae4a8, 16, "", 1024, NULL, 0, 0) = -3
gai_strerror(-3) = "Temporary failure in name resolu"...
snprintf("Couldn't look up address v6 for "..., 4096, "Couldn't look up address v6 for "...) = 71
头文件相关信息,对应到可读的错误信息:
/usr/include/netdb.h
# define EAI_AGAIN -3 /* Temporary failure in name resolution. */
[1]
hz-307:/etc/bind# dig -x 192.168.x.116 @218.108.248.228
;; Got bad packet: bad label type
120 bytes
8e 62 81 83 00 01 00 00 00 01 00 00 03 31 31 36
02 31 36 03 31 36 38 03 31 39 32 07 69 6e 2d 61
64 64 72 04 61 72 70 61 00 00 0c 00 01 c0 14 00
06 00 01 00 00 03 f3 00 3f 0d 68 69 64 64 65 6e
2d 6d 61 73 74 65 72 05 68 7a 6d 61 6e 03 6e 65
74 00 03 64 6e 73 08 63 68 69 6e 61 68 63 6e 03
63 6f 6d 00 77 ce 51 a7 00 00 0e 10 00 00 07 08
00 09 3a 80 00 00 0e 10
[2]
hz-307:/etc/bind# dig -x 192.168.x.11 @218.108.248.228
; <<>> DiG 9.6-ESV-R3 <<>> -x 192.168.x.11 @218.108.248.228
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 18589
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;11.x.168.192.in-addr.arpa. IN PTR
;; AUTHORITY SECTION:
168.192.in-addr.arpa. 8746 IN SOA prisoner.iana.org. hostmaster.root-servers.org. 2002040800 1800 900 604800 604800
;; Query time: 24 msec
;; SERVER: 218.108.248.228#53(218.108.248.228)
;; WHEN: Mon Jul 11 19:58:22 2011
;; MSG SIZE rcvd: 121
hz-307:/etc/bind#