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

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