Усталюйце кліент 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 — гэта пошук у запісах, а не паўдня здагадак.

Падобныя артыкулы