Perché mai mi dovrebbe occorrere di dovere chiedere la mio Mac di fare un flushdns della sua cache?
Lavoro spesso con macchine virtuali e ancora molto più spesso capita di far il testing di macchine che nel futuro diventeranno quello che nel gergo si definiscono “production server”.
Per inciso un piccola spiegazione:
Dev Server – developers playground. test new tools and methodologies
Test Server – Clean environment to QA and test app/code
Production Server – Actual implementation in the enterprise.
Torniamo a noi, uno dei modi migliori, almeno per me, è quello di dotarli di un nome HOST reale e per far questo mi basta una modifica al file /etc/hosts .
I vantaggi di una operazione simile sono semplici da intuire:
- non si deve modificare il DNS di un nome a dominio;
- non vi neanche la necessità di registrare con troppo anticipo il nome a dominio;
- non c’è bisogno di avere una connessione internet attiva per fare i vari test.
Ad esempio se volessi dirigere il traffico relativo al nome di dominio www.example.com verso una mia macchina virtuale avente IP 10.211.55.33 mi basterebbe fare questo:
- editare il file /etc/hosts come root;
- inserire una riga con IP e nome Host.
Esempio, tanto per ridere un po’, da terminale digitate quanto segue e quando chiesto inserite la vostra password:
sudo echo "127.0.0.1 www.google.com" >> /etc/hosts
adesso provate a fare una ricerca con google.com dal vostro browser: impossibile tutto il traffico verso www.google.com è re-diretto verso il loopback device del vostro Mac rendendo di fatto irraggiungibile il più grosso motore di ricerca al mondo.
A questo punto ognuno di voi dovrebbe capire la potenza di uno strumento semplicissimo!
Bene probabilmente qualcuno riuscirebbe ancora a vedere la pagina di google per vari motivi e a causa di vari fattori.
Ecco per ovviare a tutto questo e rendere impossibile la visualizzazione dell pagina occorre forzare lo svuotamento della cache ( flushdns ) del DNS di Mac OSX. Per fare questo e accorciare i tempi basta dare da terminale il seguente comando:
dscacheutil -flushcache;sudo killall -HUP mDNSResponder
Il comando cui sopra è semplice da leggere non vi è nulla che io vi debba spiegare.
Io uso spesso questo comando e quindi devo semplificare il modo di richiamarlo nel mi terminale. Sfrutto la potenza degli alias della mia BASH. In Linux gli alias vanno inseriti semplicemente nel file ~/.bashrc ma in Mac OSX dobbiamo ricorrere al file ~/.bash_profile
Editate il vostro file, spesso nella vostra HOME non esiste neanche, e aggiungete la riga sotto, copiate e incollate:
alias flushdns='dscacheutil -flushcache;sudo killall -HUP mDNSResponder'
Ultimo passaggio, dire alla shell che qualcosa è cambiato; quindi potete:
- chiudere e riaprire il terminale;
- aggiungere questa nuova risorsa con il comando ” . ~/.bash_profile
Infatti una volta aggiunto il nostro alias ci basterà digitare in un terminale il seguente comando
flushdns
per avere l’esecuzione di quanto detto in precedenza.
Per vedere tutti gli alias impostati eventualmente nel vostro terminale vi basta richiamarli con il comando
alias
Fatto!
NOTA: non mi sono allungato a spiegare con quale editor di terminale modificare i file di cui sopra perché se state leggendo mi auguro che l’ameno questo lo sappiate fare 😉 . Io personalmente uso “vi” ma molti usano “nano”. A voi la scelta!!!