โทรศัพท์สองเครื่อง โปรไฟล์เดียว และรูปแบบที่ดูเหนือธรรมชาติจนกว่าจะมีคนไปดูที่เกตเวย์ เครื่องหนึ่งถืออุโมงค์ อีกเครื่องเชื่อมต่อ และเครื่องแรกสูญเสียมันภายในไม่กี่วินาที เครื่องแรกเชื่อมต่อใหม่และเครื่องที่สองหลุด มีการโทษการประหยัดแบตเตอรี่ การ roaming Wi-Fi และ NAT ของผู้ให้บริการ ขณะที่สาเหตุจริงอยู่ในช่องข้อความที่ถูกคัดลอกมาพร้อมกับทุกอย่าง IKEv2 ระบุ peer ด้วยชื่อ และโทรศัพท์ทั้งสองเครื่องนำเสนอชื่อเดียวกัน

ตัวตนคือกุญแจที่เซิร์ฟเวอร์ใช้เก็บคุณไว้

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

ไม่มีอะไรในนี้เป็นบั๊กในไคลเอนต์ ไคลเอนต์ส่งสิ่งที่โปรไฟล์สั่งให้ส่งอย่างถูกต้อง

การชนกันมีหน้าตาอย่างไรจากเกตเวย์

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

ObservationShared identityIdle teardown
Peer entries while both are awakeOne, with a changing addressOne per phone, or none
What triggers the dropThe other device connectingTime without traffic
What restores itThe other device disconnectingAny app needing the tunnel

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

ข้อมูลซ้ำมาจากไหน

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

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

ออกค่าสำหรับแต่ละเครื่อง

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

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

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

ตรวจสอบขณะที่โทรศัพท์ทั้งสองตื่น

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

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

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