Walter Hofmann wrote: > First, to answer your questions: > > - ping is netkit-ping 0.10-10.3. > - a full strace of the failing ping (as root) is below > > My own theory: > > - It is not a problem with ping, other programs fail as well. > - It fails after trying to send to 224.0.0.251. This is a multicast > address. My name server is at 127.0.0.1. So it is not the usual > UDP packet to the name server, but one by libnss-mdns. > - The sendmsg call probably fails because of some firewall rule which > prohibits multicast UDP. > - Instead of failing this attempt and continuing with the usual "dns" > method the whole name resolution process fails -- this is the bug.
Part of the problem is that your /etc/resolv.conf has "search local". This means that every dns lookup is first tried in the "local" domain, so it's trying to look up google.com.local. If I configure my system the same, with "search local" and avahi disabled, I can get similar results: connect(4, {sa_family=AF_FILE, path="/var/run/avahi-daemon/socket"}, 110) = -1 ENOENT (No such file or directory) ... open("/etc/resolv.conf", O_RDONLY) = 5 fstat64(5, {st_mode=S_IFREG|0644, st_size=36, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fad000 read(5, "search local\nnameserver 192.168."..., 4096) = 36 read(5, "", 4096) = 0 close(5) = 0 munmap(0xb7fad000, 4096) = 0 open("/dev/urandom", O_RDONLY) = 5 read(5, "In", 2) = 2 close(5) = 0 ... sendmsg(4, {msg_name(16)={sa_family=AF_INET, sin_port=htons(5353), sin_addr=inet_addr("224.0.0.251")}, msg_iov(1)=[{"nI\0\0\0\1\0\0\0\0\0\0\3www\6google\3com\5loca"..., 38}], msg_controllen=24, {cmsg_len=24, cmsg _level=SOL_IP, cmsg_type=, ...}, msg_flags=0}, MSG_DONTROUTE) = 38 gettimeofday({1160855134, 926700}, NULL) = 0 recvmsg(4, 0xbfedc138, 0) = -1 EAGAIN (Resource temporarily unavailable) gettimeofday({1160855134, 926857}, NULL) = 0 select(5, [4], NULL, NULL, {0, 999843}) = 0 (Timeout) close(4) = 0 write(2, "ping: unknown host www.google.co"..., 34) = 34 exit_group(2) = ? If I enable avahi, it still fails, although differently: connect(4, {sa_family=AF_FILE, path="/var/run/avahi-daemon/socket"}, 110) = 0 fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR) fstat64(4, {st_mode=S_IFSOCK|0777, st_size=0, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fd4000 _llseek(4, 0, 0xbf9dab10, SEEK_CUR) = -1 ESPIPE (Illegal seek) write(4, "RESOLVE-HOSTNAME-IPV4 www.google"..., 43) = 43 read(4, "-15 Timeout reached\n", 1024) = 20 close(4) = 0 munmap(0xb7fd4000, 4096) = 0 write(2, "ping: unknown host www.google.co"..., 34ping: unknown host www.google.com Could nss-mdns be changed to check for a resolv.conf with "search local" and somehow avoid all the unnecessary mdns queries for every (!!) dns lookup that are entailed? Or maybe it could return immediately for domains like google.com.local while doing its thing for foo.local? (I'd like to be able to put "search local" in my resolv.conf, for networks that don't have any other dns than mdns, so it seems like a legitimate thing to want to do.) -- see shy jo
execve("/bin/ping", ["ping", "www.google.com"], [/* 42 vars */]) = 0 uname({sys="Linux", node="kodama", ...}) = 0 brk(0) = 0x805d000 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f47000 access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=90581, ...}) = 0 mmap2(NULL, 90581, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f30000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240O\1"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=1241580, ...}) = 0 mmap2(NULL, 1247388, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dff000 mmap2(0xb7f26000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x127) = 0xb7f26000 mmap2(0xb7f2d000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7f2d000 close(3) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dfe000 mprotect(0xb7f26000, 20480, PROT_READ) = 0 set_thread_area({entry_number:-1 -> 6, base_addr:0xb7dfe8e0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0 munmap(0xb7f30000, 90581) = 0 getuid32() = 0 brk(0) = 0x805d000 brk(0x807e000) = 0x807e000 open("/etc/nsswitch.conf", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=503, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f46000 read(3, "# /etc/nsswitch.conf\n#\n# Example"..., 4096) = 503 read(3, "", 4096) = 0 close(3) = 0 munmap(0xb7f46000, 4096) = 0 open("/etc/ld.so.cache", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=90581, ...}) = 0 mmap2(NULL, 90581, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7f30000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/usr/lib/libnss_db.so.2", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\21\0"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=16540, ...}) = 0 mmap2(NULL, 19820, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7df9000 mmap2(0xb7dfd000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xb7dfd000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/tls/i686/cmov/libnss_files.so.2", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200\33"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=38372, ...}) = 0 mmap2(NULL, 41620, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7dee000 mmap2(0xb7df7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8) = 0xb7df7000 close(3) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/usr/lib/libdb-4.3.so", O_RDONLY) = 3 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\220o\1"..., 512) = 512 fstat64(3, {st_mode=S_IFREG|0644, st_size=928628, ...}) = 0 mmap2(NULL, 932188, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7d0a000 mmap2(0xb7deb000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe0) = 0xb7deb000 close(3) = 0 munmap(0xb7f30000, 90581) = 0 open("/etc/mtab", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0644, st_size=720, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f46000 read(3, "/dev/hda1 / ext3 rw,user_xattr,e"..., 4096) = 720 close(3) = 0 munmap(0xb7f46000, 4096) = 0 open("/proc/stat", O_RDONLY) = 3 fstat64(3, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f46000 read(3, "cpu 1380328 6194 134437 9768600"..., 1024) = 722 read(3, "", 1024) = 0 close(3) = 0 munmap(0xb7f46000, 4096) = 0 open("/var/lib/misc/protocols.db", O_RDWR|O_LARGEFILE) = -1 ENOENT (No such file or directory) open("/var/lib/misc/protocols.db", O_RDWR|O_LARGEFILE) = -1 ENOENT (No such file or directory) open("/var/lib/misc/protocols.db", O_RDWR|O_LARGEFILE) = -1 ENOENT (No such file or directory) stat64("/var/lib/misc/protocols.db", 0xbfdf07a8) = -1 ENOENT (No such file or directory) open("/etc/protocols", O_RDONLY) = 3 fcntl64(3, F_GETFD) = 0 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 fstat64(3, {st_mode=S_IFREG|0644, st_size=2478, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f46000 read(3, "# Internet (IP) protocols\n#\n# Up"..., 4096) = 2478 close(3) = 0 munmap(0xb7f46000, 4096) = 0 socket(PF_INET, SOCK_RAW, IPPROTO_ICMP) = 3 getuid32() = 0 setuid32(0) = 0 gettimeofday({1160853787, 365230}, NULL) = 0 getpid() = 9238 open("/etc/resolv.conf", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=42, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f46000 read(4, "search kitenet.net\nnameserver 19"..., 4096) = 42 read(4, "", 4096) = 0 close(4) = 0 munmap(0xb7f46000, 4096) = 0 socket(PF_FILE, SOCK_STREAM, 0) = 4 fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR) fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) close(4) = 0 socket(PF_FILE, SOCK_STREAM, 0) = 4 fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR) fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 connect(4, {sa_family=AF_FILE, path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory) close(4) = 0 open("/etc/host.conf", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=9, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f46000 read(4, "multi on\n", 4096) = 9 read(4, "", 4096) = 0 close(4) = 0 munmap(0xb7f46000, 4096) = 0 open("/etc/hosts", O_RDONLY) = 4 fcntl64(4, F_GETFD) = 0 fcntl64(4, F_SETFD, FD_CLOEXEC) = 0 fstat64(4, {st_mode=S_IFREG|0644, st_size=750, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f46000 read(4, "127.0.0.1\tkodama.kitenet.net loc"..., 4096) = 750 read(4, "", 4096) = 0 close(4) = 0 munmap(0xb7f46000, 4096) = 0 open("/etc/ld.so.cache", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=90581, ...}) = 0 mmap2(NULL, 90581, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7f30000 close(4) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/usr/lib/libnss_mdns4_minimal.so.2", O_RDONLY) = 4 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\26"..., 512) = 512 fstat64(4, {st_mode=S_IFREG|0644, st_size=22164, ...}) = 0 mmap2(NULL, 21024, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0xb7d04000 mmap2(0xb7d09000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x5) = 0xb7d09000 close(4) = 0 munmap(0xb7f30000, 90581) = 0 open("/etc/resolv.conf", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=42, ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f46000 read(4, "search kitenet.net\nnameserver 19"..., 4096) = 42 read(4, "", 4096) = 0 close(4) = 0 munmap(0xb7f46000, 4096) = 0 open("/etc/ld.so.cache", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=90581, ...}) = 0 mmap2(NULL, 90581, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7f30000 close(4) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/tls/i686/cmov/libnss_dns.so.2", O_RDONLY) = 4 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\r\0"..., 512) = 512 fstat64(4, {st_mode=S_IFREG|0644, st_size=17840, ...}) = 0 mmap2(NULL, 20616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0xb7cfe000 mmap2(0xb7d02000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x3) = 0xb7d02000 close(4) = 0 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory) open("/lib/tls/i686/cmov/libresolv.so.2", O_RDONLY) = 4 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\200$\0"..., 512) = 512 fstat64(4, {st_mode=S_IFREG|0644, st_size=67364, ...}) = 0 mmap2(NULL, 75976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0xb7ceb000 mmap2(0xb7cfa000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0xf) = 0xb7cfa000 mmap2(0xb7cfc000, 6344, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7cfc000 close(4) = 0 munmap(0xb7f30000, 90581) = 0 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4 connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.1")}, 28) = 0 fcntl64(4, F_GETFL) = 0x2 (flags O_RDWR) fcntl64(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0 gettimeofday({1160853787, 371328}, NULL) = 0 poll([{fd=4, events=POLLOUT, revents=POLLOUT}], 1, 0) = 1 send(4, "\217\243\1\0\0\1\0\0\0\0\0\0\3www\6google\3com\0\0\1\0"..., 32, 0) = 32 poll([{fd=4, events=POLLIN, revents=POLLIN}], 1, 5000) = 1 ioctl(4, FIONREAD, [94]) = 0 recvfrom(4, "\217\243\201\200\0\1\0\3\0\0\0\0\3www\6google\3com\0\0"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("192.168.1.1")}, [16]) = 94 close(4) = 0 setsockopt(3, SOL_SOCKET, SO_BROADCAST, [1], 4) = 0 setsockopt(3, SOL_SOCKET, SO_RCVBUF, [49152], 4) = 0 fstat64(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 7), ...}) = 0 mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7f46000 write(1, "PING www.l.google.com (64.233.17"..., 53) = 53 rt_sigaction(SIGINT, {0x80492b0, [INT], SA_RESTART}, {SIG_DFL}, 8) = 0 rt_sigaction(SIGALRM, {0x8048f60, [ALRM], SA_RESTART}, {SIG_DFL}, 8) = 0 gettimeofday({1160853787, 375560}, NULL) = 0 sendto(3, "\10\0\275~\26$\0\0E19\33\0\5\273\10\10\t\n\v\f\r\16\17"..., 64, 0, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("64.233.179.99")}, 16) = 64 rt_sigaction(SIGALRM, {0x8048f60, [ALRM], SA_RESTART}, {0x8048f60, [ALRM], SA_RESTART}, 8) = 0 alarm(1) = 0 recvfrom(3, "[EMAIL PROTECTED]@\351\263c\300\250\1\2\0\0\305"..., 192, 0, {sa_family=AF_INET, sin_port=htons(0), sin_addr=inet_addr("64.233.179.99")}, [16]) = 84 gettimeofday({1160853787, 412290}, NULL) = 0 write(1, "64 bytes from 64.233.179.99: icm"..., 61) = 61 recvfrom(3, 0x805f288, 192, 0, 0xbfdf0df4, 0xbfdf0e1c) = ? ERESTARTSYS (To be restarted) --- SIGINT (Interrupt) @ 0 (0) --- rt_sigaction(SIGINT, {SIG_IGN}, {0x80492b0, [INT], SA_RESTART}, 8) = 0 write(1, "\n", 1) = 1 write(1, "--- www.l.google.com ping statis"..., 41) = 41 write(1, "1 packets transmitted, 1 packets"..., 58) = 58 write(1, "round-trip min/avg/max = 36.7/36"..., 43) = 43 munmap(0xb7f46000, 4096) = 0 exit_group(0) = ?
signature.asc
Description: Digital signature