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

ตำนาน: เซสชันที่สองคือตัวตนที่สอง

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

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

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

อะไรเปลี่ยนไปจริง ๆ เมื่อสองเซสชันใช้ชื่อร่วมกัน

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

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

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

grep -n 'duplicate-cn\|client-config-dir\|username-as-common-name' /etc/openvpn/server.conf

ที่อยู่แบบคงที่ที่คุณคิดว่าคุณกำหนดไว้

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

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

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

สิ่งที่ตัวตนร่วมกันทำไม่ได้ในเวลาถอน

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

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

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

เมื่อใดการแบ่งปันจึงเหมาะสม และจะจำกัดมันอย่างไร

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

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

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

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