Mac VPN เชื่อมต่อกลับเองทันทีหลังจากกดตัดการเชื่อมต่อ
ตัวตรวจสอบที่ถือว่าทุกสถานะที่ตัดการเชื่อมต่อเป็นความผิดพลาดจะต่อสู้กับปุ่มตัดการเชื่อมต่อ แยกเจตนาออกจากสถานะที่สังเกตได้ แล้วจำกัดการลองใหม่
การกดตัดการเชื่อมต่อได้ผล และสิบวินาทีต่อมาอุโมงค์ก็กลับมาอยู่ดี วงจรนั้นแทบไม่ใช่ VPN ไคลเอนต์ที่ทำงานผิดปกติ แต่เป็นสคริปต์กู้คืนที่ถามเพียงคำถามเดียวเสมอว่า «มันล่มหรือเปล่า» และตอบด้วยการเชื่อมต่อ เมื่อคุณแยกคำถามที่ผู้ใช้ตอบออกจากคำถามที่ระบบรายงาน การแก้ไขก็กลายเป็นสถานะเพียงเล็กน้อยแทนการรอนานขึ้น
สองคำถาม ไม่ใช่คำถามเดียว
โปรไฟล์นี้ควรเชื่อมต่ออยู่ตอนนี้หรือไม่ และระบบรายงานอะไรในขณะนี้ ทั้งสองเป็นคำถามที่ต่างกันและมีเจ้าของต่างกัน และนโยบายกู้คืนต้องการทั้งสองอย่างก่อนลงมือ เจตนาคือสิ่งที่เครื่องมือของคุณตัดสินใจและจดจำ สถานะที่สังเกตได้คือสิ่งที่แพลตฟอร์มบอกคุณ
| Intent | What you observe | What to do |
|---|---|---|
| Wanted | Dropped unexpectedly | Allow one supported recovery attempt |
| Paused by the user | Disconnected | Do nothing until intent changes |
| Wanted | Already connecting | Wait instead of starting a rival attempt |
| Wanted | Authentication needs a person | Prompt, then stop replaying credentials |
อ่านแถวต่าง ๆ เป็นนโยบาย ไม่ใช่รายการกรณี แถวที่สองคือแถวที่สคริปต์ส่วนใหญ่ละไว้ และเป็นแถวเดียวที่แยกตัวตรวจสอบออกจากเครื่องที่ยืนกรานว่าตัวเองถูก
สถานะที่สังเกตได้ไม่ใช่ความชอบ
โมเดลสถานะ Network Extension ของ Apple รายงานสถานะ connecting, connected, disconnecting, disconnected และ recovery ทั้งห้าอธิบายการเชื่อมต่อ ไม่มีสถานะใดบอกว่า «ผู้ใช้ขอให้โปรไฟล์นี้คงหยุดชั่วคราว» เพราะนั่นไม่ใช่สถานะการเชื่อมต่อเลย ไคลเอนต์ที่ไม่ได้สร้างบนกรอบนั้นเปิดเผยตัวควบคุมและการเรียกสถานะที่รองรับของตนเอง และลากเส้นเดียวกันด้วยคำศัพท์ของตนเอง
ผลคือสถานะที่ตัดการเชื่อมต่อไม่สามารถตีความได้ด้วยตัวเอง มันหมายถึงหนึ่งในอย่างน้อยสามอย่าง อุโมงค์ล่ม ผู้ใช้หยุดมัน หรือระบบอยู่ระหว่างการลอง บันทึกเจตนาของคุณเองเท่านั้นที่แยกได้ เขียนบันทึกนั้นลงไป เก็บไว้ข้ามการรีสตาร์ตหากต้องอยู่รอดจากการรีบูต และอัปเดตมันในขณะที่ผู้ใช้ลงมือ แทนที่จะอนุมานภายหลังจากบรรทัดบันทึก
scutil --nc list
scutil --nc status "Office VPN"
ใครอีกที่ได้รับอนุญาตให้เริ่มโปรไฟล์นี้
การหยุดชั่วคราวที่ผู้ช่วยของคุณสัญญาไว้แข็งแรงเท่ากับเจ้าของอื่นของโปรไฟล์เดียวกัน กฎ On Demand การกำหนดค่าที่จัดการ หรือไคลเอนต์ที่สองล้วนขอเชื่อมต่อได้ และผู้ช่วยของคุณจะดูพังทั้งที่ทำงานตรงตามที่เขียนไว้
ค้นหากลไกทุกอย่างที่เริ่มโปรไฟล์ได้ก่อนที่คุณจะสัญญาว่าจะเคารพการหยุดชั่วคราว และจดว่าอันไหนชนะ เมื่อบริการที่จัดการจงใจไม่ให้ตัวเลือกหยุดชั่วคราวส่วนบุคคล นั่นคือการตัดสินใจของผู้ดูแลเกี่ยวกับนโยบาย ไม่ใช่ช่องว่างที่สคริปต์ควรเติมด้วยการต่อสู้กับการจัดการ
ทำให้การลองใหม่น่าเบื่อ
จำกัดจำนวนครั้งและทำให้แต่ละครั้งตอบสนองต่อสิ่งที่เปลี่ยนไป เครือข่ายกลับมา เกตเวย์ตอบ ข้อความขอข้อมูลรับรองเสร็จสิ้น เกตเวย์ที่ใช้ไม่ได้ ตัวตนที่หมดอายุ และปัจจัยที่สองที่ถูกปฏิเสธต้องใช้การตอบสนองที่ต่างกันสามแบบ และลูปที่แน่นให้ทั้งสามอย่างเหมือนกัน
ดูว่าการลองใหม่ที่รวดเร็วสร้างอะไรบนหน้าจอจริง ๆ กล่องโต้ตอบซ้ำ ๆ ที่ผู้ใช้ปิดแย่กว่าข้อความล้มเหลวที่ชัดเจนหนึ่งข้อความ และสอนให้ผู้คนคลิกผ่านข้อความโดยไม่อ่าน
การหยุดชั่วคราวและนโยบายการรับส่งข้อมูลเป็นคำสัญญาที่แยกกัน
อุโมงค์ที่ผู้ใช้หยุดชั่วคราวมักปล่อยให้การรับส่งข้อมูลถูกบล็อกไว้โดยเจตนา และนั่นคือจุดประสงค์ทั้งหมดของนโยบายสไตล์ kill switch นั่นหมายความว่าการหยุดชั่วคราวควรสัญญาเพียงอย่างเดียว การกู้คืนหยุดลง มันไม่ควรเปลี่ยนสิ่งที่เครือข่ายอนุญาตอย่างเงียบ ๆ
ตัดสินใจพฤติกรรมการรับส่งข้อมูลแยกต่างหาก จัดทำเอกสารไว้ข้างตัวควบคุมการหยุดชั่วคราว และรักษาให้สอดคล้องไม่ว่าอุโมงค์จะหยุดชั่วคราว ล้มเหลว หรือหายไป ไม่เช่นนั้นผู้ใช้จะเรียนรู้ว่าการกดตัดการเชื่อมต่อทำอะไรที่คาดเดาไม่ได้ และตั๋วสนับสนุนครั้งถัดไปจะเกี่ยวกับเครือข่ายที่ «บางครั้งหยุดทำงาน» โดยไม่มีสาเหตุที่มองเห็น