คำนำหน้าสาขา IPv6: iroute-ipv6 หรือ route-ipv6 บนเซิร์ฟเวอร์?
route-ipv6 พาคำนำหน้าไปยังเคอร์เนลของเซิร์ฟเวอร์ ส่วน iroute-ipv6 ระบุไคลเอนต์ที่แบกมันไว้ ทั้งสองอยู่บนเซิร์ฟเวอร์ที่สิ้นสุดไคลเอนต์นั้น
คำสั่งสองตัวที่มีชื่อเกือบเหมือนกันปรากฏในทุกตัวอย่างที่ใช้งานได้ และการคัดลอกตัวหนึ่งโดยไม่มีอีกตัวจะสร้างอุโมงค์ที่ดูถูกต้องแต่ทิ้งคำนำหน้าสาขาไปอย่างเงียบ ๆ ทั้งสองทำงานต่างกันคนละด้านของพรมแดนเดียวกัน ตัวหนึ่งสอนเคอร์เนลของเซิร์ฟเวอร์ว่าคำนำหน้าอยู่ที่ใด อีกตัวสอน OpenVPN ว่าไคลเอนต์ที่ผ่านการยืนยันตัวตนตัวใดเป็นผู้แบกมัน ถ้าทั้งสองถูก คำนำหน้าก็ไหล ถ้าถูกเพียงตัวเดียว แพ็กเก็ตมีเส้นทางแต่ไม่มีเจ้าของ
คำสั่งสองตัว สองงานที่ต่างกัน
route-ipv6 คือการติดตั้งเส้นทางธรรมดา เซิร์ฟเวอร์เพิ่มเส้นทางเคอร์เนลที่ชี้คำนำหน้าไปยังอินเทอร์เฟซอุโมงค์ของตน iroute-ipv6 เป็นของบริบทเฉพาะไคลเอนต์และประกาศความเป็นเจ้าของภายใน ดังนั้นดีมอนจึงรู้ว่าทราฟฟิกของคำนำหน้านั้นควรถูกส่งไปยังไคลเอนต์ที่ระบุ ไม่ใช่ไปยังพีียร์ที่เส้นทางเคอร์เนลบังเอิญระบุ
ตัวหนึ่งเกี่ยวกับตารางการส่งต่อของเคอร์เนล อีกตัวเกี่ยวกับแบบจำลองการกำหนดเส้นทางภายในของดีมอน การแยกทั้งสองออกจากกันอธิบายว่าทำไมการกำหนดค่าที่ดูสมบูรณ์ยังทิ้งคำนำหน้าได้ และอธิบายด้วยว่าทำไมเครือข่ายเดียวกันจึงปรากฏสองครั้งในทุกตัวอย่างที่ใช้งานได้ ไม่มีบรรทัดใดที่เกินจำเป็น
ในการตั้งค่า userspace แบบดั้งเดิมต้องใช้ทั้งสองและทั้งสองเสริมกัน เส้นทางเคอร์เนลอย่างเดียวทำให้ดีมอนเลือกพีียร์ไม่ได้ iroute อย่างเดียวทำให้เคอร์เนลไม่มีทางไปยังอุโมงค์ ความสับสนส่วนใหญ่เกี่ยวกับไฟล์ต่อไคลเอนต์ก็มาจากตรงนี้ ไฟล์ไม่ใช่รายการในตารางเส้นทาง และรายการเส้นทางไม่ใช่คำประกาศความเป็นเจ้าของ
ip -6 route show | grep fd00:7a
ip -6 route get fd00:7a::1แต่ละตัวอยู่ที่ใด
เส้นทางอยู่ในคอนฟิกูเรชันที่จัดการโดยเซิร์ฟเวอร์ ซึ่งมีผลกับโปรเซสเซิร์ฟเวอร์นั้น iroute อยู่ในไฟล์เฉพาะไคลเอนต์ที่ตั้งชื่อตามตัวตนที่ผ่านการยืนยันของอุปกรณ์สาขา
ชื่อไฟล์ที่ไม่ตรงกับตัวตนจริงจะไม่ถูกอ่านเลย และอาการก็เหมือนกับ iroute ที่หายไป ตรวจสอบตัวตนที่เซิร์ฟเวอร์ยืนยันแล้ว จากนั้นตรวจชื่อไฟล์ทีละอักขระ
# /etc/openvpn/server/server.conf
route-ipv6 fd00:7a::/64
client-config-dir /etc/openvpn/server/ccd
# /etc/openvpn/server/ccd/branch-b
iroute-ipv6 fd00:7a::/64เก็บพูลกับคำนำหน้าสาขาแยกจากกัน เพราะการทับซ้อนกันสร้างปริศนาที่ไม่มีคำสั่งใดแก้ได้
ไคลเอนต์อื่นต้องการอะไร
ไคลเอนต์ตัวที่สองที่ต้องไปถึงสาขานั้นต้องการการประกาศ ไม่ใช่ความเป็นเจ้าของ ส่งคำนำหน้าไปยังไคลเอนต์ที่ต้องการ ในบริบทของไคลเอนต์หรือกลุ่มที่เข้ากับคอนฟิกูเรชันของคุณ
อย่าส่งไปยังสาขาเอง เพราะอุปกรณ์นั้นมีคำนำหน้าเป็นเครือข่ายที่เชื่อมต่ออยู่แล้ว
การส่งให้ทุกคนเป็นทางเลือกที่มีผลตามมา ทุกไคลเอนต์จะเชื่อว่าสาขาเข้าถึงได้ผ่านอุโมงค์ รวมถึงไคลเอนต์ที่คุณไม่เคยตั้งใจให้เข้าถึง การประกาศในทางปฏิบัติคือการตัดสินใจเรื่องการเข้าถึง แม้คำสั่งจะดูเหมือนงานประปา เอกสารอ้างอิงตัวเลือกของเซิร์ฟเวอร์ ระบุ iroute-ipv6 ว่าเป็นความเป็นเจ้าของเฉพาะไคลเอนต์ และนั่นคือความแตกต่างที่ควรเก็บไว้
เส้นทางขากลับบนอุปกรณ์สาขา
ความเป็นเจ้าของช่วยได้ก็ต่อเมื่อสาขาส่งต่อแพ็กเก็ตและ LAN ของมันรู้วิธีตอบ เปิดการส่งต่อ IPv6 บนอุปกรณ์สาขา และยืนยันว่าโฮสต์ใน LAN ส่งทราฟฟิกของพูล VPN กลับมาทางสาขา ไม่ใช่ไปยังเส้นทางเริ่มต้นที่ไม่รู้จักพูล
เส้นทางขากลับนั้น คือสิ่งที่เทียบเท่าใน IPv6 ของปัญหเส้นทางที่หายไปซึ่งผู้คนเจอใน IPv4.
ตรวจสอบจากโฮสต์ใน LAN ด้วยการสอบถามที่อยู่ของพูล VPN ไม่ใช่จากสาขาเอง การสอบถามบนเราเตอร์ตอบคำถามคนละข้อกับที่ผู้ใช้ของคุณถาม และทั้งสองไม่ตรงกันบ่อยพอที่จะคุ้มกับคำสั่งเพิ่ม
เมื่อคู่นั้นยังไม่พอ
บางการติดตั้งไม่ใช้เส้นทางนี้เลย เส้นทางข้อมูลของเคอร์เนลและเซิร์ฟเวอร์ที่จัดการโดยผลิตภัณฑ์มีการจัดการเส้นทางที่รองรับของตัวเอง และตัวอย่าง userspace อาจไม่ถ่ายโอนตรง ๆ
ยืนยันว่าบิลด์ของคุณใช้เส้นทางข้อมูลใดก่อนคัดลอกคำสั่งจากบทช่วยสอนที่เขียนสำหรับอีกเส้นทางหนึ่ง
สุดท้าย จำขอบเขตที่อยู่ไว้ คำนำหน้าท้องถิ่นที่ไม่ซ้ำเช่น fd00:7a::/64 เป็นส่วนตัวโดยการออกแบบและไม่บอกอะไรเกี่ยวกับการเข้าถึง IPv6 สาธารณะ มองว่าเป็นการเข้าถึงภายใน และแยกการออกสู่อินเทอร์เน็ตเป็นประเด็นต่างหากที่มีนโยบายของตัวเอง