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

ไฟล์เป็นส่วนที่ง่าย ส่วนอีกสองอย่างเป็นตัวตัดสินว่าการย้ายจะได้ผลหรือไม่

โปรไฟล์ที่ส่งออกมีอะไรอยู่จริง ๆ

เปิดไฟล์ในโปรแกรมแก้ไขข้อความก่อนจะเชื่อถือ โปรไฟล์ OpenVPN เป็นภาษาการกำหนดค่าขนาดเล็ก: remote, proto, data-ciphers และบ่อยครั้งเป็นบล็อก <ca>, <cert>, <key> หรือ <tls-crypt> แบบอินไลน์ที่ไคลเอนต์ส่งให้สแตก TLS ของตน การกำหนดค่า WireGuard แบนกว่า: [Interface] มี PrivateKey และ Address จากนั้นหนึ่ง [Peer] ต่อจุดปลายที่มี PublicKey, AllowedIPs และ Endpoint IKEv2 มาในรูป .mobileconfig พร้อมพจนานุกรมเพย์โหลดแทนบล็อกคีย์

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

คีย์อยู่ที่ไหนจริง ๆ บน Android

Android เก็บข้อมูลแอปไว้ใต้ /data/data/<package> ซึ่งอ่านได้เฉพาะ UID ของแอปนั้น ไม่มีวิธีที่รองรับในการคัดลอกไดเรกทอรีส่วนตัวของแอปอื่นจากโทรศัพท์ที่ไม่รูท และ adb backup ก็เลิกเป็นคำตอบทั่วไปหลังจาก Android 12 ยกเลิกมันและไคลเอนต์เริ่มประกาศ allowBackup="false" ดังนั้นการส่งออกจากไคลเอนต์ Android จึงหมายถึงสิ่งที่ไคลเอนต์นั้นนำไปใช้ ไม่ใช่สำเนาของระบบไฟล์

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

นั่นไม่ใช่การส่งออกที่เสีย แต่เป็นคุณสมบัติที่แพลตฟอร์มถูกขอให้มอบให้

สิ่งที่โปรไฟล์พาไปไม่ได้

เทียบวัตถุกับสิ่งที่ปลายทางจะยอมรับ:

วัตถุย้ายไหมทำไม
โปรโตคอลและจุดปลายใช่ ถ้าไคลเอนต์ปลายทางรองรับข้อความธรรมดาในโปรไฟล์
ใบรับรอง CA และการตรวจสอบชื่อโฮสต์โดยปกติวัสดุสาธารณะ แต่ชื่อโฮสต์ยังต้องตรงกับใบรับรอง
ใบรับรองไคลเอนต์ใช่ เว้นแต่ผูกไว้กับอุปกรณ์แต่ละเครื่องใบรับรองพกพาได้ ผู้ออกเป็นผู้กำหนดว่าอุปกรณ์กี่เครื่องใช้ใบเดียวได้
คีย์ส่วนตัวเฉพาะเมื่อสร้างนอก Keystoreคีย์ที่รองรับด้วยฮาร์ดแวร์ส่งออกไม่ได้ ทำได้เพียงแทนที่
บัญชี MFA เซสชัน SSOไม่โทเคนหมดอายุและยังผูกกับอุปกรณ์ที่ได้มา
เส้นทาง DNS และขอบเขตแอปเป็นข้อความกำหนดค่าเท่านั้นAndroid ใช้ค่าเหล่านี้เมื่อเชื่อมต่อผ่าน VpnService.Builder
รายการแอปของอุโมงค์แยกแทบไม่เคยชื่อแพ็กเกจต่างกันระหว่างอุปกรณ์ และรายการเป็นสถานะของไคลเอนต์

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

การนำเข้าคือการแยกวิเคราะห์ แล้วจึงเป็นการขอความยินยอม

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

จากนั้นมาถึงขั้นตอนการอนุญาตที่ไม่มีไฟล์ใดข้ามได้ Android กำหนดให้แอปเรียก VpnService.prepare() และได้รับความยินยอมของคุณก่อนจะสร้างอุโมงค์ได้ ดังนั้นโปรไฟล์ที่เพิ่งนำเข้าจึงยังแสดงกล่องโต้ตอบของระบบหนึ่งครั้ง จากนั้นอุโมงค์ถูกสร้างอย่างชัดเจนผ่าน addAddress, addRoute, addDnsServer และ addAllowedApplication หรือ addDisallowedApplication สำหรับการกำหนดเส้นทางรายแอป ไม่มีสิ่งใดถูกบอกเป็นนัยจากจุดปลาย โปรไฟล์เดียวกันจึงอาจให้ชุดเส้นทางที่มีผลต่างกันในสองไคลเอนต์

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

ตรวจสอบอุปกรณ์ใหม่ก่อนปลดระวางเครื่องเก่า

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

การตรวจครั้งเดียวตัดสินที่อยู่ขาออก เปิด https://ifconfig.me ในเบราว์เซอร์ของโทรศัพท์ จากนั้นรัน curl -s https://ifconfig.me จากแล็ปท็อปบน Wi-Fi เดียวกัน และเทียบทั้งสองคำตอบกับที่อยู่ที่ผู้ให้บริการของคุณจัดสรรให้

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

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

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

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