VirtualBox - гість Ubuntu втрачає DNS, коли хост підключається до VPN


11

У мене є гостьова ОС Ubuntu у VirtualBox з використанням NAT за замовчуванням для eth0.

Відмінно працює в офісі та вдома ВСЕ, коли в офісі VPN від дому.

Коли хост ОС (Windows 7) підключений до VPN, пошук DNS не працює в гостях Virtualbox. Шукання DNS є гарним на хості. У Virtualbox я можу відсилати IP-адреси безпосередньо як у VPN, так і зовні, тому це не проблема з підключенням.

Схоже, гість Ubuntu використовує 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.


1
Ти врятував день чувак.
CantGetANick

Для мене прекрасно працювали!
Хай Мінь Нгуен

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 та пересилає їх до вирішувача хоста, тобто використовує API DNS хоста для запиту інформації та повернення її гостю. Ви встановили це:

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 все одно буде надсилати запити DNS до пункту призначення IP 10.8.8.1, який неможливо досягти, оскільки хост більше не підключений до VPN

Більш детально:

  • пакет буде надісланий до Def GW, визначеному мережею VirtualBox NAT, джерелом NATTed (з IP-адресою хоста) і, нарешті, обробляється таблицею маршрутизації хоста, яка передасть його на ваш домашній шлюз.
  • Тут пакет буде викинутий, оскільки ваш домашній шлюз не має запису на 10.8.8.1 в локальній мережі (приватні адреси) і не може переслати його на сторону WAN (загальнодоступні адреси), оскільки це приватна адреса.

2) VPN-відключений -> VPN-підключено

У цьому випадку VM не отримає адресу DNS, яка є частиною провайдера мережі VPN, оскільки хост не був підключений до VPN, коли VM запускався. Перевірте вміст cat /etc/resolv.conf. У моєму випадку я отримую наступне:

nameserver 192.168.178.1 <--- Це мій домашній шлюз (маршрутизатор)

Тепер підключіть хост до VPN-з'єднання:

  • конфігурація DNS у віртуальних машинах не змінюється -> VM все одно буде надсилати запити DNS до пункту призначення IP 192.168.178.1, до якого неможливо досягти (хоча до нього все ще працює), оскільки тепер запит DNS від VM обробляється інтерфейс VPN Tap, який перенаправить пакети до мережі VPN, де не може бути досягнуто 192.168.178.1 (IP-адреса вашого внутрішнього домашнього шлюзу).

Більш детально:

  • пакет буде надісланий до def GW, визначеному NAT VirtualBox NAT, надісланий до інтерфейсу VPN Tap, який модифікує заголовок 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-сервера).
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.