Използва ли Hyper-V виртуална машина VPN на хоста? Зависи от комутатора
VPN на хоста не е настройка за цялата машина. Типът на комутатора определя дали трафикът на госта се мостове, маршрутизира през хоста или изолира, и това променя отговора.
Инсталирайте VPN клиент на хоста Hyper-V, отворете браузър там и адресът на изхода се променя; отворете същата страница във виртуалната машина и тя може да покаже стария адрес или нищо. Обичайното заключение е, че виртуалната машина е счупена или че трябва да се включи разделено тунелиране. Нито едното не следва. VPN клиентът не е свойство на машината; той е набор от маршрути, виртуален адаптер и често филтър, прикачен към конкретни интерфейси. А дали трафикът на госта изобщо ще срещне тази машинария, зависи от виртуалния комутатор, който гостът използва.
Митот, изложен просто
Вярването е, че VPN, инсталиран на хоста, защитава цялата машина, включително виртуалните машини, защото виртуалната машина е просто процес, работещ на тази машина. Това е удобно вярване, тъй като антивирусните програми и защитните стени на хоста обикновено работят точно така. Мрежовите пътища не.
Кадърът на госта се докосва от VPN стека на хоста само ако хостът го маршрутизира или филтрира. Препишете това изречение на лепяща бележка, защото всеки случай по-долу е негов вариант.
Три типа комутатори, три пътя
Външният комутатор свързва виртуален адаптер с физическа мрежова карта и гостът изпраща кадри през тази връзка със свой MAC адрес. Гостът става равен участник във физическата мрежа, със собствен DHCP наем, шлюз и DNS сървъри. VPN маршрутът по подразбиране на хоста живее в стека на хоста и не мести тези кадри, защото те се мостове, а не се маршрутизират през хоста. Затова външен комутатор върху Wi-Fi адаптер е лоша идея: повечето безжични драйвери не пренасят кадри за втори MAC адрес.
Вътрешният комутатор свързва гостите с виртуален адаптер на хоста. Сам по себе си той не дава изход към интернет; NAT обект на хоста осигурява транслация, както е описано в ръководството на Hyper-V за NAT. Сега пакетите на госта наистина влизат в маршрутизирането и NAT пътя на хоста, така че маршрутите и филтрите на VPN клиента отново имат значение. Това е схемата, в която виртуалната машина наистина следва VPN на хоста и в която kill switch може напълно да отреже госта.
Частният комутатор няма адаптер на хоста и няма връзка нагоре. Гостите говорят помежду си и с нищо друго, така че ако виртуална машина на частен комутатор няма интернет, липсващият маршрутизатор е причината, а VPN е без значение.
Комутаторът по подразбиране е отделна схема
Windows доставя комутатор по подразбиране, който съчетава вътрешен комутатор с NAT и DNS прокси. Подмрежата му се избира от хоста, може да се промени след рестартиране и не е същият обект като NAT мрежа, която създавате сами. Превръщането му в лабораторна мрежа е начинът хората да се сдобият с два NAT и гост, който все още няма маршрут.
Ако виртуалната машина е на комутатора по подразбиране, прочетете адреса, който гостът е получил, и го сравнете с NAT таблицата на хоста, преди да пипате VPN клиента. Несъответствието между шлюза на госта и NAT префикса обяснява повече откази от всяка настройка на клиента.
Четири факта, които решават въпроса
Съберете тези неща, преди да промените каквото и да е: типа на комутатора и връзката му нагоре, адаптера, прикачен към виртуалната машина, собствения адрес на госта, шлюза и DNS, както и състоянието на NAT и маршрута по подразбиране на хоста. Командите само за четене са Get-VMSwitch, Get-VMNetworkAdapter -VMName "TestVM", Get-NetNat, и Get-NetRoute -DestinationPrefix 0.0.0.0/0; а вътре в госта ipconfig /all дава останалото.
След това решете какво трябва да прави гостът. Ако трябва да остане извън VPN, вземете поддържаното от доставчика изключение точно за този път, защото изключването на изпълним файл на хоста не освобождава препращания трафик на виртуалната машина. Ако трябва да използва VPN, потвърдете документираното поведение на клиента спрямо трафика на виртуални машини, вместо да предполагате, че тест в браузъра на хоста го покрива.
Тестът вътре в госта е единственото доказателство, което има значение. Проверете адреса на изхода от госта, разрешете вътрешно име, свържете отново VPN и повторете. Резултатът в браузъра на хоста не замества нищо от това.
Какво струва митът
Хората изключват kill switch, добавят статични маршрути или изтриват и пресъздават комутатори само за да мине тест. Всяко такова заобикаляне променя режима на отказ: гостът може да стигне до интернет по път, който никой не е предвидил, или хостът може да загуби връзка, когато външен комутатор преприкачи физическия си адаптер.
Преприкачването на външен комутатор прекъсва собствения достъп на хоста, затова дръжте отворен извънлентов път и не изтривайте комутатори, докато още диагностицирате. Правилният резултат е предвиденият път на госта, включително как се свързва отново и как се проваля, а не зелена отметка от едно зареждане на страница.
Трайният отговор е един ред за всяка виртуална машина в описа: кой комутатор използва и кой компонент осигурява шлюза ѝ. След като това е записано, следващата промяна на VPN е справка, а не следобед на догадки.