Я был в состоянии запретить все подключения к внешним сетям, если мое подключение OpenVPN не активно с использованием pf.conf. Тем не менее, я теряю соединение Wi-Fi, если соединение разрывается при закрытии и открытии крышки ноутбука или выключении и включении Wi-Fi.
- Я на Mac OS 10.8.1.
- Я подключаюсь к Интернету через Wi-Fi (из разных мест, включая общедоступный Wi-Fi).
- Соединение OpenVPN настроено с Вязкостью.
У меня есть следующие правила фильтрации пакетов, установленные в /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
Я запускаю службу фильтрации пакетов с помощью sudo pfctl -e
и загружаю новые правила с помощью sudo pfctl -f /etc/pf.conf
.
Я также отредактировал /System/Library/LaunchDaemons/com.apple.pfctl.plist
и изменил строку <string>-f</string>
для чтения <string>-ef</string>
чтобы фильтр пакетов запускался в системе. запускать.
На первый взгляд все это прекрасно работает: приложения могут подключаться к Интернету только при активном соединении OpenVPN, поэтому я никогда не пропускаю данные через небезопасное соединение.
Но если я закрою и снова открою крышку ноутбука или выключу и снова включу Wi-Fi, соединение Wi-Fi будет потеряно, и я вижу восклицательный знак на значке Wi-Fi в строке состояния. Если щелкнуть значок Wi-Fi, появится сообщение «Предупреждение: нет подключения к Интернету»:
Чтобы восстановить соединение, мне нужно отключить и снова подключить Wi-Fi, иногда пять или шесть раз, прежде чем исчезнет сообщение «Оповещение: нет подключения к Интернету», и я смог снова открыть VPN-подключение. В других случаях предупреждение Wi-Fi исчезает само по себе, восклицательный знак очищается, и я могу подключиться снова. В любом случае, для восстановления соединения может потребоваться пять или более минут, что может быть неприятно.
Удаление block all
линии все решает проблему (но допускает небезопасные соединения), поэтому кажется, что есть служба, которую я блокирую, которая требуется Apple для восстановления и подтверждения соединения Wi-Fi. Я пытался:
- Включение icmp путем добавления
pass on $wifi proto icmp all
в pf.conf - Включение разрешения DNS путем добавления
pass on $wifi proto udp from $wifi to any port 53
- Попытка узнать больше, регистрируя заблокированные пакеты (изменяя
block all
чтобыblock log all
), но журналирование кажется отключенным в OS X, потому что выполнениеsudo tcpdump -n -e -ttt -i pflog0
для просмотра результатов журнала в "tcpdump" : pflog0: такого устройства не существует ".
Ничто из этого не помогает восстановить соединение Wi-Fi быстрее.
Что еще я могу сделать, чтобы определить, какая служба должна быть доступна для восстановления подключения к Wi-Fi, или какое правило я должен добавить в pf.conf, чтобы сделать подключение Wi-Fi более надежным?