Sono stato in grado di negare tutte le connessioni a reti esterne a meno che la mia connessione OpenVPN non sia attiva utilizzando pf.conf. Tuttavia, perdo la connettività Wi-Fi se la connessione viene interrotta chiudendo e aprendo il coperchio del laptop o disattivando e riaccendendo il Wi-Fi.
- Sono su Mac OS 10.8.1.
- Mi collego al Web tramite Wi-Fi (da varie posizioni, incluso il Wi-Fi pubblico).
- La connessione OpenVPN è impostata con Viscosità.
Ho impostato le seguenti regole di filtro pacchetti /etc/pf.conf
# Deny all packets unless they pass through the OpenVPN connection
wifi=en1
vpn=tun0
block all
set skip on lo
pass on $wifi proto udp to [OpenVPN server IP address] port 443
pass on $vpn
Inizio il servizio di filtro pacchetti con sudo pfctl -e
e carico le nuove regole sudo pfctl -f /etc/pf.conf
.
Ho anche modificato /System/Library/LaunchDaemons/com.apple.pfctl.plist
e modificato la riga <string>-f</string>
in <string>-ef</string>
modo che il filtro pacchetti venga avviato all'avvio del sistema.
Tutto sembra funzionare benissimo all'inizio: le applicazioni possono connettersi al Web solo se la connessione OpenVPN è attiva, quindi non sto mai perdendo dati su una connessione non sicura.
Ma, se chiudo e riapro il coperchio del laptop o spengo e riaccendo il Wi-Fi, la connessione Wi-Fi viene persa e vedo un punto esclamativo nell'icona Wi-Fi nella barra di stato. Facendo clic sull'icona Wi-Fi viene visualizzato il messaggio "Avviso: nessuna connessione a Internet":
Per riottenere la connessione, devo disconnettere e riconnettere il Wi-Fi, a volte cinque o sei volte, prima che scompaia il messaggio "Avviso: Nessuna connessione a Internet" e posso riaprire la connessione VPN. Altre volte, l'avviso Wi-Fi scompare da solo, il punto esclamativo si cancella e sono in grado di riconnettermi. In entrambi i casi, possono essere necessari cinque minuti o più per ottenere nuovamente una connessione, il che può essere frustrante.
La rimozione della linea block all
risolve il problema (ma consente connessioni non sicure), quindi sembra che ci sia un servizio che sto bloccando che Apple richiede per riconquistare e confermare una connessione Wi-Fi. Ho provato:
- Abilitare icmp aggiungendo
pass on $wifi proto icmp all
a pf.conf - Abilitazione della risoluzione DNS aggiungendo
pass on $wifi proto udp from $wifi to any port 53
- Sto cercando di saperne di più registrando i pacchetti bloccati (cambiando
block all
inblock log all
), ma la registrazione sembra essere disabilitata in OS X, perché facendosudo tcpdump -n -e -ttt -i pflog0
vedere i risultati del registro in "tcpdump: pflog0: non esiste un tale dispositivo".
Niente di tutto ciò aiuta a ristabilire una connessione Wi-Fi più velocemente.
Cos'altro posso fare per determinare quale servizio deve essere disponibile per riottenere la connettività Wi-Fi o quale regola devo aggiungere a pf.conf per rendere più affidabili le riconnessioni Wi-Fi?