Установіть клієнт VPN на хост Hyper-V, відкрийте там браузер, і вихідна адреса зміниться; відкрийте ту саму сторінку всередині віртуальної машини, і вона може показати стару адресу або нічого. Звичайний висновок — віртуальна машина зламана або потрібно ввімкнути розділене тунелювання. Ні те, ні інше не випливає. Клієнт VPN не є властивістю машини; це набір маршрутів, віртуальний адаптер і часто фільтр, прикріплений до певних інтерфейсів. Чи колись трафік гостьової системи зустрінеться з цим механізмом, залежить від віртуального комутатора, який використовує гостьова система.

Міф, сказаний прямо

Переконання полягає в тому, що VPN, установлений на хостері, захищає всю машину, включно з віртуальними машинами, бо віртуальна машина — це лише процес, що виконується на цій машині. Це зручне переконання, адже антивірус і брандмауери хостера зазвичай справді поводяться так. Мережеві маршрути — ні.

Кадр гостьової системи торкається стека VPN хостера лише тоді, коли хостер його маршрутизує або фільтрує. Перепишіть це речення на стікер, бо кожен випадок нижче є його варіацією.

Три типи комутаторів, три шляхи

Зовнішній комутатор прив'язує віртуальний адаптер до фізичної мережевої карти, і гостьова система надсилає кадри через це прив'язування зі своєю MAC-адресою. Гостьова система стає рівноправним учасником фізичної мережі з власною орендою DHCP, шлюзом і DNS-серверами. Типовий маршрут VPN хостера живе в стеку хостера і не переміщує ці кадри, бо їх мостять, а не маршрутизують через хостер. Це також причина, чому зовнішній комутатор поверх адаптера Wi-Fi — погана ідея: більшість бездротових драйверів не передаватимуть кадри для другої MAC-адреси.

Внутрішній комутатор з'єднує гостьові системи з віртуальним адаптером хостера. Сам по собі він не дає виходу в інтернет; об'єкт NAT на хостері забезпечує трансляцію, як описано в посібнику з NAT у Hyper-V. Тепер пакети гостьової системи входять у маршрутизацію та шлях 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 — це пошук, а не півдня здогадів.

Схожі статті