บันทึกของไคลเอนต์แสดงเซิร์ฟเวอร์ DNS ที่ถูกส่งมา อุโมงค์เชื่อมต่ออยู่ และชื่อภายในก็ยังไม่ถูกแปลงเป็นอะไรเลย ตัวการส่งนั้นไม่ได้เสียหายอะไร ตัวเลือกมาถึงแล้ว แต่ตัวแปลงชื่อของระบบปฏิบัติการไม่เคยใช้มัน เพราะในไคลเอนต์ Unix ส่วนใหญ่ OpenVPN ส่งค่าต่อและปล่อยให้แอปพลิเคชันจัดการบนแพลตฟอร์ม

อาการ: บันทึกแสดง DNS แต่ชื่อยังล้มเหลว

OpenVPN dhcp-option พาข้อมูล DNS และโดเมนไป และไคลเอนต์บันทึกสิ่งที่ได้รับ บางการใช้งานไคลเอนต์นำการตั้งค่าเหล่านั้นไปใช้ภายใน บางแบบเพียงส่งออกให้สคริปต์ผสานหรือบริการเครือข่ายนำไปใช้ บรรทัดในบันทึกเล่าเพียงครึ่งแรกของเรื่อง ครึ่งหลังเกิดขึ้นในที่ที่ไคลเอนต์ไม่ได้ควบคุม ความล้มเหลวมักอยู่ตรงนั้น

นั่นคือเหตุผลที่อุโมงค์ที่เชื่อมต่ออยู่กับชื่อภายในที่ล้มเหลวมักอยู่ด้วยกัน ค่ามีอยู่ ผู้ใช้ค่าหายไปหรือตั้งค่าผิด และตัวแปลงชื่อก็ยังคงใช้เซิร์ฟเวอร์สาธารณะที่ใช้ก่อนเชื่อมต่ออย่างเงียบ ๆ

การได้รับไม่ใช่การนำไปใช้

ไคลเอนต์อาจบันทึกค่า DNS ที่ถูกส่งมา ขณะที่ตัวแปลงชื่อของระบบยังเป็นของบริการอื่น เบราว์เซอร์อาจมีนโยบาย DNS แบบเข้ารหัสของตัวเองที่ข้ามตัวแปลงชื่อของระบบไปทั้งหมด ซึ่งสร้างสถานการณ์ที่น่าจดจำเมื่อแอปพลิเคชันหนึ่งแปลงชื่อภายในได้ แต่อีกตัวหนึ่งไม่ได้

ตรวจสอบการผสานที่การใช้งานรองรับ แทนที่จะสมมติว่าไคลเอนต์ Unix ทุกตัวเขียนไฟล์เดียวกันใหม่ ข้อสมมตินั้นคือเหตุผลที่ผู้คนแก้ไขการตั้งค่าตัวแปลงชื่อที่ไม่มีอะไรอ่าน

หาเจ้าของตัวแปลงชื่อในแต่ละแพลตฟอร์ม

บน Windows ตารางนโยบายการแปลงชื่อสามารถส่งต่อคำต่อท้ายที่เจาะจงไปยังเซิร์ฟเวอร์ที่เจาะจงได้ และไคลเอนต์ VPN อาจติดตั้งกฎไว้ที่นั่น ตรวจสอบนโยบาย ไม่ใช่แค่รายการ DNS ของอะแดปเตอร์ บน Linux ทั้ง NetworkManager หรือ systemd-resolved อาจเป็นเจ้าของการตั้งค่า และตัวใดเป็นเจ้าของก็กำหนดว่าการเชื่อมต่อใหม่จะรักษาอะไรไว้

อ่านสถานะจริงด้วยเครื่องมือที่ตอบคำถามได้จริง: resolvectl query internal.example.net บนโฮสต์ systemd-resolved หรือสิ่งที่เทียบเท่าของแพลตฟอร์ม จากนั้นเปรียบเทียบคำตอบนั้นกับเซิร์ฟเวอร์ DNS ที่บันทึกของไคลเอนต์อ้างว่าส่งไป

หลีกเลี่ยงการรันหลายบริการที่เขียนทับการตั้งค่าตัวแปลงชื่อโดยไม่ประสานกัน เจ้าของสองรายให้ผลลัพธ์ที่ดูเหมือนเป็นช่วง ๆ และการเชื่อมต่อใหม่แต่ละครั้งดูเหมือนซ่อมหรือทำให้มันเสียแบบสุ่ม

สคริปต์และ foreign_option

OpenVPN ส่งออกตัวเลือกที่ถูกส่งไปยังสคริปต์ผ่านตัวแปรชื่อ foreign_option_N และสคริปต์สามารถแปลเป็นคำสั่งของตัวแปลงชื่อได้ การจัดแบบนี้เป็นการผสานที่รองรับ ไม่ใช่พฤติกรรมอัตโนมัติ และต้องติดตั้งและเรียกใช้บนไคลเอนต์

ถ้าคุณพึ่งสคริปต์ ให้บันทึกการทำงานและสถานะการออก สคริปต์ที่ทำงานแต่ล้มเหลวอย่างเงียบ ๆ ทิ้งอาการเดียวกับไม่มีสคริปต์ และสังเกตได้ยากกว่าเพราะการตั้งค่าดูครบถ้วน ตรวจสอบผลลัพธ์ของสคริปต์ ไม่ใช่ไฟล์สคริปต์ ไฟล์ที่มีอยู่ไม่ใช่สคริปต์ที่ทำงานแล้ว

ทดสอบชื่อ ไม่ใช่บันทึก

ถามไคลเอนต์หาชื่อโฮสต์ภายในเท่านั้นหลังเชื่อมต่อ แล้วถามชื่อสาธารณะ แล้วตรวจว่าเซิร์ฟเวอร์ใดตอบ ในการตั้งค่าที่ทำงานได้ คำตอบทั้งสองมาจากคนละที่ และทั้งคู่ควรตรงกับการออกแบบ

ถ้าชื่อแปลงได้แต่บริการล้มเหลว ให้ไปต่อที่ การกำหนดเส้นทางและการเข้าถึงแอปพลิเคชัน แทนที่จะเปลี่ยน DNS อีกครั้ง คู่มือ OpenVPN อธิบาย dhcp-option และสภาพแวดล้อมสคริปต์ ใช้มันเพื่อยืนยันว่าไคลเอนต์ของคุณควรนำอะไรไปใช้ก่อนแก้ไขไฟล์ตัวแปลงชื่ออีกไฟล์

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