Гость утром работал нормально. Затем хост запустил Cisco AnyConnect, и ВМ потеряла DNS, доверие домена и общую папку, хотя внутри неё ничего не менялось. Туннель хоста и сеть гостя — разные пути, и подключение одного не перемещает другой. Работайте изнутри гостя наружу и запишите то, что видите, прежде чем что-либо менять.

Что гость ещё может видеть

Запишите адрес, шлюз по умолчанию и резолвер в ВМ: один раз до подключения хоста и один раз после. Гость, сохранивший адрес и потерявший только разрешение имён, имеет проблему с резолвером. Гость, у которого никогда не было маршрута, имеет проблему с путём, и оба случая требуют разной работы. С хоста их не различить, поэтому чтение должно идти изнутри.

Эти три показания, снятые дважды, — ваша базовая линия. Всё дальнейшее измеряется относительно них.

Какой выход использует гость

Hyper-V отвечает на это двумя командами: Get-VMSwitch перечисляет коммутаторы, а Get-VMNetworkAdapter -VMName TestVM показывает тот, к которому подключён гость. Default Switch — это сеть NAT, которой управляет Windows; внешний коммутатор передаёт трафик физическому адаптеру; внутренний коммутатор ничего не несёт, пока кто-то не добавит NAT или маршрутизатор. VirtualBox предлагает те же три идеи как NAT, NAT Network и bridged.

Режим решает, может ли туннель хоста вообще иметь значение. Гость за NAT транслируется WinNAT, а затем пересылается стеком хоста, поэтому следует таблице маршрутизации хоста; с клиентом полного туннеля его трафик — это трафик, входящий в адаптер VPN, и он отбрасывается, когда клиент блокирует локальную подсеть. Гость, подключённый мостом к внешнему коммутатору, вообще не доходит до маршрутизации хоста: его кадры выходят напрямую из физической сетевой карты, поэтому он обходит и туннель, и политику локальной сети клиента.

Совместное использование туннеля хоста с Hyper-V

Если гостю нужен туннель и он не может запустить собственный клиент, Windows может предоставить общий доступ к VPN-подключению. Откройте свойства адаптера VPN, перейдите в «Общий доступ» и разрешите другим сетевым пользователям подключаться через него. Направьте домашнее сетевое подключение на адаптер Hyper-V, vEthernet (Default Switch), затем проверьте новый запрос изнутри гостя.

Относитесь к этой схеме как к лабораторному решению, потому что она так себя и ведёт. Её нужно применять заново после отключения, повторного подключения или перезагрузки хоста. В некоторых сборках Windows 11 адаптер полностью отсутствует в раскрывающемся списке, и тогда этот путь закрыт.

Переустановка компонента Hyper-V спасла несколько упрямых гостей. Оставьте это напоследок и сначала запишите состояние гостя.

Перенаправление портов, когда подсеть фильтруется

VPN хоста, фильтрующий NAT-подсеть гостя, ломает прямой доступ, а не разрешение имён. ВМ работает, но ssh [email protected] зависает, хотя трансляция гипервизора всё ещё работает. Перенаправьте порты, нужные для работы, и подключайтесь вместо этого к адресу хоста. Строки Vagrantfile ниже охватывают SSH и одну службу HTTPS; обе добавляются перед перезагрузкой.

config.vm.network "forwarded_port", guest: 22, host: 22
config.vm.network "forwarded_port", guest: 3443, host: 3443

Разрешение имён — отдельное решение, и оно заслуживает собственного исправления. Включите функцию резолвера хоста для этого адаптера NAT, или настройте внутренний DNS-сервер внутри гостя вручную. Если направить гостя на публичный резолвер, просмотр заработает, а все внутренние имена сломаются, что хуже сбоя, потому что выглядит как успех. Проверьте имя, которое знает только внутренний резолвер.

Проверка, которая скажет, что всё получилось

После любого из этих изменений выполните новый запрос изнутри гостя при подключённом VPN хоста, а не до него. Перепроверьте общий доступ после повторного подключения и после перезагрузки, потому что исправление, переживающее только одно из этого, не является исправлением. Убедитесь, что список резолверов гостя соответствует сети, которую его трафик действительно использует. Затем проверьте перенаправление портов с адреса хоста, потому что проверка из гостя ничего не доказывает. Изнутри гостя две проверки PowerShell охватывают резолвер и перенаправленный порт:

Resolve-DnsName intranet.corp
Test-NetConnection 192.0.2.10 -Port 22

Записывайте каждое изменение коммутатора или драйвера вместе с шагом его отмены. Руководство Microsoft по Hyper-V NAT объясняет, что на самом деле представляет собой Default Switch, и его стоит прочитать перед созданием второй сети NAT, которая с ним конфликтует.

Похожие статьи