Il firewall Mountain Lion rallenta casualmente le richieste DNS

5

Recentemente ho riscontrato alcuni ritardi durante la risoluzione degli host DNS su OS X 10.8. Per testarlo ho iniziato un semplice script che tenta di risolvere ripetutamente lo stesso hostname 20 volte:

#!/bin/sh
for i in 'seq 20'; do
    time -p dig www.google.com @8.8.8.8 | grep "^;; Query time:"
done

La maggior parte delle richieste richiede all'incirca la stessa latenza del server dei nomi:

;; Query time: 49 msec
real 0.05

Tuttavia, non appena attivo il firewall in Mountain Lion (tutte le richieste in arrivo sono consentite, la modalità invisibile è non abilitata), alcuni delle richieste di dig impiegano esattamente 5 secondi più la latenza al server dei nomi:

;; Query time: 25 msec
real 5.03

La maggior parte delle richieste è ancora veloce, ma circa ogni 10-15 richieste ha un ritardo di esattamente 5 secondi anche se dig riporta ancora un breve tempo di interrogazione. Non fa alcuna differenza se uso dig o host per il test, o se utilizzo un server DNS locale o pubblico come nell'esempio sopra. Quando il firewall è spento, il ritardo non si verifica mai.

Il firewall di OS X impone un qualche tipo di limitazione della velocità per le richieste, o c'è qualcos'altro che mi manca?

    
posta skrause 01.02.2013 - 12:14
fonte

1 risposta

1

Hai ragione. Diagnostico lo stesso limite di frequenza a livello di firewall su MacOS X 10.7.4 (Lion).

Inoltre, se guardi

/usr/bin/sudo tcpdump -i en0 udp port 53

Noterai che il tempo di andata e ritorno per ottenere una risposta da 8.8.8.8 è molto più basso dei 40 msec visualizzati dal server.

Durante una lunga prova ho avuto:

;; Query time: 44 msec

e un tempo medio di andata e ritorno di 26 msec:

09:36:14.360564 IP me.53866 > google-public-dns-a.google.com.domain: 9943+ A? www.google.com. (32)
09:36:14.386302 IP google-public-dns-a.google.com.domain > me.53866: 9943 5/0/0 A 173.194.41.180, A 173.194.41.178, A 173.194.41.176, A 173.194.41.177, A 173.194.41.179 (112)

(386302 - 360564 = 26 msec)

Per comprendere questo meccanismo di protezione (rispetto al DOS di base), cerca a:

/usr/bin/sudo pfctl -i en0 -s timeouts

La documentazione completa di questo comando complesso è pfctl (8 ) Manuale di riferimento Mountain Lion

Attenzione, questo è un comando potente ma estremamente pericoloso. Potresti facilmente interrompere l'accesso alla tua rete (Dov'è il mio backup?).

    
risposta data 01.08.2013 - 10:28
fonte

Leggi altre domande sui tag