คิลสวิตช์รายแอปกับล็อกดาวน์ทั้งเครื่อง: อะไรเปลี่ยนไป
ตัดสินจากชุดที่ได้รับการป้องกัน ไม่ใช่จากป้ายกำกับ: อะไรหยุดสำหรับแอปที่ยกเว้น ตัวช่วยเบื้องหลัง และการเชื่อมต่อใหม่ และจะทดสอบแต่ละกรณีอย่างไร
คิลสวิตช์รายแอปฟังดูเป็นตัวเลือกที่ระวัง: เมื่ออุโมงค์ล่ม มีเพียงไคลเอนต์งานที่สูญเสียเครือข่าย ส่วนอย่างอื่นยังทำงานต่อไป จากนั้นมีคนสังเกตว่าเบราว์เซอร์ส่วนตัวยังโหลดหน้าเว็บได้ ตัวช่วยซิงค์ที่มาพร้อมชุดเดียวกันยังคงพยายามซ้ำ และชื่อที่แคชไว้ยังคงถูกแปลงเป็นที่อยู่ที่ไม่เคยผ่านอุโมงค์เลย ป้ายกำกับบนฟีเจอร์กับชุดการเชื่อมต่อที่มันป้องกันจริงเป็นคนละเรื่อง กำหนดชุดที่ได้รับการป้องกันก่อน เพราะชุดนั้นเป็นตัวตัดสินว่าการบังคับใช้รายแอปหรือการล็อกทั้งเครื่องคือคำอธิบายที่ซื่อตรง
เริ่มจากชุด ไม่ใช่ป้ายกำกับ
นโยบายรายแอปปกป้องแอปที่เลือก การล็อกเครื่องมุ่งไปที่ขอบเขตเครือข่ายที่กว้างกว่า โดยปกติมีข้อยกเว้นที่บันทึกไว้สำหรับการพิมพ์ในเครื่อง ทราฟฟิกการจัดการ หรือแคปทีฟพอร์ทัล ป้ายกำกับทั้งสองแบบยังไม่สมบูรณ์จนกว่าจะตอบสามคำถามได้: เกิดอะไรขึ้นกับแอปที่ยกเว้น เกิดอะไรขึ้นกับตัวช่วยที่แอปเหล่านั้นเริ่ม และเกิดอะไรขึ้นกับการเชื่อมต่อที่เปิดขึ้นขณะไม่มีระบบป้องกัน
เขียนคำตอบเหล่านั้นก่อนแตะการตั้งค่าใด ๆ ของไคลเอนต์ ถ้าข้อกำหนดคือ "ไคลเอนต์เงินเดือนนี้ต้องไม่คุยกับอินเทอร์เน็ตนอกอุโมงค์เลย และเบราว์เซอร์ของฉันคุยได้" ชุดมีขนาดเล็กและการบังคับใช้รายแอปเหมาะ ถ้าข้อกำหนดคือ "ไม่มีอะไรบนเครื่องนี้ไปถึงอินเทอร์เน็ตโดยไม่มีการป้องกัน ยกเว้นบริการอัปเดต" จะไม่มีนโยบายรายแอปใดสร้างสิ่งนั้นได้ เพราะแอปที่คุณไม่ได้ระบุชื่อคือปัญหา
การบังคับใช้รายแอปจับคู่ตัวระบุ ไม่ใช่ชื่อโปรแกรม
Android เปิดเผย VPN รายแอปผ่านแพ็กเกจ และเอกสาร VpnServiceอธิบายว่ามันทำงานร่วมกับการทำงานตลอดเวลาและการบล็อกอย่างไร iOS กำหนดค่า VPN รายแอปผ่านโปรไฟล์การจัดการและจับคู่ตามแอปหรือตามโดเมน Windows และ Linux ไม่มีเส้นทางรายโปรเซสเลย จึงประมาณแนวคิดเดียวกันด้วยกฎไฟร์วอลล์ที่จำกัดเฉพาะโปรแกรมหรือกฎที่ตรงกับผู้ใช้ที่เป็นเจ้าของ
ขอบเขตคือตัวระบุ และตัวระบุนั้นเลี่ยงได้ง่าย แอปที่ส่ง URL ให้เบราว์เซอร์ของระบบ หรือเปิดเอกสารในโปรแกรมดู จะย้ายไปยังโปรเซสที่นโยบายของคุณไม่เคยระบุชื่อ ตัวเลือกการยุติเมื่อหลุดก็ไม่ใช่ตัวกรองแพ็กเก็ต เพราะมันฆ่าแอปที่คุณกำหนดค่าไว้ ขณะที่โปรเซสลูก ผู้ปฏิบัติงานคิว หรือแท็บเบราว์เซอร์ยังคงรักษาซ็อกเก็ตเดิมให้มีชีวิตได้
การล็อกครอบคลุมสิ่งที่่นโยบายรายแอปมองไม่เห็น
การล็อกทั้งเครื่องตัดตัวเลือกออก แพ็กเก็ตขาออกทั้งหมดที่ไม่ใช่อุโมงค์จะถูกทิ้ง รวมถึงทราฟฟิกจากโปรเซสที่นโยบายแอปของคุณไม่เคยรู้จัก บน Android นั่นคือ VPN ที่เปิดตลอดเวลารวมกับการตั้งค่าบล็อกการเชื่อมต่อ และการบังคับใช้เกิดในระบบ ไม่ใช่ในหน้าต่างไคลเอนต์ บนเดสก์ท็อปมันคือกฎไฟร์วอลล์ถาวรหรือเส้นทางเริ่มต้นที่ชี้ไปยังเกตเวย์ที่ไปไม่ถึง
ราคาคือทุกอย่างหยุด ดังนั้นข้อยกเว้นจึงกลายเป็นส่วนหนึ่งของการออกแบบ ไม่ใช่ความคิดภายหลัง เครื่องพิมพ์ในเครื่อง การค้นพบบริการ การเข้าสู่ระบบแคปทีฟพอร์ทัล เอเจนต์การจัดการ และการอัปเดตระบบปฏิบัติการ ต่างต้องการช่องที่บันทึกไว้ เพราะแต่ละอย่างเป็นเส้นทางที่ยังเปิดอยู่เมื่ออุโมงค์ล่ม การล็อกจึงแข็งแรงเพียงเท่ารายการที่สั้นที่สุดในรายการนั้น
DNS, IPv6 และตัวช่วยเบื้องหลังซ่อนการรั่วไหล
การที่แอปที่ได้รับการป้องกันแปลงชื่อไม่ได้ไม่ได้พิสูจน์ว่าคำตอบที่แคชไว้หรือทราฟฟิก IP ตรงถูกบล็อก ถ้าตัวแปลงยังเข้าถึงได้นอกอุโมงค์ ชื่อจะถูกแปลงและการเชื่อมต่อล้มเหลว ซึ่งดูเหมือนคิลสวิตช์ที่ทำงานได้และไม่ใช่เลย แย่กว่านั้น บันทึกที่แคชไว้อาจชี้ไปยังที่อยู่ที่อุโมงค์ไม่ได้พาไป การเชื่อมต่อจึงออกไปตรง ๆ ขณะที่แอปรายงานข้อผิดพลาด VPN
IPv6 ต้องมีกฎของตัวเองบนทุกแพลตฟอร์มที่ใช้งาน เพราะกฎการทิ้งสำหรับ v4 ไม่ครอบคลุมเส้นทาง v6 บนมือถือ การตั้งค่า DNS ส่วนตัวอาจย้ายการแปลงชื่อเข้าสู่ช่องทางเข้ารหัสที่นโยบายเครื่องไม่ได้ตรวจสอบ และตัวช่วยเบื้องหลังคือผู้ร้ายปกติบนเดสก์ท็อป: โปรเซสอัปเดตหรือซิงค์ในถาดระบบเริ่มก่อนไคลเอนต์ VPN และเก็บการเชื่อมต่อของตัวเองไว้ จึงไม่เคยเห็นเส้นทางที่เปลี่ยนไป
ทดสอบสามแอปและการเปลี่ยนผ่านสองครั้ง
| Test | What it proves |
|---|---|
| Included app, by name and by direct IP | the policy is applied, not just the resolver |
| Excluded app, same checks | the exclusion is intentional and documented |
| Helper or updater process | nothing inherited an older route |
| Tunnel drop, then Wi-Fi to cellular | the block survives the transition |
รันแต่ละแถวสองครั้ง ครั้งหนึ่งด้วยชื่อโฮสต์และอีกครั้งด้วยที่อยู่ตรง และอีกครั้งผ่าน IPv6 หากเครือข่ายรองรับ การผ่านหมายถึงแอปที่รวมอยู่หยุด แอปที่ยกเว้นทำงานตามที่คุณเขียนไว้ และตัวช่วยไม่หลุดออกไป บันทึกพฤติกรรมตรงที่คุณตัดสินว่ารับได้ เพื่อให้ผู้ดูแลคนถัดไปแยกแยะข้อยกเว้นที่ตั้งใจออกจากความล้มเหลว
จากนั้นอธิบายผลลัพธ์ในประโยคเดียวที่ระบุชื่อแอปและเงื่อนไข เช่น ไคลเอนต์เงินเดือนไม่มีเส้นทางนอกอุโมงค์ เบราว์เซอร์เป็นแบบตรงตามการออกแบบ และทุกอย่างอื่นหยุดเมื่ออุโมงค์ล่ม ถ้าประโยคนั้นเขียนยาก นโยบายยังคงเป็นสองนโยบายที่ต่อสู้กันเอง