ตัวช่วยเซิร์ฟเวอร์ OpenVPN: เครือข่ายบวกเน็ตมาสก์ ไม่ใช่ CIDR
ตัวช่วยเซิร์ฟเวอร์ IPv4 รับเครือข่ายที่จัดแนวแล้วและมาสก์แบบจุด ไม่ใช่ส่วนต่อท้าย CIDR ตรวจสอบช่วง ยืนยันพูลในบันทึก แล้วปรับขนาดอย่างปลอดภัย
บรรทัดเซิร์ฟเวอร์ที่ผสมส่วนต่อท้าย CIDR กับมาสก์แบบจุดจะหยุดเดมอนก่อนที่มันจะเปิดพอร์ตด้วยซ้ำ ตัวช่วย server สำหรับ IPv4 ต้องการอาร์กิวเมนต์สองตัวแยกกัน คือที่อยู่เครือข่ายที่จัดแนวแล้ว และตามด้วยเน็ตมาสก์ในรูปแบบจุด ทุกอย่างอื่นบนบรรทัดนั้นคือการคาดเดา และการคาดเดาคือที่ซึ่งขนาดพูลและมาสก์ของไคลเอนต์ผิดพลาด
อาร์กิวเมนต์สองตัวที่ตัวช่วยยอมรับ
เขียนเครือข่ายก่อนแล้วเขียนมาสก์ตามหลัง โดยไม่มีอะไรต่อท้ายที่อยู่:
server 10.72.16.0 255.255.240.0นี่คือรูปแบบสำหรับ /20 บรรทัดด้านล่างคือข้อผิดพลาด และมันล้มเหลวตอนแยกวิเคราะห์ตัวเลือก ไม่ใช่ตอนรัน:
server 10.72.16.0/20 255.255.240.0แยกสองแนวคิดนี้ออกจากกันเมื่อคุณแก้ปัญหานี้ ความยาวพรีฟิกซ์และมาสก์แบบจุดอธิบายช่วงเดียวกัน แต่ตัวช่วยไม่รับทั้งสองอย่างพร้อมกัน และบรรทัดที่ถูกปฏิเสธจะให้ข้อผิดพลาดตัวเลือกที่ระบุชื่อไดเรกทิฟ ไม่ใช่การคำนวณ
จัดแนวเครือข่ายก่อนที่คุณจะพิมพ์มาสก์
ที่อยู่แรกคือที่อยู่เครือข่ายของช่วง ไม่ใช่ที่อยู่ไคลเอนต์ที่สะดวกภายใน สำหรับ /20 ช่วงจะวิ่งจาก 10.72.16.0 ถึง 10.72.31.255 และมีเพียงตัวแรกเท่านั้นที่เป็นอาร์กิวเมนต์เครือข่ายที่ถูกต้อง /21 ใช้ 255.255.248.0 และครอบคลุม 10.72.16.0 ถึง 10.72.23.255 ดังนั้นบรรทัดของมันคือ server 10.72.16.0 255.255.248.0
การเปลี่ยนพรีฟิกซ์เปลี่ยนช่วงและไม่มีอะไรอื่น มันไม่เปลี่ยนจำนวนที่อยู่ที่ไคลเอนต์เดียวได้รับ เพราะนั่นเป็นคุณสมบัติของโทโพโลยี ไม่ใช่ของมาสก์บนบรรทัดนี้
ยืนยันพูลจากฝั่งเซิร์ฟเวอร์
เริ่มอินสแตนซ์ในเบื้องหน้าด้วยการบันทึกแบบละเอียด และอ่านบรรทัดที่ตัวช่วยปล่อยออกมา พูลที่มันสร้างจะถูกพิมพ์ตอนเริ่มระบบ ซึ่งเชื่อถือได้มากกว่าการคำนวณด้วยมือ:
openvpn --config /etc/openvpn/server.conf --verb 4 --dev tun9 --port 1195มองหาสรุปพูลใกล้ด้านบนของเอาต์พุต มันแสดงช่วงที่ตัวช่วยจองไว้ และถ้าช่วงนั้นไม่ตรงกับความตั้งใจของคุณ อาร์กิวเมนต์บนบรรทัดก็ผิด ไม่ว่าการคำนวณมาสก์จะพูดอย่างไร
จากนั้นเชื่อมต่อไคลเอนต์หนึ่งตัวและหาบรรทัดที่บันทึกที่อยู่ที่มอบให้ ที่อยู่เดียวนั้น ข้างช่วงพูล บอกคุณว่าไคลเอนต์ลงเอยในบล็อกที่จองไว้หรือที่อื่นที่คุณไม่ได้คาดคิด ถ้าทั้งสองไม่ตรงกัน ให้แก้ที่อาร์กิวเมนต์ไม่ใช่ไคลเอนต์ ถ้าตรงกันแต่ไคลเอนต์ยังเข้าถึงอะไรไม่ได้เลย พูลก็ไม่เคยเป็นปัญหา
อ่านมาสก์ของไคลเอนต์โดยคำนึงถึงโทโพโลยี
ไคลเอนต์ที่แสดง /30 บนอินเทอร์เฟซทันเนลของมันไม่ใช่หลักฐานของพูลที่พัง ในการกำหนดที่อยู่แบบจุดต่อจุด ไคลเอนต์แต่ละตัวได้บล็อกเล็ก ๆ และมาสก์อินเทอร์เฟซของมันอธิบายบล็อกนั้น ขณะที่พูลของเซิร์ฟเวอร์ครอบคลุมทั้งหมด ในโทโพโลยีซับเน็ต มาสก์ของไคลเอนต์จะตรงกับมาสก์ของพูลแทน ดังนั้นมาสก์เพียงอย่างเดียวบอกว่าโทโพโลยีใดกำลังใช้งาน ไม่ได้บอกว่าพูลเขียนถูกต้องหรือไม่
ตรวจสอบโทโพโลยีที่กำหนดค่าไว้และที่อยู่ที่จัดสรรให้พร้อมกันก่อนสรุป:
ip -4 addr show tun0ถ้าที่อยู่อยู่ในพูลและมาสก์แคบกว่าพูล นั่นคือโทโพโลยีที่กำลังทำหน้าที่ของมัน ถ้าที่อยู่อยู่นอกพูล พูลก็ผิด และการตรวจสอบฝั่งไคลเอนต์ไม่ว่าจะมากเพียงใดก็แก้ไม่ได้
การเปลี่ยนพูลที่ใช้งานอยู่
เลือกช่วงที่ไม่ทับซ้อนกับพูลปัจจุบัน LAN หรือ เส้นทางใด ๆ ที่ส่งไปยังไคลเอนต์แล้ว การทับซ้อนคือความล้มเหลวที่อยู่รอดจากการรีสตาร์ต แล้วหลายวันต่อมาปรากฏเป็นไซต์หนึ่งที่เข้าถึงไม่ได้จากทิศทางหนึ่ง
เปลี่ยนบรรทัด รีสตาร์ต และอ่านพูลตอนเริ่มระบบอีกครั้งก่อนปล่อยผู้ใช้กลับเข้ามา ถ้าช่วงใหม่ชนกับอะไรก็ตาม เอาต์พุตตอนเริ่มระบบเดียวกันจะแสดงให้เห็นทันที และการย้อนกลับคือการแก้ไขบรรทัดเดียวบวกการรีสตาร์ตอีกครั้ง
เก็บช่วงเก่าไว้จองสักระยะหลังการเปลี่ยนแปลง ไคลเอนต์ที่เชื่อมต่อช้าอาจยังถือที่อยู่จากพูลก่อนหน้า และช่วงใหม่ที่ใช้ที่อยู่เหล่านั้นซ้ำจะสร้างการกำหนดที่อยู่ซ้ำซ้อนซึ่งดูเหมือนความผิดพลาดในการกำหนดเส้นทาง คู่มือ OpenVPN 2.6 อธิบายอาร์กิวเมนต์ของตัวช่วยและการขยายตัวของมัน ซึ่งคุ้มค่าที่จะอ่านก่อนสรุปว่าไดเรกทิฟหนึ่งใช้สัญกรณ์เดียวกับเพื่อนบ้าน