คำสั่งสองตัวที่มีชื่อเกือบเหมือนกันปรากฏในทุกตัวอย่างที่ใช้งานได้ และการคัดลอกตัวหนึ่งโดยไม่มีอีกตัวจะสร้างอุโมงค์ที่ดูถูกต้องแต่ทิ้งคำนำหน้าสาขาไปอย่างเงียบ ๆ ทั้งสองทำงานต่างกันคนละด้านของพรมแดนเดียวกัน ตัวหนึ่งสอนเคอร์เนลของเซิร์ฟเวอร์ว่าคำนำหน้าอยู่ที่ใด อีกตัวสอน 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 สาธารณะ มองว่าเป็นการเข้าถึงภายใน และแยกการออกสู่อินเทอร์เน็ตเป็นประเด็นต่างหากที่มีนโยบายของตัวเอง

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