ifconfig-push: ที่อยู่ใน net30 เป็น peer address หรือ netmask ของ subnet?
อาร์กิวเมนต์ที่สองของ ifconfig-push คือ peer address ใน net30 และ netmask ภายใต้ topology subnet เปรียบเทียบโทโพโลยีที่กำลังทำงานก่อนแก้ไขไฟล์ CCD
ไคลเอนต์แบบไดนามิกเชื่อมต่อและกำหนดเส้นทางได้ดี แต่ไคลเอนต์ตัวเดียวที่มีที่อยู่คงที่กลับไปถึงเซิร์ฟเวอร์ไม่ได้เลย ไม่มีอะไรเปลี่ยนแปลงในไฟร์วอลล์ และบรรทัด CCD ดูสมเหตุสมผล สาเหตุปกติคืออาร์กิวเมนต์ที่สองที่เขียนไว้สำหรับโทโพโลยี TUN คนละแบบกับที่เซิร์ฟเวอร์กำลังใช้งาน ความล้มเหลวนี้เงียบ: ไคลเอนต์ขึ้นมาพร้อมที่อยู่และเซิร์ฟเวอร์ยอมรับการเชื่อมต่อ แต่ไม่มีทราฟฟิกผ่านเลย
ภายใต้ net30 ฟิลด์นั้นคือ peer address ส่วนภายใต้ subnet มันคือ netmask สองรูปแบบนี้เป็นทางเลือก ไม่ใช่ลำดับ
สองรูปแบบเคียงข้างกัน
ในการติดตั้ง net30 แบบดั้งเดิม ไคลเอนต์แต่ละตัวเป็นเจ้าของบล็อก /30 หนึ่งบล็อก: ที่อยู่เครือข่าย ที่อยู่ที่ใช้งานได้สองที่อยู่ และที่อยู่ Broadcast ifconfig-push รับที่อยู่ของไคลเอนต์และที่อยู่ของ peer โดย peer คือที่อยู่ที่ใช้งานได้อีกตัวในบล็อกเดียวกัน ซึ่งฝั่งเซิร์ฟเวอร์ของลิงก์แบบจุดต่อจุดใช้งาน
# net30: client address and its peer
ifconfig-push 10.99.0.6 10.99.0.5
# topology subnet: client address and the pool netmask
ifconfig-push 10.99.0.20 255.255.255.0
ภายใต้ topology subnet ไคลเอนต์แชร์ subnet หนึ่งกับเซิร์ฟเวอร์ และคำสั่งเดียวกันรับที่อยู่และ netmask ที่อยู่ของเซิร์ฟเวอร์เองมาจากคำสั่ง server ไม่ใช่จากฟิลด์ที่สอง การผสมรูปแบบทำให้ไคลเอนต์เชื่อว่าตนอยู่ในลิงก์แบบจุดต่อจุด ขณะที่เซิร์ฟเวอร์กำหนดเส้นทางให้เป็นโฮสต์ใน subnet หรือกลับกัน ด้วยเหตุนี้ netmask จึงต้องไม่ถูกจับคู่กับ net30 เด็ดขาด
ทั้งสองบรรทัดในบล็อกเป็นบรรทัดเดี่ยวสำหรับไฟล์ CCD ไคลเอนต์หนึ่งตัวจะได้รับเพียงหนึ่งในนั้น
อ่านโทโพโลยีที่เซิร์ฟเวอร์กำลังใช้งานจริง
อ่านการกำหนดค่าที่กำลังทำงาน ไม่ใช่ค่าเริ่มต้นของแพ็กเกจ เพราะโทโพโลยีอาจถูกตั้งไว้หลายปีก่อนแล้วคัดลอกต่อมา มองหา topology subnet หรือการไม่มีอยู่ของมัน แล้วตรวจสอบว่าบรรทัด server จัดสรรที่อยู่อย่างไร การกำหนดค่าที่ไม่เคยกล่าวถึงโทโพโลยีไม่เหมือนกับการกำหนดค่าที่ตั้ง subnet
จากนั้นอ่านการตั้งค่าที่ไคลเอนต์ได้รับ ที่อยู่ netmask และ peer ที่มันรายงานจะบอกคุณว่าเซิร์ฟเวอร์ใช้การตีความแบบใด
เก็บที่อยู่คงที่ไว้นอกพูลไดนามิก
ที่อยู่คงที่ต้องอยู่นอกพูลไดนามิก ไม่อย่างนั้นไคลเอนต์สองตัวอาจได้รับที่อยู่เดียวกัน ภายใต้โทโพโลยี subnet nopool บนบรรทัด server จะระงับพูลอัตโนมัติ และช่วง ifconfig-pool ที่ระบุชัดเจนจะกำหนดว่าไคลเอนต์ไดนามิกได้รับอะไร
dev tun
topology subnet
server 10.99.0.0 255.255.255.0 nopool
ifconfig-pool 10.99.0.100 10.99.0.210 255.255.255.0
client-config-dir /etc/openvpn/ccd
เซิร์ฟเวอร์ใช้ 10.99.0.1 สำหรับตัวเอง และที่อยู่คงที่ของไคลเอนต์อยู่นอกช่วงของพูล ไฟล์ CCD ตั้งชื่อตามตัวตนที่มีผลของไคลเอนต์ ไม่ใช่ชื่อไฟล์โปรไฟล์ และไม่มีนามสกุลเพิ่มเติม หาก username-as-common-name ทำงานอยู่ ชื่อผู้ใช้ที่ผ่านการรับรองความถูกต้องคือตัวตนที่ต้องจับคู่ อุปกรณ์สองเครื่องที่ใช้ตัวตนร่วมกันจะใช้ที่อยู่คงที่ร่วมกันด้วย ซึ่งเป็นปัญหานโยบายไม่ใช่ปัญหาเส้นทาง
ตรวจสอบการจัดสรรที่ไคลเอนต์ได้รับจริง
เชื่อมต่อไคลเอนต์ที่ต้องการใหม่ และยืนยันว่าเลือกไฟล์ CCD ใดก่อนตรวจสอบสิ่งอื่นใด จากนั้นตรวจสอบที่อยู่ netmask หรือ peer และเส้นทางกลับไปยังเซิร์ฟเวอร์ ไคลเอนต์ที่แสดง peer address ในการติดตั้ง subnet ยังคงใช้รูปแบบผิด
การเปลี่ยนโทโพโลยีส่งผลต่อทุกไคลเอนต์และทุกการเขียนทับ ดังนั้นให้ถือว่าเป็นการย้ายระบบ ไม่ใช่การซ่อมไคลเอนต์ตัวเดียว การแก้บรรทัดคงที่ให้ตรงกับโทโพโลยีที่ใช้อยู่แล้วมักเป็นการเปลี่ยนแปลงที่เล็กกว่า เอกสารอ้างอิง server-options อธิบายตัวช่วยและการเขียนทับเฉพาะไคลเอนต์