Saya sudah bisa menolak semua koneksi ke jaringan eksternal kecuali koneksi OpenVPN saya aktif menggunakan pf.conf. Namun, saya kehilangan konektivitas Wi-Fi jika koneksi terputus dengan menutup dan membuka tutup laptop atau mematikan dan menghidupkan Wi-Fi lagi.
- Saya menggunakan Mac OS 10.8.1.
- Saya terhubung ke Web melalui Wi-Fi (dari berbagai lokasi, termasuk Wi-Fi publik).
- Koneksi OpenVPN diatur dengan Viscosity.
Saya memiliki aturan packet filter berikut yang diatur dalam /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
Saya memulai layanan filter paket dengan sudo pfctl -e
dan memuat aturan baru dengan sudo pfctl -f /etc/pf.conf
.
Saya juga telah mengedit /System/Library/LaunchDaemons/com.apple.pfctl.plist
dan mengubah baris <string>-f</string>
untuk dibaca <string>-ef</string>
sehingga filter paket diluncurkan saat startup sistem.
Ini semua tampaknya bekerja dengan baik pada awalnya: aplikasi hanya dapat terhubung ke web jika koneksi OpenVPN aktif, jadi saya tidak pernah membocorkan data melalui koneksi yang tidak aman.
Tetapi, jika saya menutup dan membuka kembali tutup laptop saya atau mematikan Wi-Fi dan menghidupkan lagi, koneksi Wi-Fi hilang, dan saya melihat tanda seru pada ikon Wi-Fi di bilah status. Mengklik ikon Wi-Fi menunjukkan pesan "Peringatan: Tidak Ada Koneksi Internet":
Untuk mendapatkan kembali koneksi, saya harus memutuskan dan menghubungkan kembali Wi-Fi, kadang-kadang lima atau enam kali, sebelum pesan "Peringatan: Tidak ada koneksi Internet" menghilang dan saya dapat membuka koneksi VPN lagi. Di waktu lain, peringatan Wi-Fi menghilang dengan sendirinya, tanda seru hilang, dan saya dapat terhubung lagi. Apa pun itu, perlu waktu lima menit atau lebih untuk mendapatkan koneksi lagi, yang bisa membuat frustasi.
Menghapus garis block all
menyelesaikan masalah (tetapi memungkinkan koneksi tidak aman), jadi sepertinya ada layanan yang saya blokir yang Apple perlukan untuk mendapatkan kembali dan mengkonfirmasi koneksi Wi-Fi. Saya telah mencoba:
- Mengaktifkan icmp dengan menambahkan
pass on $wifi proto icmp all
ke pf.conf - Mengaktifkan resolusi DNS dengan menambahkan
pass on $wifi proto udp from $wifi to any port 53
- Mencoba mempelajari lebih lanjut dengan mencatat paket yang diblokir (dengan mengubah
block all
keblock log all
), tetapi logging tampaknya dinonaktifkan di OS X, karena melakukansudo tcpdump -n -e -ttt -i pflog0
melihat hasil log di "tcpdump: pflog0: Tidak ada perangkat seperti itu ada".
Tak satu pun dari ini membantu membangun kembali koneksi Wi-Fi lebih cepat.
Apa lagi yang bisa saya lakukan untuk menentukan layanan apa yang perlu tersedia untuk mendapatkan kembali konektivitas Wi-Fi, atau aturan apa yang harus saya tambahkan ke pf.conf untuk membuat koneksi ulang Wi-Fi lebih dapat diandalkan?