OpenVPN接続がpf.confを使用してアクティブでない限り、外部ネットワークへのすべての接続を拒否することができました。ただし、ラップトップのふたを閉じたり開いたり、Wi-Fiのオンとオフを切り替えたりして接続が切断されると、Wi-Fi接続が失われます。
- Mac OS 10.8.1を使用しています。
- Wi-Fi経由でWebに接続します(パブリックWi-Fiを含むさまざまな場所から)。
- OpenVPN接続は、Viscosityでセットアップされます。
次のパケットフィルタールールを設定しています /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接続がアクティブな場合にのみWebに接続できるため、安全でない接続を介してデータを漏洩することはありません。
しかし、ラップトップのふたを閉じて再度開くか、Wi-Fiをオフにして再びオンにすると、Wi-Fi接続が失われ、ステータスバーのWi-Fiアイコンに感嘆符が表示されます。Wi-Fiアイコンをクリックすると、「アラート:インターネット接続なし」メッセージが表示されます。
接続を回復するには、「アラート:インターネット接続がありません」というメッセージが消えて、VPN接続を再度開くことができるようになる前に、Wi-Fiを切断して再接続する必要があります。また、Wi-Fiアラートが自動的に消え、感嘆符が消えて、再び接続できるようになります。いずれにせよ、再び接続するのに5分以上かかることがあり、イライラする可能性があります。
回線block all
を削除することで問題は解決しますが(安全でない接続は許可されます)、Wi-Fi接続を回復して確認するためにAppleが必要とするサービスをブロックしているようです。私が試してみました:
pass on $wifi proto icmp all
pf.confに追加してicmpを有効にする- 追加してDNS解決を有効にする
pass on $wifi proto udp from $wifi to any port 53
- ブロックされたパケットをログに記録して(に変更する
block all
ことでblock log all
)sudo tcpdump -n -e -ttt -i pflog0
詳細を調べようとしますが、OS Xではログを無効にしたようです。
これはいずれも、Wi-Fi接続の再確立に役立ちません。
Wi-Fi接続を回復するためにどのサービスが必要か、またはWi-Fi再接続の信頼性を高めるためにpf.confにどのルールを追加する必要があるかを判断するために、他に何ができますか?