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

ความเชื่อผิด: VPN ใหม่ที่สุดเป็นเจ้าของ DNS

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

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

จับคู่เนมสเปซกับรีโซลเวอร์

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

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

ใน Windows ตารางนโยบายการแก้ชื่อสามารถส่งซัฟฟิกซ์ไปยังเซิร์ฟเวอร์ที่ระบุได้ และไคลเอนต์ VPN อาจติดตั้งกฎไว้ที่นั่น ตรวจสอบนโยบายไม่ใช่รายการอะแดปเตอร์ เพราะรายการอะแดปเตอร์ไม่ใช่สิ่งที่แก้ชื่อ

เก็บเส้นทาง bootstrap ไว้

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

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

ที่อยู่ที่ทับซ้อนกันไม่ใช่ปัญหา DNS

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

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

พิสูจน์ด้วยแอปพลิเคชันจริง

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

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

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