ที่อยู่ไคลเอนต์ OpenVPN แบบคงที่เบื้องหลัง OPNsense
ไฟล์ pool ทำให้ที่อยู่ติดแน่น ไม่ถาวร ปักหมุดที่อยู่ไคลเอนต์ด้วย override ขยายช่วงทันเนลสำหรับการคำนวณ /30 แล้วเผยแพร่
ชื่อต้องการที่อยู่ที่ไม่เคลื่อนย้าย และไฟล์ pool ของ OpenVPN เพียงทำให้ที่อยู่ติดแน่น หากสูญเสียไฟล์นั้น หรือออกใบรับรองใหม่ภายใต้ชื่อสามัญอื่น ไคลเอนต์ที่กลับมาจะไปลงที่อื่นใน pool ขณะที่ระเบียน DNS ของมันยังชี้ไปที่ที่อยู่เดิม คำตอบที่ยั่งยืนคือ override เฉพาะไคลเอนต์ที่ปักหมุดที่อยู่ พร้อมเครือข่ายทันเนลที่กว้างขึ้นเพื่อให้ที่อยู่ที่ปักหมุดอยู่นอกช่วงไดนามิก การคำนวณเบื้องหลังการขยายนั้นคือที่ที่ความสับสนส่วนใหญ่อาศัยอยู่
OPNsense เก็บ override เหล่านี้ไว้ในการตั้งค่าเฉพาะไคลเอนต์ของเซิร์ฟเวอร์ โดยใช้ชื่อสามัญของใบรับรองเป็นคีย์ ซึ่งทำให้ชื่อสามัญเป็นส่วนหนึ่งของแผนที่อยู่
สัญญาเช่าที่ติดแน่นไม่ใช่ที่อยู่คงที่
ไฟล์ pool เขียนการจับคู่ที่อยู่กับไคลเอนต์และคืนค่าเหล่านั้นเมื่อไคลเอนต์ที่รู้จักเชื่อมต่อใหม่ นี่คือความสะดวกไม่ใช่สัญญา ไฟล์สามารถสร้างใหม่ได้ การจับคู่หายไปเมื่อตัวตนของไคลเอนต์เปลี่ยน และเซิร์ฟเวอร์สองตัวที่ใช้ pool เดียวกันจะไม่เห็นพ้องกันในเรื่องนี้ override เฉพาะไคลเอนต์ทำงานต่างออกไป เพราะที่อยู่มาจากการกำหนดค่าไม่ใช่จากประวัติ มันยังคงอยู่รอดจากการรีสตาร์ตและการติดตั้งอุปกรณ์ใหม่ หาก override ถูกสำรองไว้พร้อมการกำหนดค่าที่เหลือ
ทางเลือกแบบไดนามิก คือการเชื่อม VPN เข้ากับ DNS ด้วยสคริปต์ client-connect และการอัปเดตแบบไดนามิก ทำงานได้และต้องมี resolver ที่รับการอัปเดต พร้อมสคริปต์ในทุกการเชื่อมต่อ บนอุปกรณ์คุณจำกัดอยู่ที่แพ็กเกจที่ผู้จำหน่ายจัดส่ง และโดยปกติแผนนั้นก็หยุดอยู่ตรงนั้น
การคำนวณ /30 ที่ไม่มีใครชื่นชอบ
ในโทโพโลยี net30 เริ่มต้น ไคลเอนต์แต่ละตัวได้ /30 ของตัวเอง ที่อยู่ที่ใช้งานได้ตัวแรกไปฝั่งเซิร์ฟเวอร์ ตัวที่สองไปที่ไคลเอนต์ ดังนั้น override ต้องอยู่นอกเครือข่ายทันเนลไดนามิกของเซิร์ฟเวอร์ ซึ่งหมายถึงต้องขยายเครือข่ายนั้นก่อน เซิร์ฟเวอร์บน 10.8.0.0/24 สามารถย้ายไปที่ 10.8.0.0/23 โดยเหลือครึ่งหนึ่งของช่วงเดิมให้ไคลเอนต์ไดนามิกและอีกครึ่งหนึ่งให้ override เพิ่ม /24 เดิมเป็นเครือข่ายท้องถิ่น IPv4 เพิ่มเติม เพื่อให้ทราฟฟิกไปยังทั้งสองครึ่งผ่านเข้าทันเนล
ที่อยู่ override แต่ละรายต้องตกบนขอบ /30 ดังนั้นออกเต็ตสุดท้ายจึงเป็นจำนวนคูณของสี่ /30 บน 10.8.1.0 ให้ไคลเอนต์ 10.8.1.2 และนั่นคือที่อยู่ที่ระเบียน DNS พาไป การเลือก 10.8.1.3 แทนจะสร้างไคลเอนต์ที่เชื่อมต่อได้แต่ส่งทราฟฟิกไม่ได้ เพราะที่อยู่เป็นของซับเน็ตที่โทโพโลยีไม่เคยกำหนดให้
แผนจะดูแลง่ายกว่าถ้าจัดสรร override จากด้านบนของช่วงที่ขยายลงมา เพื่อให้ pool ไดนามิกขยายเข้าสู่พื้นที่ว่างแทนที่จะขยายรอบเกาะที่ตรึงไว้
เครือข่ายท้องถิ่นและโซนที่ไคลเอนต์สอบถาม
ทราฟฟิกระหว่างไคลเอนต์ต้องมีสิทธิ์ของตัวเอง รายการเครือข่ายท้องถิ่น IPv4 ของเซิร์ฟเวอร์ต้องรวมทั้งสองครึ่งของช่วง ทั้งไดนามิกและคงที่ หากไม่มี เซิร์ฟเวอร์จะรับแพ็กเก็ตจากไคลเอนต์หนึ่งและไม่มีนโยบายที่อนุญาตให้ผ่านไปยังอีกตัว อาการดูเหมือน DNS ล้มเหลว เพราะชื่อแก้ได้แต่การเชื่อมต่อยังล้มเหลว ตรวจการตั้งค่าระหว่างไคลเอนต์ในเวลาเดียวกัน เพราะรายการเครือข่ายท้องถิ่นเพียงอย่างเดียวไม่เปิดการส่งต่อระหว่างเพียร์
เผยแพร่ระเบียนในโซนที่ไคลเอนต์ระยะไกลสอบถามจริง ระเบียนในโซนที่ให้บริการโดย resolver ของ LAN เท่านั้นจะมองไม่เห็นสำหรับไคลเอนต์ที่ resolver ที่ถูกส่งไปชี้ที่อื่น และการเพิ่มระเบียนในโซนผิดก็ไม่เคยแก้ไขสิ่งนั้น ยืนยัน ตัวเลือก DNS ที่ถูกส่งไปและโดเมนค้นหา ก่อนเพิ่มสิ่งใด
สิ่งที่ต้องตรวจในการเชื่อมต่อใหม่
เชื่อมต่อไคลเอนต์ใหม่และยืนยันว่าที่อยู่ที่กำหนดตรงกับ override ของมันก่อนทดสอบสิ่งอื่น จากนั้นแก้ชื่อจากไคลเอนต์ตัวที่สองและเชื่อมต่อบริการด้วยชื่อ ซึ่งทดสอบระเบียน DNS เส้นทาง และไฟร์วอลล์ไปพร้อมกัน ยืนยันเส้นทางตอบกลับฝั่งเซิร์ฟเวอร์ เพราะชื่อที่แก้ได้แต่บริการยังเข้าถึงไม่ได้เป็นปัญหาเส้นทางหรือนโยบายไม่ใช่การตั้งชื่อ เก็บตาราง override ไว้ข้างรายการใบรับรองเพื่อให้ตรวจทั้งสองอย่างพร้อมกัน
ใบรับรองที่ออกใหม่ภายใต้ชื่อสามัญอื่นจะเลิกตรงกับ override ของมันและทำให้ไคลเอนต์กลับไปยัง pool ไดนามิก คาดหวังสิ่งนี้หลังการเปลี่ยนตัวตนใด ๆ