[Olug-list] Lokal DNS - timeout problemer

Nicolai Langfeldt janl at linpro.no
Wed, 03 Dec 2003 11:35:53 +0100


Morten Sickel wrote:
> Hei p=E5 dere!
> Jeg kj=F8rer et oppringt system med en del maskiner i nett hjemme. Nyli=
g gikk=20
> jeg over fra =E5 bruke /etc/hosts filer til =E5 kj=F8re en lokal DNS-se=
rver, som=20
> ogs=E5 fungerer som en cachende server mot internett. I mange henseende=
 funker=20
> dette kjempebra, men det er et problem som dukker opp fra tid til annen=
,=20
> spesielt med fetchmail: Tidligere sendte den en foresp=F8rsel til min I=
SPs DNS,=20
> s=E5 satt den der og ventet til den fikk et svar, hvilket ogs=E5 indike=
rte at=20
> linken var oppe, n=E5 derimot, skjer fra tid til annen et av to problem=
er:
> 1: min lokale DNS har lagret ipen til pop-serveren, fetchmail f=E5r den=
=20
> umiddelbart og timer ut mens den venter (ca 25 sek) p=E5 at linken skal=
 komme=20
> opp.
> 2: min lokale DNS har ikke lagret ipen, den sender ut en foresp=F8rsel,=
 men=20
> named timer ut f=F8r linken kommer opp og sender en melding tilbake til=
=20
> fetchmail om at den ikke finner serveren...
>=20
> Begge kan jo fikses med en kludge av typen:

Oppringt samband er st=F8rre kluge ;-)

> ping -c1 <popserver> &

Ta bort & s=E5 venter scriptet til ping er ferdig.  Da slipper du kanskje=
=20
ogs=E5 denne linjen:

> sleep 30

Men erlig talt s=E5 ville jeg sett om du kunne konfigurert en noe lenger =

timeout i fetchmail.  Dersom det tar 30-60 sekunder =E5 f=E5 opp linja s=E5=
 la=20
det v=E6re minst 90 sekunder timeout.

> fetchmail

echo quit | telnet <popserver> pop3

Kan ogs=E5 v=E6re en fin ting, det burde henge til forbindelsen er oppe o=
g=20
s=E5 slippe med en gang.  For =E5 hindre timeout p=E5 navneoppslag kan du=
=20
kluge litt med host:

while !host <popserver>; do sleep 1; done.

Men dersom du =E5pner scriptet med telnet kommandoen over s=E5 synes jeg =
at=20
scenarie #2 blir usannsynlig.  Du kan forresten ha telnet i loop p=E5=20
samme m=E5te som host.  Det blir noe slikt som

while sh -c "echo quit | telnet <popserver> pop3"; do sleep 1; done.

Telnet programmet mitt setter hvertfall exit status dersom navneoppslag=20
svikter.  Alt dette er selvf=F8lgelig utestet :-)

Nicolai