การเชื่อมต่อไคลเอนต์ OpenVPN ใหม่: สามวิธีควบคุม สามขอบเขต
การตัดเซสชันเดียว การแจ้งไคลเอนต์ UDP ทุกราย และการรีสตาร์ทเดมอนเป็นคนละการดำเนินการ กำหนดขอบเขตก่อน แล้วจึงตรวจสอบเซสชันใหม่
มีคนขอให้เชื่อมต่อไคลเอนต์ VPN ใหม่ และคำขอนี้สามารถหมายถึงสามสิ่งที่แตกต่างกัน อาจหมายถึงการตัดเซสชันที่ผ่านการยืนยันตัวตนหนึ่งเซสชัน การแจ้งไคลเอนต์ทุกรายว่าเซิร์ฟเวอร์ UDP กำลังจะหายไป หรือการรีสตาร์ทเดมอนเอง แต่ละอย่างมีรัศมีผลกระทบต่างกัน และการเลือกผิดจะเปลี่ยนการแก้ไขสำหรับผู้ใช้รายหนึ่งให้กลายเป็นบริการล่มทั้งระบบ ขอบเขตคือการตัดสินใจ และคำสั่งตามมาจากขอบเขตนั้น
ถามว่าใครควรได้รับผลกระทบก่อนที่จะถามว่าจะใช้วิธีควบคุมใด
หนึ่งอินสแตนซ์: อินเทอร์เฟซการจัดการ
อินเทอร์เฟซการจัดการที่กำหนดค่าไว้สามารถแสดงรายการอินสแตนซ์ที่เชื่อมต่ออยู่และตัดได้อย่างแม่นยำหนึ่งรายการ แต่ละเซสชันมีตัวระบุไคลเอนต์ และ client-kill CID กำหนดเป้าหมายที่ตัวระบุนั้นแทนที่จะเป็นชื่อทั่วไป อ่านตัวระบุที่ยังใช้งานได้จากผลลัพธ์สถานะปัจจุบัน เพราะค่าที่คัดลอกมาจากบันทึกเก่าจะอ้างถึงเซสชันที่ไม่มีอยู่อีกแล้ว การตัดอินสแตนซ์จะจบการเชื่อมต่อนั้นและไม่มีอย่างอื่น
ไม่ได้หมายความว่าจะมีการเชื่อมต่อใหม่ การที่ไคลเอนต์จะกลับมาหรือไม่ขึ้นอยู่กับการตั้งค่าการลองใหม่ รายการระยะไกลที่เหลืออยู่ ข้อกำหนดการยืนยันตัวตน และแอปพลิเคชันที่กำกับดูแลยังทำงานอยู่หรือไม่ ไคลเอนต์ที่กลับมาจะได้ตัวระบุใหม่ ซึ่งเป็นเหตุผลว่าการเปรียบเทียบตัวระบุจึงเป็นวิธีเดียวที่เชื่อถือได้ในการแยกของเก่าออกจากของใหม่
การแจ้งออกของ UDP ไม่ใช่คำสั่งรายไคลเอนต์
explicit-exit-notify เป็นคำสั่งการกำหนดค่าเกี่ยวกับเหตุการณ์การออกและการรีสตาร์ท บนไคลเอนต์ UDP คำสั่งนี้บอกคู่ตรงข้ามว่าเซสชันกำลังจะสิ้นสุด และอาร์กิวเมนต์ตัวเลขควบคุมจำนวนครั้งที่การแจ้งจะถูกทำซ้ำ เมื่อเซิร์ฟเวอร์ทำงานผ่าน UDP จะส่งข้อความควบคุมการรีสตาร์ทไปยังไคลเอนต์ที่เชื่อมต่ออยู่ และค่าที่บันทึกไว้ในเอกสารจะแยกการเชื่อมต่อใหม่กับเซิร์ฟเวอร์เดิมออกจากการย้ายไปยังรายการระยะไกลอื่น นั่นคือสัญญาณวงจรชีวิตที่มีผู้รับเป็นวงกว้าง
ไม่มีสิ่งใดในคำสั่งนี้เลือกไคลเอนต์ใด ๆ ในเวลาใด ๆ การมองว่าเป็นปุ่มเชื่อมต่อใหม่จะไปถึงทุกเซสชันที่เชื่อมต่ออยู่พร้อมกัน
สัญญาณทำงานกับโปรเซส ไม่ใช่กับเซสชัน
SIGUSR1 ขอให้โปรเซสที่ทำงานอยู่รีสตาร์ทการเชื่อมต่อโดยไม่อ่านการกำหนดค่าซ้ำ และ ตัวเลือกความคงทนเป็นตัวกำหนดว่าอะไรจะอยู่รอดหลังการรีสตาร์ทนั้น SIGHUP ไปไกลกว่านั้น: อ่านไฟล์การกำหนดค่าซ้ำและเปิดทรัพยากรของตนใหม่ SIGTERM และ SIGINT ขอให้ปิดอย่างเป็นระเบียบ สิ่งเหล่านี้คือการดำเนินการระดับโปรเซส บนเซิร์ฟเวอร์ที่มีไคลเอนต์หลายรายจะส่งผลต่อทุกเซสชันที่โปรเซสรับไว้ ไม่ใช่เฉพาะเซสชันที่ระบุในตั๋ว
เมื่อโปรเซสทำงานภายใต้ตัวจัดการบริการ ให้ใช้การควบคุมของตัวจัดการเองแทนการส่งสัญญาณไปยัง PID ที่คุณพบในรายการโปรเซส อ่านยูนิตเพื่อดูว่าตัวจัดการส่งสัญญาณใด เพราะการรีสตาร์ทและการโหลดใหม่ทำสิ่งต่างกันกับเดมอนตัวเดียวกัน
กำหนดขอบเขตก่อนเลือกวิธีควบคุม
สามคำถามตัดสินเรื่องนี้ ใครควรได้รับผลกระทบ: ผู้ใช้รายเดียว ไคลเอนต์ทุกรายของเซิร์ฟเวอร์หนึ่ง หรือเดมอนและทุกสิ่งที่มันรับไว้ อะไรควรอยู่รอด: การกำหนดค่า สถานะอุโมงค์ หรือไม่ทั้งสองอย่าง ใครมีอำนาจ: การผสานรวมการจัดการ เจ้าของบริการ หรือผู้ดำเนินการเครือข่ายที่ควบคุมการแจ้งออก ตอบคำถามเหล่านี้แล้วจะมีเพียงวิธีควบคุมเดียวที่เหมาะสม
การเพิ่มตัวรับฟังการควบคุมที่ไม่ได้ยืนยันตัวตนเพื่อให้ได้ปุ่มเชื่อมต่อใหม่มอบให้ใครก็ตามที่เข้าถึงพอร์ตได้มากกว่าปุ่มนั้นมาก
ตรวจสอบเซสชันใหม่ ไม่ใช่การตัดการเชื่อมต่อ
เหตุการณ์ตัดการเชื่อมต่อพิสูจน์ว่าเซสชันเก่าสิ้นสุดลงแล้ว ไม่ได้บอกอะไรเกี่ยวกับเซสชันใหม่ที่กำลังยืนยันตัวตน รับที่อยู่ ติดตั้งเส้นทาง หรือเข้าถึงทรัพยากรที่ผู้ใช้ต้องการ ตรวจสอบตัวระบุใหม่ จากนั้นสถานะอุโมงค์ จากนั้นทรัพยากรจริงหนึ่งอย่าง สามขั้นตอนนั้นคือความแตกต่างระหว่างการเชื่อมต่อใหม่กับการเชื่อมต่อที่ใช้งานได้
เขียนขอบเขตลงในบันทึกการเปลี่ยนแปลง 'ฉันเชื่อมต่อไคลเอนต์ใหม่' ไม่ใช่คำอธิบายเมื่อไคลเอนต์เป็นหนึ่งในสี่สิบรายบนเซิร์ฟเวอร์ที่ใช้ร่วมกัน