คิลสวิตช์รายแอปฟังดูเป็นตัวเลือกที่ระวัง: เมื่ออุโมงค์ล่ม มีเพียงไคลเอนต์งานที่สูญเสียเครือข่าย ส่วนอย่างอื่นยังทำงานต่อไป จากนั้นมีคนสังเกตว่าเบราว์เซอร์ส่วนตัวยังโหลดหน้าเว็บได้ ตัวช่วยซิงค์ที่มาพร้อมชุดเดียวกันยังคงพยายามซ้ำ และชื่อที่แคชไว้ยังคงถูกแปลงเป็นที่อยู่ที่ไม่เคยผ่านอุโมงค์เลย ป้ายกำกับบนฟีเจอร์กับชุดการเชื่อมต่อที่มันป้องกันจริงเป็นคนละเรื่อง กำหนดชุดที่ได้รับการป้องกันก่อน เพราะชุดนั้นเป็นตัวตัดสินว่าการบังคับใช้รายแอปหรือการล็อกทั้งเครื่องคือคำอธิบายที่ซื่อตรง

เริ่มจากชุด ไม่ใช่ป้ายกำกับ

นโยบายรายแอปปกป้องแอปที่เลือก การล็อกเครื่องมุ่งไปที่ขอบเขตเครือข่ายที่กว้างกว่า โดยปกติมีข้อยกเว้นที่บันทึกไว้สำหรับการพิมพ์ในเครื่อง ทราฟฟิกการจัดการ หรือแคปทีฟพอร์ทัล ป้ายกำกับทั้งสองแบบยังไม่สมบูรณ์จนกว่าจะตอบสามคำถามได้: เกิดอะไรขึ้นกับแอปที่ยกเว้น เกิดอะไรขึ้นกับตัวช่วยที่แอปเหล่านั้นเริ่ม และเกิดอะไรขึ้นกับการเชื่อมต่อที่เปิดขึ้นขณะไม่มีระบบป้องกัน

เขียนคำตอบเหล่านั้นก่อนแตะการตั้งค่าใด ๆ ของไคลเอนต์ ถ้าข้อกำหนดคือ "ไคลเอนต์เงินเดือนนี้ต้องไม่คุยกับอินเทอร์เน็ตนอกอุโมงค์เลย และเบราว์เซอร์ของฉันคุยได้" ชุดมีขนาดเล็กและการบังคับใช้รายแอปเหมาะ ถ้าข้อกำหนดคือ "ไม่มีอะไรบนเครื่องนี้ไปถึงอินเทอร์เน็ตโดยไม่มีการป้องกัน ยกเว้นบริการอัปเดต" จะไม่มีนโยบายรายแอปใดสร้างสิ่งนั้นได้ เพราะแอปที่คุณไม่ได้ระบุชื่อคือปัญหา

การบังคับใช้รายแอปจับคู่ตัวระบุ ไม่ใช่ชื่อโปรแกรม

Android เปิดเผย VPN รายแอปผ่านแพ็กเกจ และเอกสาร VpnServiceอธิบายว่ามันทำงานร่วมกับการทำงานตลอดเวลาและการบล็อกอย่างไร iOS กำหนดค่า VPN รายแอปผ่านโปรไฟล์การจัดการและจับคู่ตามแอปหรือตามโดเมน Windows และ Linux ไม่มีเส้นทางรายโปรเซสเลย จึงประมาณแนวคิดเดียวกันด้วยกฎไฟร์วอลล์ที่จำกัดเฉพาะโปรแกรมหรือกฎที่ตรงกับผู้ใช้ที่เป็นเจ้าของ

ขอบเขตคือตัวระบุ และตัวระบุนั้นเลี่ยงได้ง่าย แอปที่ส่ง URL ให้เบราว์เซอร์ของระบบ หรือเปิดเอกสารในโปรแกรมดู จะย้ายไปยังโปรเซสที่นโยบายของคุณไม่เคยระบุชื่อ ตัวเลือกการยุติเมื่อหลุดก็ไม่ใช่ตัวกรองแพ็กเก็ต เพราะมันฆ่าแอปที่คุณกำหนดค่าไว้ ขณะที่โปรเซสลูก ผู้ปฏิบัติงานคิว หรือแท็บเบราว์เซอร์ยังคงรักษาซ็อกเก็ตเดิมให้มีชีวิตได้

การล็อกครอบคลุมสิ่งที่่นโยบายรายแอปมองไม่เห็น

การล็อกทั้งเครื่องตัดตัวเลือกออก แพ็กเก็ตขาออกทั้งหมดที่ไม่ใช่อุโมงค์จะถูกทิ้ง รวมถึงทราฟฟิกจากโปรเซสที่นโยบายแอปของคุณไม่เคยรู้จัก บน Android นั่นคือ VPN ที่เปิดตลอดเวลารวมกับการตั้งค่าบล็อกการเชื่อมต่อ และการบังคับใช้เกิดในระบบ ไม่ใช่ในหน้าต่างไคลเอนต์ บนเดสก์ท็อปมันคือกฎไฟร์วอลล์ถาวรหรือเส้นทางเริ่มต้นที่ชี้ไปยังเกตเวย์ที่ไปไม่ถึง

ราคาคือทุกอย่างหยุด ดังนั้นข้อยกเว้นจึงกลายเป็นส่วนหนึ่งของการออกแบบ ไม่ใช่ความคิดภายหลัง เครื่องพิมพ์ในเครื่อง การค้นพบบริการ การเข้าสู่ระบบแคปทีฟพอร์ทัล เอเจนต์การจัดการ และการอัปเดตระบบปฏิบัติการ ต่างต้องการช่องที่บันทึกไว้ เพราะแต่ละอย่างเป็นเส้นทางที่ยังเปิดอยู่เมื่ออุโมงค์ล่ม การล็อกจึงแข็งแรงเพียงเท่ารายการที่สั้นที่สุดในรายการนั้น

DNS, IPv6 และตัวช่วยเบื้องหลังซ่อนการรั่วไหล

การที่แอปที่ได้รับการป้องกันแปลงชื่อไม่ได้ไม่ได้พิสูจน์ว่าคำตอบที่แคชไว้หรือทราฟฟิก IP ตรงถูกบล็อก ถ้าตัวแปลงยังเข้าถึงได้นอกอุโมงค์ ชื่อจะถูกแปลงและการเชื่อมต่อล้มเหลว ซึ่งดูเหมือนคิลสวิตช์ที่ทำงานได้และไม่ใช่เลย แย่กว่านั้น บันทึกที่แคชไว้อาจชี้ไปยังที่อยู่ที่อุโมงค์ไม่ได้พาไป การเชื่อมต่อจึงออกไปตรง ๆ ขณะที่แอปรายงานข้อผิดพลาด VPN

IPv6 ต้องมีกฎของตัวเองบนทุกแพลตฟอร์มที่ใช้งาน เพราะกฎการทิ้งสำหรับ v4 ไม่ครอบคลุมเส้นทาง v6 บนมือถือ การตั้งค่า DNS ส่วนตัวอาจย้ายการแปลงชื่อเข้าสู่ช่องทางเข้ารหัสที่นโยบายเครื่องไม่ได้ตรวจสอบ และตัวช่วยเบื้องหลังคือผู้ร้ายปกติบนเดสก์ท็อป: โปรเซสอัปเดตหรือซิงค์ในถาดระบบเริ่มก่อนไคลเอนต์ VPN และเก็บการเชื่อมต่อของตัวเองไว้ จึงไม่เคยเห็นเส้นทางที่เปลี่ยนไป

ทดสอบสามแอปและการเปลี่ยนผ่านสองครั้ง

TestWhat it proves
Included app, by name and by direct IPthe policy is applied, not just the resolver
Excluded app, same checksthe exclusion is intentional and documented
Helper or updater processnothing inherited an older route
Tunnel drop, then Wi-Fi to cellularthe block survives the transition

รันแต่ละแถวสองครั้ง ครั้งหนึ่งด้วยชื่อโฮสต์และอีกครั้งด้วยที่อยู่ตรง และอีกครั้งผ่าน IPv6 หากเครือข่ายรองรับ การผ่านหมายถึงแอปที่รวมอยู่หยุด แอปที่ยกเว้นทำงานตามที่คุณเขียนไว้ และตัวช่วยไม่หลุดออกไป บันทึกพฤติกรรมตรงที่คุณตัดสินว่ารับได้ เพื่อให้ผู้ดูแลคนถัดไปแยกแยะข้อยกเว้นที่ตั้งใจออกจากความล้มเหลว

จากนั้นอธิบายผลลัพธ์ในประโยคเดียวที่ระบุชื่อแอปและเงื่อนไข เช่น ไคลเอนต์เงินเดือนไม่มีเส้นทางนอกอุโมงค์ เบราว์เซอร์เป็นแบบตรงตามการออกแบบ และทุกอย่างอื่นหยุดเมื่ออุโมงค์ล่ม ถ้าประโยคนั้นเขียนยาก นโยบายยังคงเป็นสองนโยบายที่ต่อสู้กันเอง

บทความที่เกี่ยวข้อง