VirtualBox - แขก Ubuntu สูญเสีย DNS เมื่อโฮสต์เชื่อมต่อกับ VPN


11

ฉันมี Ubuntu guest OS ใน VirtualBox โดยใช้ค่าเริ่มต้น NAT สำหรับ eth0

ทำงานได้ดีที่สำนักงานและที่บ้านยกเว้นเมื่อใช้ VPN ที่บ้านจากที่บ้าน

เมื่อโฮสต์ OS (Windows 7) เชื่อมต่อกับ VPN การค้นหา DNS จะไม่ทำงานภายในเกสต์ Virtualbox การค้นหา DNS ทำได้ดีบนโฮสต์ ภายใน Virtualbox ฉันสามารถ ping IP โดยตรงทั้งภายใน VPN และภายนอกดังนั้นจึงไม่ใช่ปัญหาการเชื่อมต่อ

ดูเหมือนว่าผู้เข้าพักจะใช้อูบุนตู localhost เป็นจุดรายการ DNS ตามและ/etc/resolv.conf nslookupดังนั้นดูเหมือนว่าบางอย่างในเครื่องจะส่งไปยัง DNS พื้นฐานอื่น

ฉันจะแก้ไขปัญหานี้ได้อย่างไร


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

เพื่อชี้แจงการค้นหา DNS บนโฮสต์ให้ทำงานได้ดี - เป็นเพียงแขก Virtualbox ที่ได้รับผลกระทบ
wrschneider

คำตอบ:


17

สิ่งนี้ทำงานได้ด้วยเหตุผลบางอย่าง

C:\...\VirtualBox\VBoxManage modifyvm "VM name" --natdnshostresolver1 on

ฉันสงสัยว่าเป็นเพราะเมื่อ VPN เปิดใช้งานโฮสต์กำลังทำสิ่งพิเศษสำหรับการค้นหา DNS นอกเหนือจากการส่งต่อการร้องขอไปยังเซิร์ฟเวอร์ DNS ที่ระบุที่ VirtualBox รับจาก Windows config


1
คุณบันทึกวันเพื่อน
CantGetANick

ทำงานอย่างสมบูรณ์แบบสำหรับฉัน!
Hai Minh Nguyen

1

ฉันมีสถานการณ์ที่คล้ายกันมากกับ Lubuntu 16.04 (ควรเหมือนกันใน Ubuntus อื่น ๆ ) แต่การแก้ไขนี้ไม่ได้ปรับปรุงสถานการณ์ อย่างน้อยกับ 16.04 ปัญหาดูเหมือนจะเป็นว่า NetworkManager ใช้พร็อกซี DNS ท้องถิ่น (dnsmasq) และสิ่งนี้เล่นได้ไม่ดีกับการเชื่อมต่อ VPN อย่างน้อยในการกำหนดค่าเริ่มต้น

การแสดงความคิดเห็น / ลบ dns = dnsmasq ใน /etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile,ofono
# dns=dnsmasq

อาจเป็นวิธีการกำหนดค่า dnsmasq แต่ให้ (ฉัน) เทียบเท่าการเข้าถึงโฮสต์ (dns เป็นต้น) ดังนั้นฉันไม่ได้ตรวจสอบ YMMV


1

TL; DR:

  • รีบูตเครื่อง VM เพื่อให้แน่ใจว่าสถานะ VPN (เชื่อมต่อหรือยกเลิกการเชื่อมต่อ) ของโฮสต์จะไม่เปลี่ยนแปลงในระหว่างนี้
  • ให้โปรแกรม VirtualBox NAT สกัดกั้นการร้องขอ DNS และส่งต่อไปยังโปรแกรมแก้ไขของโฮสต์นั่นคือการใช้ DNS API ของโฮสต์เพื่อสอบถามข้อมูลและส่งกลับไปยังผู้เยี่ยมชม คุณตั้งค่านี้โดย:

VBoxManage modifyvm "VM name" --natdnshostresolver1 on


การใช้ VM ในโฮสต์ที่เชื่อมต่อกับ VPN สามารถนำไปสู่ปัญหา DNS ทุกครั้งที่มีการเปลี่ยนแปลงสถานะ VPN มีสองสถานการณ์:

  1. VM นั้นวางไข่ในโฮสต์ที่เชื่อมต่อกับ VPN และ ณ จุดหนึ่ง VPN จะถูกตัดการเชื่อมต่อ
  2. VM นั้นวางไข่ในโฮสต์ที่ไม่ได้เชื่อมต่อกับ VPN และ ณ จุดหนึ่งที่ VPN เชื่อมต่อ

1) เชื่อมต่อ VPN -> ยกเลิกการเชื่อมต่อ VPN

ในกรณีนี้ VM อาจได้รับที่อยู่ DNS ซึ่งเป็นส่วนหนึ่งของเครือข่ายผู้ให้บริการ VPN โดยปกติจะเป็นที่อยู่ IP ส่วนตัวภายใน cat /etc/resolv.confตรวจสอบเนื้อหาของ ในกรณีของฉันฉันได้รับต่อไปนี้:

nameserver 10.8.8.1 <--- นี่คือภายในเครือข่ายผู้ให้บริการ VPN

nameserver 192.168.178.1 <--- นี่คือเกตเวย์บ้านของฉัน (เราเตอร์)

ตอนนี้ตัดการเชื่อมต่อโฮสต์จากการเชื่อมต่อ VPN:

  • การกำหนดค่า DNS ใน VM ไม่เปลี่ยนแปลง -> VM จะยังคงส่งคำขอ DNS ไปยังปลายทาง IP 10.8.8.1 ซึ่งไม่สามารถเข้าถึงได้เนื่องจากโฮสต์ไม่ได้เชื่อมต่อกับ VPN อีก

รายละเอียดเพิ่มเติม:

  • แพ็คเก็ตจะถูกส่งไปยัง def GW ที่กำหนดโดยเครือข่าย VirtualBox NAT แหล่งที่มา NATTed (พร้อมที่อยู่ IP ของโฮสต์) และจัดการในที่สุดโดยตารางเส้นทางของโฮสต์ที่จะส่งต่อไปยังเกตเวย์บ้านของคุณ
  • แพ็กเก็ตจะถูกทิ้งเนื่องจากเกตเวย์บ้านของคุณไม่มีรายการ 10.8.8.1 ในด้าน LAN (ที่อยู่ส่วนตัว) และไม่สามารถส่งต่อไปยังฝั่ง WAN (ที่อยู่สาธารณะ) ได้เนื่องจากเป็นที่อยู่ส่วนตัว

2) การเชื่อมต่อ VPN -> เชื่อมต่อกับ VPN

ในกรณีนี้ VM จะไม่ได้รับที่อยู่ DNS ที่เป็นส่วนหนึ่งของผู้ให้บริการเครือข่าย VPN เนื่องจากโฮสต์ไม่ได้เชื่อมต่อกับ VPN เมื่อ VM เริ่มต้น cat /etc/resolv.confตรวจสอบเนื้อหาของ ในกรณีของฉันฉันได้รับต่อไปนี้:

nameserver 192.168.178.1 <--- นี่คือเกตเวย์บ้านของฉัน (เราเตอร์)

ตอนนี้เชื่อมต่อโฮสต์กับการเชื่อมต่อ VPN:

  • การกำหนดค่า DNS ใน VM ไม่เปลี่ยนแปลง -> VM จะยังคงส่งคำขอ DNS ไปยังปลายทาง IP 192.168.178.1 ซึ่งไม่สามารถเข้าถึงได้ (ping ไปยังใช้งานได้แม้ว่า) ขณะนี้คำขอ DNS จาก VM จะถูกจัดการโดย อินเทอร์เฟซ VPN Tap ที่จะส่งต่อแพ็กเก็ตไปยังเครือข่าย VPN โดยที่ไม่สามารถเข้าถึง 192.168.178.1 (ที่อยู่ IP ภายในเกตเวย์บ้านของคุณ)

รายละเอียดเพิ่มเติม:

  • แพ็คเก็ตจะถูกส่งไปยัง def GW ที่กำหนดโดยเครือข่าย VirtualBox NAT ส่งไปยังอินเทอร์เฟซ VPN Tap ที่จะแก้ไขส่วนหัว IP แทนที่ที่อยู่ IP IP ของ VM ด้วยที่อยู่ IP ที่กำหนดให้กับโฮสต์โดยเครือข่าย VPN ในขณะที่ปลายทาง ที่อยู่ยังคงอยู่ที่อยู่ DNS 192.168.178.1
  • แพ็กเก็ตนี้จะถูกห่อหุ้มในส่วนหัว IP ด้านนอกที่จะมีที่อยู่ IP ของโฮสต์เป็นแหล่งที่มา (btw นั้นจะถูกแทนที่ในภายหลังโดย NAT ต้นทางบนเกตเวย์ภายในบ้าน) และเซิร์ฟเวอร์ VPN เป็นที่อยู่ปลายทาง
  • เมื่อแพ็กเก็ตมาถึงเครือข่าย VPN จะมีการถอดรหัส ที่อยู่ IP ปลายทางกลายเป็นที่อยู่ DNS อีกครั้ง 192.168.178.1 ที่เครือข่ายผู้ให้บริการ VPN ไม่มีวิธีเข้าถึง (ยกเว้นในกรณีที่เป็นกรณีพิเศษซึ่งเป็นที่อยู่ IP เดียวกันกับที่ผู้ให้บริการเครือข่าย VPN ใช้สำหรับเซิร์ฟเวอร์ DNS)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.