ช่องทำเครื่องหมายดูเหมือนเป็นการตัดสินใจทั้งหมด แต่บน Android ไม่ใช่ แพ็กเกจที่ติ๊กเหมือนกันหมายถึง “แอปนี้เท่านั้นที่ใช้ VPN” ภายใต้ฐานแบบรวมเท่านั้น และ “แอปนี้ข้าม VPN” ภายใต้ฐานที่ยกเว้นรายการที่เลือก ผู้คนติดตั้งไคลเอนต์ เจอรายการที่ติดป้ายว่าแอปที่อนุญาต ติ๊กแพ็กเกจเดียวที่ตัวเองสนใจ แล้วจากไปพร้อมนโยบายที่ทำตรงกันข้าม การเปลี่ยนไคลเอนต์แทบไม่ช่วย การเลือกฐานก่อนแตะรายการต่างหากที่ช่วย

ฐานคือตัวนโยบาย ไม่ใช่ช่องทำเครื่องหมาย

ภายใต้ VpnService ของ Android ไคลเอนต์กำหนดเส้นทางต่อแอปด้วย addAllowedApplication หรือ addDisallowedApplication ตัวแรกจำกัดอุโมงค์ไว้ที่แพ็กเกจที่ระบุ ตัวที่สองส่งทุกอย่างยกเว้นแพ็กเกจเหล่านั้นผ่านอุโมงค์ ไคลเอนต์ห่อทั้งสองแบบไว้ใน UI ที่อาจดูแทบเหมือนกัน และบางตัวตั้งชื่อส่วนตามรายการแทนที่จะตั้งตามโหมด ดังนั้นชื่อส่วนเพียงอย่างเดียวบอกไม่ได้ว่าฐานใดทำงานอยู่

อ่านตัวควบคุมโหมดเหนือรายการ ไม่ใช่หัวข้อ ในไคลเอนต์ OpenVPN for Android ต้นฉบับ รายการแอปที่อนุญาตมีฐานแบบรวมเท่านั้นและฐานที่ยกเว้นรายการที่เลือก และบิลด์ที่ติดแบรนด์อาจเขียนทั้งสองแบบต่างออกไปโดยยังคงพฤติกรรมสองอย่างเดิม ภาพหน้าจอจากไคลเอนต์อื่น หรือจากเวอร์ชันเก่าของตัวเดียวกัน ไม่ใช่หลักฐานเกี่ยวกับโหมดที่คุณอยู่

What the client showsWhat a checked app gets
Allowed apps, include-only baselineThe app uses the tunnel; unchecked apps do not
Allowed apps, exclude-selected baselineThe app bypasses the tunnel; everything else uses it
No list configuredClient or profile default, commonly all apps

ตารางนั้นคือความเข้าใจผิดทั้งหมด การติ๊กแอปคือข้อความเกี่ยวกับแพ็กเกจเดียว ฐานเป็นตัวตัดสินว่าข้อความนั้นคือ “รวม” หรือ “ยกเว้น”

เลือกโหมดก่อน แล้วจึงเลือกแพ็กเกจ

ทำตามลำดับนี้ เพราะการเลือกที่ทำภายใต้ฐานหนึ่งอาจอยู่ต่อหลังเปลี่ยนโหมดและกลับผลของมันอย่างเงียบ ๆ

  1. ระบุแพ็กเกจจริง และระบุว่าเป็นสำเนาส่วนตัวหรือสำเนาโปรไฟล์งาน
  2. เปิดการตั้งค่าการเลือกแอปของโปรไฟล์ VPN ที่คุณเชื่อมต่อจริง ๆ
  3. ตั้งฐานที่มีความหมายว่า “เฉพาะแอปที่เลือกใช้ VPN”
  4. รวมแพ็กเกจที่ต้องการ และกันแอปที่ไม่เกี่ยวข้องออกจากชุด
  5. เชื่อมต่อใหม่เพื่อให้ไคลเอนต์สร้างอินเทอร์เฟซใหม่ด้วยรายการใหม่

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

เชื่อมต่อใหม่ก่อนตัดสินผล

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

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

เวิร์กโฟลว์ของคุณอาจออกจากแอป

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

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

ทดสอบทั้งสองด้าน แล้วจดนโยบายไว้

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

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

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