He podido denegar todas las conexiones a redes externas a menos que mi conexión OpenVPN esté activa usando pf.conf. Sin embargo, pierdo la conectividad Wi-Fi si la conexión se interrumpe al cerrar y abrir la tapa de la computadora portátil o al activar y desactivar Wi-Fi nuevamente.
- Estoy en Mac OS 10.8.1.
- Me conecto a la Web a través de Wi-Fi (desde diferentes lugares, incluido el Wi-Fi público).
- La conexión OpenVPN se configura con Viscosidad.
Tengo las siguientes reglas de filtro de paquetes configuradas en /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
Comienzo el servicio de filtro de paquetes con sudo pfctl -e
y cargo las nuevas reglas con sudo pfctl -f /etc/pf.conf
.
También he editado /System/Library/LaunchDaemons/com.apple.pfctl.plist
y cambiado la línea <string>-f</string>
para leer <string>-ef</string>
para que el filtro de paquetes se inicie al inicio del sistema.
Todo esto parece funcionar muy bien al principio: las aplicaciones solo pueden conectarse a la web si la conexión OpenVPN está activa, por lo que nunca pierdo datos a través de una conexión insegura.
Pero, si cierro y vuelvo a abrir la tapa de mi computadora portátil o apago y vuelvo a encender el Wi-Fi, la conexión Wi-Fi se pierde y veo un signo de exclamación en el icono de Wi-Fi en la barra de estado. Al hacer clic en el icono de Wi-Fi, aparece el mensaje "Alerta: sin conexión a Internet":
Para recuperar la conexión, tengo que desconectar y volver a conectar el wifi, a veces cinco o seis veces, antes de que desaparezca el mensaje "Alerta: Sin conexión a Internet" y pueda volver a abrir la conexión VPN. Otras veces, la alerta de Wi-Fi desaparece por sí sola, el signo de exclamación se borra y puedo volver a conectarme. De cualquier manera, puede tomar cinco minutos o más para volver a conectarse, lo cual puede ser frustrante.
Eliminar la línea block all
resuelve el problema (pero permite conexiones inseguras), por lo que parece que hay un servicio que estoy bloqueando que Apple requiere para recuperar y confirmar una conexión Wi-Fi. Yo he tratado:
- Habilitación
pass on $wifi proto icmp all
de icmp agregando a pf.conf - Habilitar la resolución DNS agregando
pass on $wifi proto udp from $wifi to any port 53
- Intentando aprender más registrando paquetes bloqueados (cambiando
block all
ablock log all
), pero el registro parece estar deshabilitado en OS X, porquesudo tcpdump -n -e -ttt -i pflog0
al ver los resultados del registro en "tcpdump: pflog0: No existe tal dispositivo".
Nada de esto ayuda a restablecer una conexión Wi-Fi más rápido.
¿Qué más puedo hacer para determinar qué servicio debe estar disponible para recuperar la conectividad Wi-Fi, o qué regla debo agregar a pf.conf para que las reconexiones Wi-Fi sean más confiables?