Mystik omkring localhost

From: Kristian M (none@kristian--struer.net.lh.bsd-dk.dk)
Date: Thu 05 Jan 2006 - 12:47:07 CET


Date: Thu, 5 Jan 2006 12:47:07 +0100
From: Kristian M <none@kristian--struer.net.lh.bsd-dk.dk>
To: bsd-dk@bsd-dk.dk
Subject: Mystik omkring localhost

Halløjsa!

Jeg sidder her og roder med en bind dns server.

Problemet er at jeg fra alle mulige andre maskiner kan lave dns requests til den, hvor den svare med det samme, lynhurtigt. Men hvis jeg laver samme request fra localhost på den (altså endten direkte på maskinen eller over en ssh) så kan den slet ikke få fat i localhost.

I min named.conf har jeg disse to:

        listen-on { 10.0.1.121; };
        listen-on { 127.0.0.1; };

For at sikre mig at den både vil svare på localhost adressen og på dens netkort ip adresse.

Lad os tage to eksempler:

Named bliver startet sådan her named -u bind -t /var/named -g -d 3 (de sidste g og d for at give mig noget output og i debug level 3)

Her prøver jeg at slå ip adressen op på google.com med programmet host, fra en linux maskine (som dermed ikke er localhost):

fas@hardcoretux etc $ host -v google.com 10.0.1.121
Trying "google.com"
Using domain server:
Name: 10.0.1.121
Address: 10.0.1.121#53
Aliases:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49665
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 0

;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 300 IN A 64.233.187.99
google.com. 300 IN A 72.14.207.99

;; AUTHORITY SECTION:
google.com. 345600 IN NS ns1.google.com.
google.com. 345600 IN NS ns2.google.com.
google.com. 345600 IN NS ns3.google.com.
google.com. 345600 IN NS ns4.google.com.

Received 132 bytes from 10.0.1.121#53 in 107 ms

Så prøver jeg fra selve maskinen selv:

ns11# host -v google.com 127.0.0.1
Trying "google.com"
;; connection timed out; no servers could be reached

Okay, lad os se hvad named selv siger af log:

da jeg kørte den første, altså fra min workstation skrev den:

05-Jan-2006 12:40:40.012 client 10.0.1.114#32807: UDP request
05-Jan-2006 12:40:40.012 client 10.0.1.114#32807: request is not signed
05-Jan-2006 12:40:40.012 client 10.0.1.114#32807: recursion available
05-Jan-2006 12:40:40.012 client 10.0.1.114#32807: query
05-Jan-2006 12:40:40.012 client 10.0.1.114#32807: query (cache) 'google.com/A/IN' approved
05-Jan-2006 12:40:40.012 client 10.0.1.114#32807: send
05-Jan-2006 12:40:40.012 client 10.0.1.114#32807: sendto
05-Jan-2006 12:40:40.012 client 10.0.1.114#32807: senddone
05-Jan-2006 12:40:40.012 client 10.0.1.114#32807: next
05-Jan-2006 12:40:40.012 client 10.0.1.114#32807: endrequest
05-Jan-2006 12:40:40.012 client @0x8215000: udprecv

det ses min workstations ip adresse er 10.0.1.114 og der fra virker det altid, og lynhurtigt.

Her kommer så hvad den skriver når jeg laver requestet fra localhost:

05-Jan-2006 12:41:27.885 client 127.0.0.1#55996: UDP request
05-Jan-2006 12:41:27.885 client 127.0.0.1#55996: request is not signed
05-Jan-2006 12:41:27.885 client 127.0.0.1#55996: recursion available
05-Jan-2006 12:41:27.885 client 127.0.0.1#55996: query
05-Jan-2006 12:41:27.885 client 127.0.0.1#55996: query (cache) 'google.com/A/IN' approved
05-Jan-2006 12:41:27.885 client 127.0.0.1#55996: send
05-Jan-2006 12:41:27.886 client 127.0.0.1#55996: sendto
05-Jan-2006 12:41:27.886 client 127.0.0.1#55996: senddone
05-Jan-2006 12:41:27.886 client 127.0.0.1#55996: next
05-Jan-2006 12:41:27.886 client 127.0.0.1#55996: endrequest
05-Jan-2006 12:41:27.886 client @0x823a800: udprecv

Umiddelbart fuldstændigt det samme, bortset fra ip adresserne (og så at host programmet siger den ikke kan få fat i serveren)

Nå men det ku jo tyde på at der muligvis er noget galt med lo0 den ser sådan her ud:

lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
        inet 127.0.0.1 netmask 0xff000000
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
Ser også ganske normalt ud vil jeg mene.

Så kommer der noget endnu mere mystisk, jeg kan ikke pinge localhost, fra maskinen selv, heller ikke hvis jeg bruger 127.0.0.1. eller det vil sige, jo det kan jeg godt, men ~50% af pakkerne bliver tabt. det ses her:

--- localhost ping statistics ---
417 packets transmitted, 210 packets received, 49% packet loss
round-trip min/avg/max/stddev = 0.019/0.022/0.063/0.005 ms

Jeg tror selv der er noget galt med det her localhost halløj, jeg aner bare ikke hvordan jeg kan finde frem til noget om hvordan og hvorledes.

Det skal siges at det er en custom kernel jeg selv har brygget, plus det er world blevet recompilet med nogle få optimeringer til xeon cpuen, jeg kan dog næsten ikke forstille mig det skulle have noget med det at gøre, når nu det virker perfekt så længe det bare er på netkortet og ikke lokalt.

Mit spørgsmål er vel, hvordan kan jeg finde ud af hvad der er galt? jeg er løbet tør for idéer nu.

Med Venlig Hilsen
Kristian Mide Andersen



This archive was generated by hypermail 2b30 : Wed 15 Nov 2006 - 18:24:55 CET