PREMESSA

Ormai è arcinoto a tutti che Windows ha una cache locale per i nomi DNS, normalmente governabile attraverso i classici comandi ipconfig /displaydns e ipconfig /flushdns: quello che forse è un po' meno chiaro è che anche ISA (200/2004 e 2006) ha una propria cache DNS per i Firewall Client e Web Proxy Client

LA RISOLUZIONE DEI NOMI CON ISA

La documentazione ufficiale di ISA distingue i client i 3 tipologie diverse:

  • Web proxy: client che hanno configurato nel loro browser ISA server come proxy e che dunque possono utilizzare solo i protocolli "standard" di un browser (HTTP, HTTPS e FTP in solo download)
  • Firewall client: tutte quelle postazioni del dominio dove è stato montato il client di ISA che possono quindi usare, in maniera "autenticata" tutti i possibili protocolli TCP/UDP (previa ovviamente autorizzazione di ISA).
  • SecureNAT, ovvero postazioni che usano ISA come default gateway verso Internet senza però nessun tipo di controllo sull'utente che richiede una connessione (in pratica ISA fa un semplice NAT).

A questo punto sorge il dubbio di capire CHI risolve i nomi DNS per i client in base alla loro tipologia:

  • Nel caso del Web Proxy, a risolvere i nomi è ISA stesso in quanto il client si limita a chiedere alla componente Proxy di ISA di fare il "retrieve" della pagina desiderata da Internet; di conseguenza è ISA che deve trovare l'IP pubblico da contattare
  • Analogamente, nel caso dei firewall client, la risoluzione dei nomi viene fatta da ISA per tutti quei domini che non sono stati marcati come "interni" nella configurazione di ISA stesso (normalmente ci vengono messi i domini AD in moco che il client vada "diretto" sui DNS di Active Directory per le risoluzioni interne, ma chieda ad ISA - attraverso la componente Firewall Client - la risoluzione di tutto ciò che non è interno)
  • Al contrario dei precedenti, i client SecureNAT, comportandosi appunto in maniera completamente indipendente da ISA, dovranno risolversi i nomi DNS per conto loro (magari chiedendolo al l'unico DNS che hanno, quello di AD, che dovrà essere quindi in grado di risolvere nomi esterni).

LA CACHE DNS

Sulla base di quanto visto precedentemente, appare chiaro che ISA possa essere "incaricato" in due casi di risolvere un nome FQDN: quando ISA deve risolvere un nome per il servizio "firewall" o per il servizio "web proxy", tale risoluzione va a finire in una cache DNS gestita da ISA stesso (ed in particolare dal microsoft Firewall per la versione 2004 e 2006), cache che è completamente separata (addirittura ridondata) da quella del sistema operativo Windows.

I parametri interessanti di questa cache sono riportati nello specchietto sottostante:

Parametro ISA 2000 ISA 2004/2006
TTL dei record 6 ore TTL del record ricevuto dal DNS
TTL dei record non risolti (detto negative TTL) 6 ore 5 minuti
Dimensione della cache 3000 elementi 10000 elementi

Quando quindi si sospetta un problema di cache DNS su ISA, un semplice ipconfig non basta a risolvere il problema: per essere sicuri è necessario svuotare anche la cache DNS di ISA, operazione che può essere semplicemente fatta riavviando i servizi di ISA stesso. Qualora il riavvio non fosse possibile (leggi: gli utenti ti saltano al collo se ci provi), è possibile utilizzare (ma solo per le versioni 2004/2006) un tool di microsoft (chiamato DNSToolsPack), scaricabile gratuitamente, che non solo mostra il contenuto della cache ma consente anche di rimuovere uno specifico record.

Ci sono due cose interessanti da notare nella tabella precedente: la prima è che ISA2000 si comportava in maniera a dir poco maleducata, dato che se ne infischiava del TTL del record (che invece è quello che conta) e teneva i memoria i dati per 6 ore, con conseguenti grossi problemi in caso di record DNS che cambiano velocemente.

Al contrario, ISA2004/2006 ubbidisce al DNS tenendosi i dati in cache per il tempo indicato nel TTL del record stesso nel DNS: di per sà questa è una ottima notizia, ma occorre prestare attenzione quando si modificano i record sul DNS dato che questa modifica probabilmente richiederà un giorno (valore predefinito di TTL per moolti server)per essere vista da ISA che invece si è cachato il record vecchio.

In conclusione. quando sospettate un problema con i nomi, ricordatevi che anche ISA ha un proprio reporistory che potrebbe contenere informazioni assolutamente errate.

LE "PAROLE CHIAVE"

Per capire come eventualmente modificare il comportamento di questa cache, vi suggerisco di cercare su S. Google i seguenti termini:

  • DnsCacheSize

Nel sito MSDN (ma anche nell'SDK di ISA presene nel CD) trovate degli esempi su come lavorare. Se invece vi interessa solo fare operazioni di base,  il già citato DNSToolsPack fa sicuramente al caso vostro.