DNS-Pause (mehrere scheiternde Abfragen)

30/12/2011 - 02:05 von Hauke Laging | Report spam
Moin,

wenn ich meinen Rechner an ein anderes LAN hànge, dauern alle DNS-Abfragen
"ewig" (ca. fünf Sekunden). Ich verwende Googles DNS (8.8.8.8).

Ich habe lynx mal durch strace laufen lassen, da stellt sich das so dar:

[...]
03:37:31.050751 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) =
3
03:37:31.051571 connect(3, {sa_family¯_FILE, path="/var/run/nscd/socket"},
110) = 0
03:37:31.052347 sendto(3, "\2\0\0\0\16\0\0\0\22\0\0\0www.heise.de\0", 30,
MSG_NOSIGNAL, NULL, 0) = 30
03:37:31.053309 poll([{fd=3, events=POLLIN|POLLERR|POLLHUP}], 1, 5000) = 0
(Timeout)
03:37:36.058978 close(3) = 0
[...]

Mit anderen Worten: lynx versucht mit nscd zu sprechen, bekommt aber keine
Antwort. Das wiederum liegt offenbar daran:

[nscd belauscht]
[...]
03:44:32.434578 socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3
03:44:32.434789 connect(3, {sa_family¯_INET, sin_port=htons(53),
sin_addr=inet_addr("8.8.8.8")}, 28) = 0
03:44:32.435138 poll([{fd=3, events=POLLOUT}], 1, 0) = 1 ([{fd=3,
revents=POLLOUT}])
03:44:32.435516 sendto(3,
"\251\5\1\0\0\1\0\0\0\0\0\0\3www\5heise\2de\0\0\1\0\1", 30, MSG_NOSIGNAL,
NULL, 0) = 30
03:44:32.435835 poll([{fd=3, events=POLLIN|POLLOUT}], 1, 5000) = 1 ([{fd=3,
revents=POLLOUT}])
03:44:32.436062 sendto(3,
"3-\1\0\0\1\0\0\0\0\0\0\3www\5heise\2de\0\0\34\0\1", 30, MSG_NOSIGNAL, NULL,
0) = 30
03:44:32.436331 poll([{fd=3, events=POLLIN}], 1, 4998) = 1 ([{fd=3,
revents=POLLIN}])
03:44:32.485172 ioctl(3, FIONREAD, [46]) = 0
03:44:32.485405 recvfrom(3,
"\251\5\201\200\0\1\0\1\0\0\0\0\3www\5heise\2de\0\0\1\0\1\300\f"..., 2048,
0, {sa_family¯_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")},
[16]) = 46
03:44:32.485753 poll([{fd=3, events=POLLIN}], 1, 4949 <unfinished ...>
03:44:34.331397 <... poll resumed> ) = 1 ([{fd=3, revents=POLLIN}])
[...]

In der drittletzten Zeile bekommt er die Antwort vom Google-DNS (OK, ich
gehe einfach mal davon aus, dass "\251\5\201\200..." eine gültige Antwort
ist), schert sich nicht darum und wartet dann zwei Sekunden weiter, bis zum
Timeout(?).

lynx holt sich die IP dann selber vom Google-DNS bzw. versucht es:

[...]
03:37:36.095739 socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3
03:37:36.096369 connect(3, {sa_family¯_INET, sin_port=htons(53),
sin_addr=inet_addr("8.8.8.8")}, 28) = 0
03:37:36.096849 poll([{fd=3, events=POLLOUT}], 1, 0) = 1 ([{fd=3,
revents=POLLOUT}])
03:37:36.097305 sendto(3, "\f{\1\0\0\1\0\0\0\0\0\0\3wwwheise\2de\0\0"...,
35, MSG_NOSIGNAL, NULL, 0) = 35
03:37:36.097787 poll([{fd=3, events=POLLIN|POLLOUT}], 1, 5000) = 1 ([{fd=3,
revents=POLLOUT}])
03:37:36.098378 sendto(3, "FT\1\0\0\1\0\0\0\0\0\0\3wwwheise\2de\0\0"...,
35, MSG_NOSIGNAL, NULL, 0) = 35
03:37:36.098715 poll([{fd=3, events=POLLIN}], 1, 4998) = 1 ([{fd=3,
revents=POLLIN}])
03:37:36.148117 ioctl(3, FIONREAD, [51]) = 0
03:37:36.154335 recvfrom(3,
"\f{\201\200\0\1\0\1\0\0\0\0\3wwwheise\2de\0\0"..., 2048, 0,
{sa_family¯_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")},
[16]) = 51
03:37:36.155643 poll([{fd=3, events=POLLIN}], 1, 4941) = 0 (Timeout)
03:37:41.102296 poll([{fd=3, events=POLLOUT}], 1, 0) = 1 ([{fd=3,
revents=POLLOUT}])
[...]

Ganz àhnliches Problem offenbar. Im nàchsten Anlauf klappt es dann:

[...]
03:37:41.102635 sendto(3, "\f{\1\0\0\1\0\0\0\0\0\0\3wwwheise\2de\0\0"...,
35, MSG_NOSIGNAL, NULL, 0) = 35
03:37:41.103053 poll([{fd=3, events=POLLIN}], 1, 5000) = 1 ([{fd=3,
revents=POLLIN}])
03:37:41.153134 ioctl(3, FIONREAD, [51]) = 0
03:37:41.153593 recvfrom(3,
"\f{\201\200\0\1\0\1\0\0\0\0\3wwwheise\2de\0\0"..., 2048, 0,
{sa_family¯_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")},
[16]) = 51
03:37:41.154463 poll([{fd=3, events=POLLOUT}], 1, 4947) = 1 ([{fd=3,
revents=POLLOUT}])
03:37:41.154919 sendto(3, "FT\1\0\0\1\0\0\0\0\0\0\3wwwheise\2de\0\0"...,
35, MSG_NOSIGNAL, NULL, 0) = 35
03:37:41.155502 poll([{fd=3, events=POLLIN}], 1, 4946) = 1 ([{fd=3,
revents=POLLIN}])
03:37:41.208733 ioctl(3, FIONREAD, [93]) = 0
03:37:41.209070 recvfrom(3,
"FT\201\200\0\1\0\0\0\1\0\0\3wwwheise\2de\0\0"..., 1997, 0,
{sa_family¯_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")},
[16]) = 93
03:37:41.209538 close(3) = 0
[...]

Es erscheint mir total unsinnig, dass so ein Problem dadurch ausgelöst wird,
dass sich die Adresse von 192.168.x.y auf 192.168.a.b àndert. Die anderen
Linuxrechner hier haben das Problem natürlich nicht...


X-Post & F'up2 dcoulm


CU

Hauke
http://www.hauke-laging.de/ideen/
D44C 6A5B 71B0 427C CED3 025C BD7D 6D27 ECCB 5814
 

Lesen sie die antworten

#1 Sven Hartge
30/12/2011 - 02:25 | Warnen spam
Hauke Laging wrote:

Ich habe lynx mal durch strace laufen lassen, da stellt sich das so dar:

[...]
03:37:31.050751 socket(PF_FILE, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) =
3
03:37:31.051571 connect(3, {sa_family¯_FILE, path="/var/run/nscd/socket"},
110) = 0
03:37:31.052347 sendto(3, "\2\0\0\0\16\0\0\0\22\0\0\0www.heise.de\0", 30,
MSG_NOSIGNAL, NULL, 0) = 30
03:37:31.053309 poll([{fd=3, events=POLLIN|POLLERR|POLLHUP}], 1, 5000) = 0
(Timeout)
03:37:36.058978 close(3) = 0
[...]

Mit anderen Worten: lynx versucht mit nscd zu sprechen, bekommt aber keine
Antwort.



Warum hast du nscd überhaupt installiert? Den braucht man nur, wenn man
das System z.B. am NIS oder LDAP hàngen hat.

nscd ist für Host-Abfragen grundsàtzlich kaputt und sollte gemieden
werden, wie der Teufel das Weihwasser meidet.



Sigmentation fault. Core dumped.

Ähnliche fragen