12 lug 2009

Souzioni a gran parte dei problemi di AirPort - mDNSResponder

Quando tutti noi mac-users ci apprestavamo a fare il grande passo da Tiger a Leopard, una delle aspettative più diffuse e più attese era la definitiva souzione di tutti i problemi delle schede AirPort. Ufficialmente, Apple, ha sempre dichiarato di aver risolto tutto dalla versione 10.5.0 di Mac OS e di aver quindi riportato gli aggiornamenti anche nelle versioni precedenti con i suoi pacchetti di sicurezza. Tutto ciò sarebbe degno di nota se almeno fosse vero; infatti gli stessissimi problemi che c'erano una volta continuano a presentarsi su Leopard 10.5.7 in modalità (fino a prova contraria) del tutto random. Oggi, per l'ultima volta ho dovuto risbattere la testa su tutta una serie di articoli ufficiali Apple per ricordarmi come risolvere la questione e ricordare, ancora una volta, quanto non fossero vere le dichiarazioni fatte all'avvento di Leopard. Questo, unito alla moltitudine di utenti che ho scoperto nella mia stessa situazione mentre (ri)cercavo la soluzione, è principalmente il motivo per cui ho deciso di aprire un post qui.

La cosa fondamentale è riuscire a interpretare i messaggi che Mac OS ci invia e che troviamo nel file system.log nella directory /var/log.
I messaggi di cui parlo, che fanno riferimento a questi problemi riguardanti le schede AirPort sono due:
  1. airportd[907]: Error: Apple80211Associate() failed -6
  2. mDNSResponder: Note: Frequent transitions for interface en1 (192.168.2.4); network traffic reduction measures in effect

Tutte le varianti riconducibili a queste due tipologie di problemi ho notato essere risolvibili in un unico modo: epurando il male alla radice!
In tutti i casi in cui mi si è presentato il problema, questo faceva sempre riferimento esclusivamente al modulo mDNSResponder. Andando a cercare sulla documentazione di Developer Connection di Apple si capisce che si tratta di un demone che mantiene attivi alcuni servizi come il Multicast DNS e DNS Service Discovery. Facendo una serie di ricerche più approfondite, ci si rende conto che questi servizi vengono utilizzati per l'implementazione di Bonjour, una applicazione davvero degna di nota creata da Apple per rendere la configurazione di una rete a prova di utonto.
A questo punto, considerato che gli utenti a cui si presentano quest problemi hanno delle reti già belle e configurate, unito alla questione che Apple ha dichiarato risolti i problemi relativi alle schede AirPort, pertanto non se ne prevede un aggiornamento almeno fino all'uscita di Snow Leopard (ammesso e non concesso!?) ho pensato che la cosa migliore per sbrogliare la matassa sarebbe stata disattivare questo benedetto servizio e indovinate un pò... ha funzionato!
Dalla nota del Security Update 2007-005 di Apple ho anche scoperto che la falla rende(va...) il sistema completamente vulnerabile a causa di una vulnerabilità di overflow del buffer nel servizio che mappa le porte per i gateway NAT, riporto qui l'estratto:
mDNSResponder

CVE-ID: CVE-2007-2386

Available for: Mac OS X v10.4.9, Mac OS X Server v10.4.9

A remote attacker may be able to cause a denial of service or arbitrary code execution

Description: A buffer overflow vulnerability exists in the UPnP IGD (Internet Gateway Device Standardized Device Control Protocol) code used to create Port Mappings on home NAT gateways in the OS X mDNSResponder implementation. By sending a maliciously crafted packet, a remote attacker can trigger the overflow which may lead to an unexpected application termination or arbitrary code execution. This update addresses the issue by performing additional validation when processing UPnP protocol packets. This issue does not affect systems prior to Mac OS X v10.4. Credit to Michael Lynn of Juniper Networks for reporting this issue.

Bando alle ciance veniamo alla pratica, per disattivare temporaneamente (si riavvia automaticamente al login) mDNSResponder dobbiamo aprire Terminale e digitare quanto segue:
launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
Disattivare mDNSResponder è quanto basta a resettare il presunto buffer overflow causa dei nostri mali, pertanto, se proprio abbiamo bisogno di questo servizio possiamo riabilitarlo con il comando inverso:
launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
Per chi invece preferisce disattivarlo o attivarlo in maniera definitiva (il suo stato non verrà modificato dopo il riavvio) basterà aggiungere l'opzione -w standard per tutti i file plist in questo modo:
launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
A questo punto non vi resta che attendere (con ansia!?) il prossimo stallo della vostra AirPort. Buona fortuna!

4 commenti:

Anonimo ha detto...

Ciao, mi potresti dire in pratica cos'era il problema della airport? Non si connetteva al modem/router o cosa? Come si manifestava lo stallo, come lo vedevi?

grazie

chitebbeiv ha detto...

ciao, il problema si presentava con disconnessione del mac dal router e impossibilità di riconnessione unita a non riconoscimento delle impostazioni sulle connessioni preferite. in seguito a questi "sintomi" potevo leggere quei messaggi di errore tra le righe del system.log. in ogni caso, dall'aggiornamento a 10.5.8 sembra essere tornato tutto a posto come i vecchi tempi, almeno nel mio caso...

Anonimo ha detto...

Grazie per la risposta
Ho provato ad usare il comando, ma mi dice "error unloading"... (10.5.8)

Nota bene: il router mi si disconnette continuamente, ma non solo a me, anche ad altre persone nella LAN, con computer Windows, quindi perché sarebbe colpa della mia airport?

chitebbeiv ha detto...

ma ti ho già spiegato nella risposta precedente che il problema di mDNSResponder riguarda le disconnessioni del mac dal router non del router dalla rete...
nel tuo caso il problema è da ricercare nel router o direttamente al ISP, la tua airport non centra nulla!