除非使用pf.conf激活了我的OpenVPN连接,否则我已经能够拒绝与外部网络的所有连接。但是,如果通过关闭和打开笔记本电脑盖或重新打开和关闭Wi-Fi断开连接,则会失去Wi-Fi连接。
- 我在Mac OS 10.8.1上。
- 我通过Wi-Fi(从不同位置,包括公共Wi-Fi)连接到Web。
- 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连接处于活动状态,应用程序才能连接到Web,因此我绝不会通过不安全的连接泄漏数据。
但是,如果我关闭然后重新打开笔记本电脑的机盖,或者再次打开和关闭Wi-Fi,则Wi-Fi连接将会丢失,并且在状态栏中的Wi-Fi图标中会出现一个感叹号。单击Wi-Fi图标将显示“警告:没有Internet连接”消息:
要重新建立连接,我必须断开并重新连接Wi-Fi,有时五到六次,然后“警告:没有Internet连接”消息消失,我可以再次打开VPN连接。其他时间,Wi-Fi警报会自动消失,感叹号消失,我可以再次连接。无论哪种方式,都可能需要五分钟或更长时间才能重新建立连接,这可能会令人沮丧。
删除线路block all
可以解决问题(但允许不安全的连接),因此看来我阻止了Apple重新获得并确认Wi-Fi连接所需的一项服务。我试过了:
- 通过添加
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
)来了解更多信息,但是在OS X下似乎无法进行日志记录,因为这样做sudo tcpdump -n -e -ttt -i pflog0
会导致日志显示为“ tcpdump:pflog0:不存在此类设备”。
这些都无法帮助您更快地重新建立Wi-Fi连接。
我还能做些什么以确定需要什么服务才能恢复Wi-Fi连接,或者我应该在pf.conf中添加什么规则以使Wi-Fi重新连接更加可靠?