TL;DR:
Что мне нужно настроить, чтобы я мог разрешить .местный
имя хоста на моей гостевой виртуальной машине, как если бы я разрешал его на своем хосте виртуальной машины.
Длинная версия:
Я запускаю виртуальную машину с Ubuntu 21.04 в Windows 10 с помощью VMware Workstation (16.1.1 build-17801498). Сама Ubuntu почти ванильная, я почти ничего не изменил в самой OS/env (на самом деле сейчас ничего не приходит на ум). Может быть, стоит отметить, что я обновился с предыдущей версии Ubuntu, я думаю, это была 20.04.
На хосте я могу разрешить foo.bar.local
просто отлично используя нслукап:
> nslookup foo.bar.local
Сервер: <...>
Адрес: 10.73.1.9
Имя: <...>
Адрес: 10.132.0.30
Псевдонимы: foo.bar.local
В гостевой системе та же попытка разрешения по умолчанию не удалась.
> хост foo.bar.local
Хост foo.bar.local не найден: 2 (SERVFAIL)
но я могу решить имя, если я скажу хозяин использовать тот же DNS-сервер, который ранее ответил на хосте (VM):
> хост ordermanagement-migration.comventure.local 10.73.1.9
Использование доменного сервера:
Имя: 10.73.1.9
Адрес: 10.73.1.9#53
Псевдонимы:
foo.bar.local — это псевдоним для hello.world.local.
hello.world.local имеет адрес 10.132.0.30
Поэтому я подумал: «Почему бы просто не использовать этот сервер всегда?» и попытался настроить его через графический интерфейс диспетчера сети: откройте настройки сети, перейдите на вкладку IPv4, отключите «автоматически» и введите IP в поле. Поскольку моя виртуальная машина имеет два настроенных интерфейса (сеть только для хоста и обычный NAT для общедоступного доступа к Интернету), и на всякий случай я сделал это для обоих интерфейсов. К моему удивлению, никакое время ожидания после подтверждения этих изменений не привело к заметным изменениям в выводе systemd-разрешение --статус
: Для обоих интерфейсов он просто сохранил соответствующие a.b.c.1
адрес в качестве DNS-сервера. Вместо этого мне пришлось сначала отключить интерфейсы, после чего появился IP-адрес сервера:
Глобальный
Протоколы: -LLMNR -mDNS -DNSOverTLS DNSSEC=нет/не поддерживается
Режим resolv.conf: заглушка
Ссылка 2 (ens33)
Текущие области: DNS
Протоколы: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=нет/не поддерживается
Текущий DNS-сервер: 10.73.1.9
DNS-серверы: 10.73.1.9
Ссылка 3 (ens38)
Текущие области применения: нет
Протоколы: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=нет/не поддерживается
Ссылка 4 (докер0)
Текущие области применения: нет
Протоколы: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=нет/не поддерживается
Я не понял, почему для ens38
(общедоступный инет-доступ), DNS-сервер больше не показывался. В этот момент все стало еще более запутанным, потому что включение интерфейса (в сетевом менеджере), на котором я ранее отключил «автоматический» для DNS, внезапно показало «автоматический» как включенный, но также перечислил IP-адрес DNS вручную и systemd-разрешение --статус
но я все еще не мог решить foo.bar.local
.
Я также пытался установить 10.73.1.9
в качестве основного DNS-сервера прямо в настройках NAT/DNS рабочей станции VMware, но безрезультатно.
Итак, как я могу получить foo.bar.local
быть разрешимым на моем (VM) госте по умолчанию, другими словами, без необходимости указывать 10.73.1.9
как сервер имен для использования - что я не могу сделать в контексте приложения, где мне нужно foo.bar.local
разрешимый.
дополнение: на моем узле виртуальной машины задействована VPN на случай, если это может иметь значение. Я всегда держу его включенным и подключенным при использовании хоста (VM).