Consegui negar todas as conexões com redes externas, a menos que minha conexão OpenVPN esteja ativa usando o pf.conf. No entanto, perco a conectividade Wi-Fi se a conexão for interrompida fechando e abrindo a tampa do laptop ou alternando o Wi-Fi novamente.
- Estou no Mac OS 10.8.1.
- Eu me conecto à Web via Wi-Fi (de vários locais, incluindo Wi-Fi público).
- A conexão OpenVPN é configurada com viscosidade.
Eu tenho as seguintes regras de filtro de pacotes configuradas em /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
Inicio o serviço de filtro de pacotes sudo pfctl -e
e carrego as novas regras sudo pfctl -f /etc/pf.conf
.
Também editei /System/Library/LaunchDaemons/com.apple.pfctl.plist
e alterei a linha <string>-f</string>
para ler, <string>-ef</string>
para que o filtro de pacotes seja iniciado na inicialização do sistema.
Tudo isso parece funcionar muito bem no começo: os aplicativos só podem se conectar à Web se a conexão OpenVPN estiver ativa; portanto, nunca estou vazando dados por uma conexão insegura.
Mas, se eu fechar e reabrir a tampa do laptop ou desligar e ligar o Wi-Fi novamente, a conexão Wi-Fi será perdida e vejo um ponto de exclamação no ícone Wi-Fi na barra de status. Clicar no ícone Wi-Fi mostra a mensagem "Alerta: sem conexão à Internet":
Para recuperar a conexão, preciso desconectar e reconectar o Wi-Fi, às vezes cinco ou seis vezes, antes que a mensagem "Alerta: sem conexão à Internet" desapareça e eu possa abrir a conexão VPN novamente. Outras vezes, o alerta de Wi-Fi desaparece por conta própria, o ponto de exclamação é apagado e eu consigo me conectar novamente. De qualquer forma, pode levar cinco minutos ou mais para se conectar novamente, o que pode ser frustrante.
A remoção da linha block all
resolve o problema (mas permite conexões não seguras), pelo que parece que estou bloqueando um serviço que a Apple precisa para recuperar e confirmar uma conexão Wi-Fi. Eu tentei:
- Ativando o icmp adicionando
pass on $wifi proto icmp all
ao pf.conf - Habilitando a resolução DNS adicionando
pass on $wifi proto udp from $wifi to any port 53
- Tentando aprender mais registrando pacotes bloqueados (alterando
block all
parablock log all
), mas o log parece estar desativado no OS X, porque fazersudo tcpdump -n -e -ttt -i pflog0
para ver o log resulta em "tcpdump: pflog0: esse dispositivo não existe".
Nada disso ajuda a restabelecer uma conexão Wi-Fi mais rapidamente.
O que mais posso fazer para determinar qual serviço precisa estar disponível para recuperar a conectividade Wi-Fi ou que regra devo adicionar ao pf.conf para tornar as reconexões Wi-Fi mais confiáveis?