ส่วนประกอบใดเป็นเจ้าของขีดจำกัดเส้นทางของ OpenVPN จริง ๆ?
ขีดจำกัดเส้นทางอาจเป็นของเอนจิน OpenVPN ปลั๊กอิน NetworkManager หรือเซิร์ฟเวอร์ ระบุเจ้าของก่อนแก้ไขโปรไฟล์หรือเพิ่มตัวเลข
โปรไฟล์ที่มีเส้นทางสองร้อยรายการทำงานบนเครื่องหนึ่งและติดตั้งได้แค่สี่สิบบนอีกเครื่องหนึ่ง เอนจิน การเชื่อมต่อที่เริ่มมัน และเซิร์ฟเวอร์ที่ป้อนข้อมูลให้มัน ต่างก็มีสิทธิ์พูด และแต่ละตัวสามารถหยุดรายการที่จุดต่างกัน การอ่านความล้มเหลวเป็นขีดจำกัดเดียวจะพาคุณไปผิดไฟล์ กลไกมีสามขั้น และขั้นที่หยุดจะทิ้งหลักฐานที่มองเห็นได้เมื่อคุณรู้ว่าจะหาอะไร
สามขั้น สามขีดจำกัดที่ต่างกัน
ขั้นแรกเอนจินแยกวิเคราะห์ตัวเลือกและตัดสินว่าเวอร์ชันนี้เข้าใจมันหรือไม่ จากนั้นการเชื่อมต่อจะติดตั้งสิ่งที่เอนจินรายงาน และโค้ดของมันเองอาจจำกัดหรือปรับรูปทรงรายการ สุดท้ายเซิร์ฟเวอร์ตัดสินว่าจะส่งเส้นทางกี่เส้นให้กับตัวตนหนึ่ง ๆ ก่อนที่ขั้นใดของไคลเอนต์จะเห็นอะไรเลย สามขั้น สามเพดาน และมีเพียงหนึ่งเดียวที่เป็นตัวเลขในโปรไฟล์
การยกเพดานหนึ่งไม่ได้ช่วยอะไรกับตัวอื่น เส้นทางที่ถูกส่งแล้วถูกปฏิเสธอาจเป็นการตัดสินใจเชิงนโยบายบนเซิร์ฟเวอร์ การทับซ้อนที่ไคลเอนต์แก้ไข หรือขีดจำกัดของตัวติดตั้งที่ทิ้งส่วนเกินไป แต่ละกรณีมีวิธีแก้ต่างกัน
แยกทั้งสามออกก่อนวัดอะไรก็ตาม ข้อผิดพลาดของตัวแยกวิเคราะห์ระบุโทเค็น ขีดจำกัดของตัวติดตั้งทิ้งตารางเส้นทางสั้น ๆ และการตัดสินใจเชิงนโยบายไม่ทิ้งอะไรเลย หลักฐานบอกคุณว่าควรตรวจขั้นใดก่อน
| Stage | Who decides | What you can see |
|---|---|---|
| Parse | Client engine | An error naming the option |
| Install | Activation owner | A route count below the pushed count |
| Offer | Server policy | A route absent from the pushed list |
ตัวแยกวิเคราะห์พูดก่อน
ตัวเลือกที่ไม่รู้จักล้มเหลวเสียงดังและรวดเร็ว และข้อความข้อผิดพลาดระบุโทเค็น นั่นคือขั้นที่ระบุได้ง่ายที่สุด เปรียบเทียบข้อความที่แน่นอนกับเวอร์ชันเอนจินที่ติดตั้งไว้ เพราะตัวเลือกที่เพิ่มในรุ่นหนึ่งเป็นสิ่งที่ไม่รู้จักในรุ่นก่อนหน้า โปรไฟล์ที่คัดลอกจากระบบติดตั้งที่ใหม่กว่าคือแหล่งที่มาปกติของความไม่ตรงกันนี้ ตัวแยกวิเคราะห์ไม่เคยเพิกเฉยต่อคำสั่งที่ไม่รู้จักอย่างเงียบ ๆ
ตัวเลือกที่ยอมรับไม่ได้บอกอะไรเกี่ยวกับผลลัพธ์ การแยกวิเคราะห์สำเร็จ และรายการยังอาจถูกตัดโดยตัวติดตั้งหรือเซิร์ฟเวอร์อาจไม่เคยเสนอให้เลย มองการแยกวิเคราะห์ที่สะอาดเป็นการอนุญาตให้ดำเนินการต่อ ไม่ใช่หลักฐาน
บันทึกสตริงเวอร์ชันจากไบนารีที่รันจริง ไม่ใช่จากความคิดของผู้จัดการแพ็กเกจว่าได้ติดตั้งอะไรไว้ สองสิ่งนี้ไม่ตรงกันบ่อยกว่าที่คาด
ตัวติดตั้งมีเพดานของตัวเอง
ส่วนประกอบที่เป็นเจ้าของการเปิดใช้งานอาจเป็นปลั๊กอิน NetworkManager แทนที่จะเป็นไบนารีของเอนจิน และมันอาจบังคับขีดจำกัดของตัวเองก่อนที่อุโมงค์ใดจะเกิดขึ้น ตัวแก้ไขของมันอาจแสดงฟิลด์ที่เอนจินที่กำลังทำงานไม่เคยอ่าน หรืออ่านฟิลด์ที่ตัวแก้ไขไม่แสดง สองสถานการณ์นี้ดูเหมือนบั๊กของไคลเอนต์จากภายนอก ไม่มีอันใดแก้ได้ด้วยการแก้ไขโปรไฟล์
นับสิ่งที่มาถึง ไม่ใช่สิ่งที่ถูกตั้งค่า คำสั่ง ip route show dev tun0 แสดงรายการเส้นทางที่ติดตั้ง และการเทียบจำนวนนั้นกับรายการที่ส่งไปจะแยกเส้นทางที่ถูกทิ้งออกจากเส้นทางที่ไม่เคยถูกส่ง จำนวนที่ตรงกับการส่งจะโยนความสงสัยกลับไปที่เซิร์ฟเวอร์
ตัวห่อเชลล์รอบไบนารีของเอนจินเพื่อบังคับตัวเลขที่ใหญ่ขึ้นทำให้การอัปเกรดคลุมเครือและทำให้การย้อนกลับเป็นการเดา มันยังซ่อนขีดจำกัดจริงจากทุกคนที่จะอ่านการกำหนดค่าในครั้งถัดไป
เซิร์ฟเวอร์ตัดสินว่าคุณได้รับข้อเสนออะไร
นโยบายต่อไคลเอนต์อาจย่อรายการก่อนส่งออก ไฟล์เฉพาะไคลเอนต์อาจเพิ่มเส้นทางให้ตัวตนหนึ่ง หรือนโยบายกลุ่มอาจละเว้นเส้นทางเหล่านั้น และไคลเอนต์ไม่สามารถแยกเส้นทางที่ถูกกรองออกจากเส้นทางที่ไม่เคยถูกกำหนดได้ ความกำกวมนี้เองที่ทำให้บันทึกของเซิร์ฟเวอร์สำคัญ ขอรายการส่งที่มีผลจริงสำหรับตัวตนนั้น ไม่ใช่เทมเพลต
เปรียบเทียบบันทึกของเซิร์ฟเวอร์กับรายการที่ได้รับ ช่องว่างระหว่างสองสิ่งนั้นคือชั้นนโยบาย และโดยปกติมันเล็กกว่าที่โปรไฟล์บอกเป็นนัย
เมื่อการออกแบบอนุญาต ให้สรุปเครือข่ายที่อยู่ติดกันและลบรายการที่ล้าสมัย เส้นทางที่น้อยลงแต่ใหญ่กว่าจะแก้ปัญหาได้มากกว่าเพดานที่สูงกว่า
เปลี่ยนตัวเลขในที่ที่ถูกต้อง
ใช้การตั้งค่าที่มีเอกสารของส่วนประกอบที่เป็นเจ้าของขีดจำกัดจริง ๆ หากฟิลด์หายไปจากปลั๊กอิน ให้ตรวจว่าปลั๊กอินเก่ากว่าความสามารถหรือมีส่วนหลังอื่นเป็นเจ้าของเส้นทาง จากนั้นบันทึกเวอร์ชันของเอนจิน ปลั๊กอิน และเซิร์ฟเวอร์ไว้ข้างค่าที่คุณเลือก การอัปเกรดครั้งถัดไปจะเปิดคำถามอีกครั้ง และบันทึกนี่เองที่ทำให้มันตอบได้
ทดสอบซ้ำหลังการอัปเกรดใด ๆ ของทั้งสาม ขีดจำกัดที่ยกในที่ถูกต้องก็ยังเคลื่อนที่เมื่อส่วนประกอบที่บังคับใช้เปลี่ยน บันทึกเวอร์ชันเป็นสิ่งเดียวที่ทำให้การเคลื่อนที่นั้นคาดเดาได้