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

ติดตามการค้นหาหนึ่งครั้งผ่านอะแดปเตอร์ NAT

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

ก่อนไปต่อ ให้ยืนยันว่าอะแดปเตอร์เป็น NAT ธรรมดาจริง อะแดปเตอร์บริดจ์ เครือข่าย NAT ที่มีชื่อ และไคลเอ็นต์ VPN ตัวที่สองภายในเกสต์ต่างมีคอนฟิกูเรชันและคำอธิบายของตัวเอง การเดาในขั้นนี้ทำให้การสอบสวนที่เหลือสูญเปล่า

VBoxManage showvminfo work-ubuntu --machinereadable | grep -i natnet
resolvectl status | head -40
cat /etc/resolv.conf

คำสั่งแรกแสดงโหมดของอะแดปเตอร์และเครือข่าย NAT ใดๆ ที่เชื่อมต่ออยู่ ภายในเกสต์ Ubuntu คำสั่งที่สองแสดงการตั้งค่า DNS ต่อลิงก์ และคำสั่งที่สามมักเผยเฉพาะที่อยู่ stub ภายในเท่านั้น ซึ่งหมายความว่า upstream จริงอยู่ที่อื่น

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

โหมดพร็อกซีและโหมดรีโซลเวอร์ของโฮสต์เป็นกลไกที่ต่างกัน

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

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

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

สลับอะแดปเตอร์ แล้วตรวจสอบว่าเกสต์ได้รับอะไร

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

VBoxManage modifyvm work-ubuntu --natdnshostresolver1 on
VBoxManage showvminfo work-ubuntu --machinereadable | grep -i natdns

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

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

ทดสอบตลอดวงจรชีวิตของ VPN ไม่ใช่เพียงครั้งเดียว

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

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

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

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