Newsgroup: it.comp.os.linux.sys
Titolo: Bind morto improvvisamente

Ciao a tutti.
Questa mattina mi sono morti due server dns praticamente in
simultanea, senza un motivo logico.
Nel server 2 l'ultima query è :
03-Jan-2008 09:48:35.660 client 11.22.33.44#1347: query:
suggestqueries.google.com
 IN A +
Nel server 1:
03-Jan-2008 09:48:35.152 client 22.33.44.55#62181: query:
mio.dominio.tld IN A +
Apparentemente, nulla collega i due server, nulla nel cron, nulla nei
log (niente nel syslog, niente in messages, niente in dmesg, niente
nei vari log di bind)
Semplicemente sono morti come se qualcuno avesse buttato giù di
prepotenza i demoni con un killall -9.
Uso la penultima versione, la 9.4.1 con DLZ e zone su mysql (mysql, è
replicato in locale su entrambi i server, quindi anche se fosse andato
giù il server mysql principale non sarebbe successo niente, ma
comunque sia, ne il server principale, ne quelli locali sono andati
giù)
Quello che mi fa MOLTO STRANO, è praticamente la simultaneità del
problema. Guardate voi stessi gli orari.
Siete a conoscenza di qualche bug che possa mettere fuori uso entrambi
i server?
Ho controllato e non ho nulla nel cron che si avvicini a tale orario.
Prima d'ora non mi è *MAI* capitato niente di simile (a dire il vero,
non mi è mai andato giù un singolo bind, ed erano in piedi da anni su
quelle macchine), potrei anche sorvolare, ma
1) non è bello sorvolare su un problema del genere
2) se mi dovessero andare nuovamente giù entrambi i server dns (alla
faccia della ridondanza) mi verrebbero a prendere a casa.
Ciao Ciao, ale.

 1) non è bello sorvolare su un problema del genere
Giusto ;^)
Pero' c'e' effettivamente poco su cui speculare...
bye!

 Pero' c'e' effettivamente poco su cui speculare...
Quindi bisogna rimanere così in attesa e pregare?
Pensavo di non sentirmelo mai dire :(

 servizi.
Guarda, ho trovato dei log non perfetti, ma dubito possano portare ad
un crash:
SERVER 1:
lame-servers.log:03-Jan-2008 09:48:14.860 unexpected RCODE (SERVFAIL)
resolving '
furness.ac.uk/MX/IN
': 193.63.106.103#53
lame-servers.log:03-Jan-2008 09:48:14.995 unexpected RCODE (REFUSED)
resolving '
furness.ac.uk/MX/IN
': 195.194.162.205#53
lame-servers.log:03-Jan-2008 09:48:16.679 FORMERR resolving 'pro-
line.com/MX/IN
': 205.178.189.51#53
lame-servers.log:03-Jan-2008 09:48:16.831 FORMERR resolving 'pro-
line.com/MX/IN
': 205.178.190.51#53
lame-servers.log:03-Jan-2008 09:48:25.809 lame server resolving
'
uhlan.com
' (in '
uhlan.com
'?): 216.173.237.28#53
lame-servers.log:03-Jan-2008 09:48:25.980 lame server resolving
'
uhlan.com
' (in '
uhlan.com
'?): 216.173.237.47#53
security.log:03-Jan-2008 09:48:03.099 client 77.95.168.50#32818: RFC
1918 response from Internet for 111.0.168.192.in-addr.arpa
security.log:03-Jan-2008 09:48:22.102 client 77.95.168.50#32818: RFC
1918 response from Internet for 100.0.168.192.in-addr.arpa
SERVER 2:
lame-servers.log:03-Jan-2008 09:48:16.464 FORMERR resolving 'pro-
line.com/MX/IN
': 205.178.189.51#53
lame-servers.log:03-Jan-2008 09:48:16.616 FORMERR resolving 'pro-
line.com/MX/IN
': 205.178.190.51#53
lame-servers.log:03-Jan-2008 09:48:18.855 unexpected RCODE (REFUSED)
resolving '
furness.ac.uk/MX/IN
': 195.194.162.205#53
lame-servers.log:03-Jan-2008 09:48:18.991 unexpected RCODE (SERVFAIL)
resolving '
furness.ac.uk/MX/IN
': 193.63.106.103#53
lame-servers.log:03-Jan-2008 09:48:25.934 lame server resolving
'
uhlan.com
' (in '
uhlan.com
'?): 216.173.237.28#53
lame-servers.log:03-Jan-2008 09:48:26.109 lame server resolving
'
uhlan.com
' (in '
uhlan.com
'?): 216.173.237.47#53

 un crash:
1) non speculare sull'acqua calda, quei log sono normali
2) comunque non dovrebbe crashare, anche se gli dai in pasto "merda"
3) usi DLZ che, sebbene io lo abbia tenuto in vita per anni con le mie
patch, dubito seriamente che sia manutenuto. L'autore non mette mano al
codice dalla 9.2.1, figurati.
4) focalizzati proprio sul fatto che probabilmente la colpa è di DLZ
5) ulimit -c unlimited, fagli dumpare il core nel caso di crash e spera che
ricapiti.
6) senza core, stai fresco.
Max
-- 
A: Because we read from top to bottom, left to right.
Q: Why should i start my reply below the quoted text?

 6) senza core, stai fresco.
Ok.
[1] no, nessun cliente ha fatto update alle zone. Bind è morto per
conto suo.

 6) senza core, stai fresco.
Eccolo qui:
Core was generated by `/usr/sbin/named -u daemon -c /etc/named.conf'.
Program terminated with signal 11, Segmentation fault.
#0  0x486564ab in ?? ()
Mai usato gdb, quindi l'unica cosa che mi viene in mente è indagare su
come mai si è presentato un Segmentation fault.
Se gdb può darmi ulteriori info non saprei da dove cominciare, per il
momento cerco su google.

 momento cerco su google.
devi avere il programma non "strippato" dai simboli.
poi fai:
# gdb /usr/sbin/named core.XXXXX  
al prompt, digiti bt e bt full e vediamo perchè è crashato, se ri riesce a
capire.
se crasha così frequentemente, varrebbe la pena fare salvarsi un pcap dump
delle query a cui rispondere per capire cosa arriva.


http://www.ravencore.com/forum/viewtopic.php?t=882
leggi qui , se ho capito bene,  pare ci sia effettivamente un bug che può
causare dei crash 
ciao
enrico


 delle query a cui rispondere per capire cosa arriva.
Non e' più crashato da questa mattina. Il core era riferito a quel
crash. (io avevo i core dump disattivati, come di default, eppure il
dump l'ha fatto uguale!)
Tanto per fare qualcosa, ho inviato tutto alla lista di segnalazione
bug di bind, vedremo cosa mi rispondono.
Intanto allego anche a voi il dump:
root@xx:/var/named# gdb named --core core
GNU gdb 6.3
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and
you are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "i486-slackware-linux"...Using host
libthread_db library "/lib/libthread_db.so.1".
Core was generated by `/usr/sbin/named -u daemon -c /etc/named.conf'.
Program terminated with signal 11, Segmentation fault.
Reading symbols from /usr/lib/libcrypto.so.0...done.
Loaded symbols for /usr/lib/libcrypto.so.0
Reading symbols from /usr/lib/libmysqlclient.so.12...done.
Loaded symbols for /usr/lib/libmysqlclient.so.12
Reading symbols from /usr/lib/libz.so.1...done.
Loaded symbols for /usr/lib/libz.so.1
Reading symbols from /lib/libcrypt.so.1...done.
Loaded symbols for /lib/libcrypt.so.1
Reading symbols from /lib/libm.so.6...done.
Loaded symbols for /lib/libm.so.6
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/libdl.so.2...done.
Loaded symbols for /lib/libdl.so.2
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /lib/libnss_compat.so.2...done.
Loaded symbols for /lib/libnss_compat.so.2
Reading symbols from /lib/libnss_nis.so.2...done.
Loaded symbols for /lib/libnss_nis.so.2
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
#0  0x486564ab in strlen () from /lib/libc.so.6
(gdb) bt
#0  0x486564ab in strlen () from /lib/libc.so.6
#1  0x080b8b86 in dns_message_totext (msg=0x4ba85320, style=0x81a7f3c,
flags=0, target=0xb13d9540) at message.c:3133
#2  0x0811ebea in log_packet (message=0x4ba85320, level=10,
mctx=0x81dfc38) at resolver.c:5309
#3  0x0811f38b in resquery_response (task=0x48e10bb8,
event=0x4ba85320)
at resolver.c:5497
#4  0x08182c56 in dispatch (manager=0x4872f0f8) at task.c:867
#5  0x0818332e in isc__taskmgr_dispatch () at task.c:1257
#6  0x08185141 in evloop () at app.c:357
#7  0x0818543a in isc_app_run () at app.c:549
#8  0x080593b5 in main (argc=5, argv=0xb13dab24) at main.c:868
L'errore sembra durante l'invocazione di questa funzione:
dns_message_totext (msg=0x4ba85320, style=0x81a7f3c,flags=0,
target=0xb13d9540) at message.c:3133
che fa a pugni con:
strlen () from /lib/libc.so.6
Ora, il problema è di bind (presumo che 'message.c' sia un file di
bind, dato che la funzione si chiama dns_message_totext) oppure delle
libc?
Ovviamente bind è stato ricompilato a manina sul mio sistema, niente
pacchetti preconfezionati, quindi neanche dire che si aspetta le libc
di una determinata versione..
Per scongiurare ogni dubbio, vado a vedere i requisiti di bind 9.4.1,
magari vuole una versione ben precisa (se così fosse però non dovrebbe
compilare, e difficilmente funzionerebbe per oltre 6 mesi)

 causare dei crash
Grazie ma:
"SOLUTION:
Update to version 9.2.8 or 9.3.4.
The vulnerability has also been fixed in version 9.4.0rc2."
Io ho la 9.4.1

Alessandro wrote:

HOPS!! scusa!!

 #8  0x080593b5 in main (argc=5, argv=0xb13dab24) at main.c:868
Mi hanno risposto dalla mailing list di bind.
Nel caso servisse a qualcuno, scrivo anche qui:
"
Upgrade:
2177.   [bug]           Array bounds overrun on read (rcodetext) at
debug level 10+. [RT #16798]
"
Io ho la 9.4.1 ed a quanto pare devo aggiornare alla 9.4.2

 Quindi bisogna rimanere così in attesa e pregare?
No, intendevo dire che è necessario raccogliere più dati! :^)
bye!