Tôi đã có thể từ chối tất cả các kết nối với các mạng bên ngoài trừ khi kết nối OpenVPN của tôi đang hoạt động bằng pf.conf. Tuy nhiên, tôi mất kết nối Wi-Fi nếu kết nối bị hỏng bằng cách đóng và mở nắp máy tính xách tay hoặc tắt và bật lại Wi-Fi.
- Tôi đang dùng Mac OS 10.8.1.
- Tôi kết nối với Web thông qua Wi-Fi (từ các địa điểm khác nhau, bao gồm cả Wi-Fi công cộng).
- Kết nối OpenVPN được thiết lập với Độ nhớt.
Tôi có các quy tắc lọc gói sau đây được thiết lập trong /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
Tôi bắt đầu dịch vụ lọc gói sudo pfctl -e
và tải các quy tắc mới với sudo pfctl -f /etc/pf.conf
.
Tôi cũng đã chỉnh sửa /System/Library/LaunchDaemons/com.apple.pfctl.plist
và thay đổi dòng <string>-f</string>
để đọc <string>-ef</string>
để bộ lọc gói khởi chạy khi khởi động hệ thống.
Tất cả điều này dường như hoạt động rất tốt lúc đầu: các ứng dụng chỉ có thể kết nối với web nếu kết nối OpenVPN đang hoạt động, vì vậy tôi không bao giờ rò rỉ dữ liệu qua kết nối không an toàn.
Nhưng, nếu tôi đóng và mở lại nắp máy tính xách tay của mình hoặc tắt và bật lại Wi-Fi, kết nối Wi-Fi sẽ bị mất và tôi thấy dấu chấm than trong biểu tượng Wi-Fi trên thanh trạng thái. Nhấp vào biểu tượng Wi-Fi sẽ hiển thị thông báo "Thông báo: Không có kết nối Internet":
Để lấy lại kết nối, tôi phải ngắt kết nối và kết nối lại Wi-Fi, đôi khi năm hoặc sáu lần, trước khi thông báo "Thông báo: Không có kết nối Internet" biến mất và tôi có thể mở lại kết nối VPN. Lần khác, cảnh báo Wi-Fi biến mất theo ý mình, dấu chấm than sẽ xóa và tôi có thể kết nối lại. Dù bằng cách nào, có thể mất năm phút hoặc hơn để có được kết nối lại, điều này có thể gây bực bội.
Xóa dòng block all
giải quyết vấn đề (nhưng cho phép kết nối không an toàn), do đó, có vẻ như có một dịch vụ tôi đang chặn mà Apple yêu cầu để lấy lại và xác nhận kết nối Wi-Fi. Tôi đã thử:
- Kích hoạt icmp bằng cách thêm
pass on $wifi proto icmp all
vào pf.conf - Kích hoạt độ phân giải DNS bằng cách thêm
pass on $wifi proto udp from $wifi to any port 53
- Cố gắng tìm hiểu thêm bằng cách ghi nhật ký các gói bị chặn (bằng cách thay đổi
block all
thànhblock log all
), nhưng việc ghi nhật ký dường như bị vô hiệu hóa trong OS X, vì thực hiệnsudo tcpdump -n -e -ttt -i pflog0
để xem kết quả nhật ký trong "tcpdump: pflog0: Không có thiết bị nào như vậy tồn tại".
Không ai trong số này giúp thiết lập lại kết nối Wi-Fi nhanh hơn.
Tôi có thể làm gì khác để xác định dịch vụ nào cần có sẵn để lấy lại kết nối Wi-Fi hoặc tôi nên thêm quy tắc nào vào pf.conf để kết nối lại Wi-Fi đáng tin cậy hơn?