VirtualBox - guest Ubuntu kehilangan DNS ketika host terhubung ke VPN

11

Saya memiliki OS tamu Ubuntu di VirtualBox menggunakan NAT default untuk eth0.

Bekerja dengan baik di kantor dan di rumah KECUALI saat menggunakan VPN kantor dari rumah.

Ketika OS host (Windows 7) terhubung ke VPN, pencarian DNS tidak berfungsi di dalam tamu Virtualbox. Pencarian DNS baik-baik saja pada host. Di dalam Virtualbox, saya bisa melakukan ping IPs langsung baik di dalam VPN dan di luar, jadi itu bukan masalah konektivitas.

Sepertinya tamu Ubuntu menggunakan localhost sebagai titik masuk DNS, menurut /etc/resolv.confdan nslookup. Jadi sepertinya sesuatu yang lokal kemudian dikirim ke DNS lain yang mendasarinya.

Bagaimana saya memecahkan masalah ini?

pembalap
sumber
Apa yang Anda gunakan untuk VPN? Apakah Anda memiliki akses ke pengaturan VPN di perangkat yang terhubung dengan mesin ini? Biasanya mesin yang terhubung ke VPN mengambil pengaturannya dari perangkat VPN.
jmreicha
Untuk memperjelas pencarian DNS pada host berfungsi dengan baik - hanya tamu Virtualbox yang terpengaruh.
wrschneider

Jawaban:

17

Ini berhasil karena beberapa alasan

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

Saya menduga itu karena ketika VPN aktif, tuan rumah melakukan sesuatu yang khusus untuk pencarian DNS selain hanya meneruskan permintaan ke server DNS yang ditentukan yang diambil oleh VirtualBox dari konfigurasi Windows.

pembalap
sumber
1
Anda menyelamatkan hari Bung.
CantGetANick
Bekerja dengan sempurna untuk saya!
Hai Minh Nguyen
1

Saya memiliki situasi yang sangat mirip dengan Lubuntu 16.04 (harus identik di Ubuntus lain) tetapi perbaikan ini tidak memperbaiki situasi. Setidaknya dengan 16,04, masalahnya adalah NetworkManager menggunakan proksi DNS lokal (dnsmasq), dan ini tidak cocok dengan koneksi VPN, setidaknya dalam konfigurasi default.

Mengomentari / menghapus dns = dnsmasq di /etc/NetworkManager/NetworkManager.conf

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

Mungkin ada cara untuk mengkonfigurasi dnsmasq tetapi ini memberi (saya) akses yang setara ke host (dns, dll.), Jadi saya belum menyelidiki. YMMV.

Anton dari kayu
sumber
1

TL; DR:

  • reboot VM memastikan status VPN (baik yang terhubung atau terputus) dari host tidak berubah sementara itu;
  • biarkan mesin VirtualBox NAT mencegat permintaan DNS dan meneruskannya ke resolver host, yaitu menggunakan API DNS host untuk meminta informasi dan mengembalikannya ke tamu. Anda mengatur ini dengan:

VBoxManage modifyvm "VM name" --natdnshostresolver1 on


Menjalankan VM di host yang terhubung ke VPN dapat menyebabkan masalah DNS setiap kali status VPN berubah. Ada dua skenario:

  1. VM muncul di host yang terhubung dengan VPN dan pada titik tertentu VPN terputus;
  2. VM bertelur di host yang tidak terhubung VPN dan pada titik tertentu VPN terhubung

1) VPN-terhubung -> VPN-terputus

Dalam hal ini VM mungkin akan menerima alamat DNS yang merupakan bagian dari jaringan penyedia VPN. Ini biasanya akan menjadi alamat IP pribadi internal. Periksa konten cat /etc/resolv.conf. Dalam kasus saya, saya mendapatkan yang berikut ini:

nameserver 10.8.8.1 <--- Ini internal ke jaringan Penyedia VPN

nameserver 192.168.178.1 <--- Ini adalah gateway-rumah saya (router)

Sekarang putuskan host dari koneksi VPN:

  • konfigurasi DNS di VM tidak berubah -> VM masih akan mengirim permintaan DNS ke IP tujuan 10.8.8.1 yang tidak dapat dijangkau karena host tidak lagi terhubung ke VPN

Lebih detail:

  • paket akan dikirim ke def GW yang ditentukan oleh jaringan NAT VirtualBox, sumber NATTed (dengan alamat IP host), dan akhirnya ditangani oleh tabel routing host yang akan meneruskannya ke gateway rumah Anda.
  • Di sini paket akan turun karena gateway rumah Anda tidak memiliki entri untuk 10.8.8.1 di sisi LAN (alamat pribadi) dan tidak dapat meneruskannya di sisi WAN (alamat publik) karena merupakan alamat pribadi.

2) VPN terputus -> terhubung VPN

Dalam hal ini VM tidak akan menerima alamat DNS yang merupakan bagian dari penyedia jaringan VPN karena tuan rumah tidak terhubung ke VPN ketika VM dimulai. Periksa konten cat /etc/resolv.conf. Dalam kasus saya, saya mendapatkan yang berikut ini:

nameserver 192.168.178.1 <--- Ini adalah gateway-rumah saya (router)

Sekarang hubungkan host ke koneksi VPN:

  • konfigurasi DNS di VM tidak berubah -> VM masih akan mengirim permintaan DNS ke IP tujuan 192.168.178.1 yang tidak dapat dijangkau (ping ke sana masih berfungsi) karena sekarang permintaan DNS dari VM sedang ditangani oleh antarmuka Ketuk VPN yang akan meneruskan paket ke jaringan VPN di mana 192.168.178.1 (alamat IP gateway rumah internal Anda) tidak dapat dijangkau.

Lebih detail:

  • paket akan dikirim ke def GW yang ditentukan oleh jaringan NAT VirtualBox, dikirim ke antarmuka Tap VPN yang akan memodifikasi header IP menggantikan alamat sumber IP VM dengan alamat IP yang ditugaskan ke host oleh VPN Network, sementara tujuannya alamat tetap alamat DNS 192.168.178.1.
  • paket ini kemudian akan dienkapsulasi dalam Header IP luar yang akan memiliki alamat IP host sebagai sumber (bahwa btw nantinya akan digantikan oleh source NAT pada gateway-rumah) dan Server VPN sebagai alamat tujuan.
  • ketika paket mencapai jaringan VPN, itu dipecah. Alamat IP tujuan sekarang lagi alamat DNS 192.168.178.1 bahwa Jaringan Penyedia VPN tidak memiliki cara untuk mencapai (kecuali dalam keyakinan luar biasa di mana ini adalah alamat IP yang persis sama yang digunakan oleh penyedia jaringan VPN Anda untuk server DNS-nya).
StefTN
sumber