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

สองพีียร์ คีย์เดียว และไม่มีสถานะต่อไคลเอนต์ รูปแบบนั้นคือเรื่องราวทั้งหมดของโหมดนี้

โหมดคีย์คงที่มีไว้เพื่ออะไร

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

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

นั่นคือเหตุผลที่ขีดจำกัดสองพีียร์เป็นเรื่องโครงสร้าง ไม่ใช่การตั้งค่าที่เปลี่ยนได้

ทำไม client-to-client ไม่ใช่ชิ้นส่วนที่ขาดหาย

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

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

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

การสร้างเซิร์ฟเวอร์หลายไคลเอนต์

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

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

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

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

การตรวจสอบว่าไคลเอนต์เป็นอิสระจริง

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

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

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

หากบันทึกแสดงชื่อร่วมชื่อเดียวสำหรับทุกอุปกรณ์ ปัญหาไม่ใช่โหมด ปัญหาคือกระบวนการลงทะเบียน

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