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

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

ผู้จัดการเป็นมุมมองบนที่จัดเก็บ

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

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

การเปลี่ยนแปลงสถานะมาถึงเฉพาะขณะที่คุณเฝ้าดู

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

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

ความลับคือการอ้างอิง ไม่ใช่สตริง

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

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

ส่วนขยายมีมุมมองคีย์เชนของตัวเอง

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

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

จับคู่ API กับโปรโตคอล

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

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

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