ฉันสามารถปฏิเสธการเชื่อมต่อกับเครือข่ายภายนอกทั้งหมดยกเว้นว่าการเชื่อมต่อ 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 ฉันเหนื่อย:
- การเปิดใช้งาน
pass on $wifi proto icmp all
icmp โดยเพิ่มไปที่ 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 เชื่อถือได้มากขึ้น