J'ai pu refuser toutes les connexions aux réseaux externes à moins que ma connexion OpenVPN ne soit active à l'aide de pf.conf. Cependant, je perds la connectivité Wi-Fi si la connexion est interrompue en fermant et en ouvrant le couvercle de l'ordinateur portable ou en activant et désactivant le Wi-Fi.
- Je suis sur Mac OS 10.8.1.
- Je me connecte au Web via le Wi-Fi (à partir de différents emplacements, y compris le Wi-Fi public).
- La connexion OpenVPN est configurée avec Viscosity.
J'ai les règles de filtrage de paquets suivantes configurées dans /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
Je démarre le service de filtrage de paquets avec sudo pfctl -e
et charge les nouvelles règles avec sudo pfctl -f /etc/pf.conf
.
J'ai également édité /System/Library/LaunchDaemons/com.apple.pfctl.plist
et changé la ligne <string>-f</string>
pour lire <string>-ef</string>
afin que le filtre de paquets se lance au démarrage du système.
Tout cela semble très bien au premier abord: les applications ne peuvent se connecter au Web que si la connexion OpenVPN est active, donc je ne fuis jamais de données sur une connexion non sécurisée.
Mais, si je ferme et rouvre le couvercle de mon ordinateur portable ou si je rallume et éteint le Wi-Fi, la connexion Wi-Fi est perdue et je vois un point d'exclamation dans l'icône Wi-Fi dans la barre d'état. Un clic sur l'icône Wi-Fi affiche un message "Alerte: pas de connexion Internet":
Pour rétablir la connexion, je dois déconnecter et reconnecter le Wi-Fi, parfois cinq ou six fois, avant que le message "Alerte: Aucune connexion Internet" ne disparaisse et que je puisse rouvrir la connexion VPN. D'autres fois, l'alerte Wi-Fi disparaît de lui-même, le point d'exclamation s'efface et je peux me reconnecter. Quoi qu'il en soit, il peut falloir cinq minutes ou plus pour rétablir une connexion, ce qui peut être frustrant.
La suppression de la ligne block all
résout le problème (mais autorise les connexions non sécurisées), il semble donc qu'il y ait un service que je bloque et dont Apple a besoin pour retrouver et confirmer une connexion Wi-Fi. J'ai essayé:
- Activation d'icmp en ajoutant
pass on $wifi proto icmp all
à pf.conf - Activation de la résolution DNS en ajoutant
pass on $wifi proto udp from $wifi to any port 53
- Essayer d'en savoir plus en enregistrant les paquets bloqués (en changeant
block all
enblock log all
), mais la journalisation semble être désactivée sous OS X, car fairesudo tcpdump -n -e -ttt -i pflog0
pour voir les résultats du journal dans "tcpdump: pflog0: Aucun périphérique de ce type n'existe".
Rien de tout cela ne permet de rétablir une connexion Wi-Fi plus rapidement.
Que puis-je faire d'autre pour déterminer quel service doit être disponible pour retrouver la connectivité Wi-Fi, ou quelle règle dois-je ajouter à pf.conf pour rendre les reconnexions Wi-Fi plus fiables?