IPv6 ขาออกตายหลังรีสตาร์ต OpenVPN: ตรวจสอบว่าใครเป็นเจ้าของคำนำหน้า
IPv6 ตายหลังทันเนลถูกสร้างใหม่ ตัดสินใจว่าใครเป็นเจ้าของคำนำหน้าที่มอบหมาย ที่อยู่ไคลเอนต์ และเส้นทางขากลับ ก่อนรีสตาร์ตอะไรก็ตาม
IPv6 หยุดส่งทราฟฟิกในจังหวะที่ OpenVPN รีสตาร์ต และ IPv4 ยังทำงานอยู่ อินเทอร์เฟซของทันเนลถูกสร้างใหม่ และมีอย่างอื่นที่ดูแลสถานะ IPv6 ของมันสูญเสียที่อยู่หรือเส้นทางที่ทำให้คำนำหน้าเข้าถึงได้ มีสถานะสามส่วนแยกกันเกี่ยวข้อง และแต่ละส่วนมีเจ้าของต่างกัน: คำนำหน้าที่ผู้ให้บริการมอบหมายและอายุของมัน ที่อยู่ที่มอบให้ไคลเอนต์ VPN และเส้นทางต้นน้ำที่ส่งคำนำหน้าของไคลเอนต์นั้นกลับไปยังเซิร์ฟเวอร์ ระบุเจ้าของของแต่ละส่วนก่อนแตะเดมอนตัวใด เพราะการรีสตาร์ตตัวที่ผิดจะซ่อนปัญหาไว้หนึ่งวันแล้วทำให้กลับมาในการเชื่อมต่อครั้งถัดไป
สถานะ IPv6 สามส่วน เจ้าของสามราย
| State | Typical owner | What breaks when it is wrong |
|---|---|---|
| Delegated prefix and lifetime | Upstream router or provider via DHCPv6-PD | Clients keep addresses that the upstream no longer routes |
| Client addresses inside the tunnel | OpenVPN server config or a delegation daemon | No global address, or an address outside the routed prefix |
| Return route for the client prefix | Upstream router, or the server's own routing table | Outbound works, replies never arrive |
ที่อยู่แบบขอบเขตทั่วโลกภายในทันเนลอย่างเดียวไม่เพียงพอ เราเตอร์ต้นน้ำยังคงต้องส่งคำนำหน้านั้นกลับไปยังเซิร์ฟเวอร์ VPN และจะไม่ทำเพียงเพราะเซิร์ฟเวอร์บังเอิญมีที่อยู่จากมัน
นั่นคือเหตุผลที่การคัดลอก /64 สาธารณะลงในพูลทันเนลก็เสี่ยง คำนำหน้าที่ถูกเส้นทางไปยังเซิร์ฟเวอร์ไม่เหมือนกับคำนำหน้าที่ฝั่งต้นน้ำถือว่าเป็น on-link และการค้นหาเพื่อนบ้านจะไม่เติมช่องว่างนั้น
อ่านสถานะเซิร์ฟเวอร์ก่อนเปลี่ยนแปลงอะไร
บันทึกสถานะสองครั้ง ครั้งหนึ่งขณะ IPv6 ทำงาน และอีกครั้งหลังรีสตาร์ต แล้วเปรียบเทียบ มุมมองแบบอ่านอย่างเดียวก็เพียงพอ และไม่มีค่าใช้จ่ายใด ๆ ในช่วงหน้าต่างบำรุงรักษา:
ip -6 addr show
ip -6 route show table all
ip -6 rule show
sysctl net.ipv6.conf.all.forwarding
มองหาความแตกต่างเฉพาะสามอย่าง: เส้นทางที่หายไป ที่อยู่ที่เปลี่ยนไปเป็นอายุที่เลิกใช้หรือไม่ถูกต้อง และคำนำหน้าที่เปลี่ยนไปหลังการมอบหมายใหม่ในขณะที่การกำหนดค่า VPN ยังประกาศตัวเก่า
ถ้าที่อยู่หายไปแต่คำนำหน้าไม่เปลี่ยน เดมอนที่จัดสรรที่อยู่นั้นหยุดจัดการอินเทอร์เฟซ ถ้าคำนำหน้าเปลี่ยนแต่ที่อยู่ไม่เปลี่ยน การกำหนดค่าไคลเอนต์ล้าสมัย ความล้มเหลวทั้งสองดูเหมือนกันจากเบราว์เซอร์และไม่มีอะไรเหมือนกัน
ตัดสินใจว่า dhcpcd ควรจัดการทันเนลหรือไม่
dhcpcd สามารถค้นหาอินเทอร์เฟซและมอบหมายบางส่วนของคำนำหน้า DHCPv6 ให้อินเทอร์เฟซปลายน้ำ และการกำหนดค่าของมันสามารถระบุเป้าหมายการมอบหมายอย่างชัดเจน หากไม่มีเป้าหมายชัดเจน พฤติกรรมที่บันทึกไว้อาจเกี่ยวข้องกับอินเทอร์เฟซอื่น และนั่นคือวิธีที่ทันเนลได้ที่อยู่ที่ไม่มีใครวางแผนไว้
เงื่อนไขสองข้อควรผลักดันให้คุณปล่อยให้ OpenVPN เป็นเจ้าของการกำหนดที่อยู่แบบคงที่ของทันเนล: เซิร์ฟเวอร์ดันที่อยู่แบบคงที่ในการกำหนดค่าของมัน และชื่อทันเนลเปลี่ยนเมื่อเชื่อมต่อใหม่ หากทั้งสองเป็นจริง ให้ยกเว้นทันเนลออกจากเดมอนมอบหมายอย่างตั้งใจ พร้อมความคิดเห็นที่บอกเหตุผล
หากแทนที่จะเป็นการมอบหมายให้ทันเนลอย่างตั้งใจ ให้ใช้งานการจัดการการเปลี่ยนคำนำหน้า นั่นหมายถึงการตอบสนองเมื่อคำนำหน้าที่มอบหมายหรืออายุของมันเปลี่ยน อัปเดตคำนำหน้าไคลเอนต์ที่เซิร์ฟเวอร์ประกาศ และเพิ่มเส้นทางกลับเข้าไป การยกเว้นอินเทอร์เฟซในการออกแบบนั้นจะลบองค์ประกอบเดียวที่รู้จักคำนำหน้าใหม่
การรีสตาร์ต dhcpcd อาจดูเหมือนแก้ปัญหาได้เพราะสร้างสถานะใหม่ แต่ก็ต่ออายุหรือถอนการกำหนดค่าของอินเทอร์เฟซที่คุณไม่ได้คิดถึงด้วย การกู้คืนนั้นไม่ได้ทำให้มันเป็นข้อบังคับหลังการรีสตาร์ต VPN ทุกครั้ง มันยังรีเซ็ตตัวนับที่คุณใช้เป็นหลักฐานอีกด้วย ควรเลือกโหลดซ้ำเฉพาะอินเทอร์เฟซที่คุณเปลี่ยนจริง ๆ
ตรวจสอบ IPv6 แยกจาก NAT ของ IPv4
ยืนยันว่าการส่งต่อเปิดอยู่และเส้นทางต้นน้ำชี้ไปยังคำนำหน้าไคลเอนต์จริง จากนั้นสร้างการเชื่อมต่อ IPv6 ที่ได้รับอนุญาตใหม่ ตรวจสอบตารางเส้นทาง IPv6 ของไคลเอนต์เองด้วย เพราะไคลเอนต์ที่แสดงที่อยู่สาธารณะไม่ได้พิสูจน์ว่าคำขอของมันใช้ทันเนล
การมาสค์ IPv4 แก้ปัญหาอื่น: เส้นทางขากลับสำหรับแหล่งที่มาแบบส่วนตัว มันไม่ได้ทำอะไรกับคำนำหน้า IPv6 ที่ถูกถอน และการเพิ่มมันจะไม่ทำให้ IPv6 กลับมา
ปิดท้ายด้วยบันทึกความเป็นเจ้าของ: องค์ประกอบใดมอบหมายคำนำหน้า อันใดจัดสรรที่อยู่ไคลเอนต์ อันใดถือเส้นทางขากลับ และอะไรเกิดขึ้นกับแต่ละอันเมื่อเชื่อมต่อใหม่ สี่บรรทัดในรันบุ๊กช่วยให้คนถัดไปไม่ต้องรีสตาร์ตเดมอนสามตัวเพื่อหาเดมอนที่สำคัญจริง