Назад | Перейти на главную страницу

Маршрутизация гостевых виртуальных машин Windows за NAT в несколько подключенных сетей на узле

Я настроил Windows Server 2016 с ролью Hyper-V. Хост-компьютер подключен к двум сетям:

Я создал сеть NAT 172.16.0.0/16 и некоторые внутренние vSwitches под ним, чтобы гости могли общаться через NAT. Каждая виртуальная машина имеет только один сетевой интерфейс, подключенный к одному vSwitch, который обеспечивает интерфейс для сети NAT. Их IP-адрес и DNS-серверы устанавливаются вручную. Каждый гость добавляет DNS-сервер из каждой подключенной сети.

Из гостей Linux за NAT я могу подключиться к обеим сетям, подключенным к хосту одновременно, без проблем. Управляющая ОС Server 2016 также может без проблем подключаться к обеим сетям. Однако основная проблема в том, что Гости Windows, похоже, могут общаться только с одной из двух сетей на хосте в любой момент времени и будут переключаться между ними, казалось бы, неопределенно..

Например, в Linux (RHEL 7) я могу общаться с хостами в обеих сетях одновременно. Однако в гостевых системах Windows (тестирование с гостевыми системами Windows 8.1 и Server 2016) я могу подключиться только к одной из двух сетей, подключенных к хосту в любой момент времени. Соединения, предназначенные для одной сети, будут работать нормально, в то время как соединения, предназначенные для другой сети, всегда будут отключены.

Сеть, в которой есть подключение, также иногда «переключается». Если я сделаю tracert в пункт назначения в сети без подключение, он будет зависать на некоторое время (от 30 секунд до минуты или двух), но в конечном итоге он получит возможность подключения. Мне кажется, что это просто игра в кости, к которой я подключен. Хотя, когда происходит этот «переключатель», соединение с другой сетью будет потеряно. Когда соединение используется регулярно, активное сетевое соединение кажется относительно стабильным ...

Я попытался изменить настройки DNS-суффикса подключения, а также попытался включить / отключить NetBIOS. Я проверил таблицы маршрутизации на гостях и хосте, вроде ничего плохого. Не уверен, где искать неисправности отсюда. Я не использую ни одну из ролей dhcp / routing в операционной системе управления.

Я смог решить (своего рода) основную проблему, добавив второй сетевой интерфейс, предназначенный для трафика в локальную сеть, удалил маршруты по умолчанию и вручную добавил новый маршрут по умолчанию для использования определенного интерфейса и другого маршрута для dept.local сеть.

Я выполнил следующие команды, где 172.16.1.1 это IP-адрес виртуального коммутатора и if 4 используется для маршрута по умолчанию и if 7 используется для dept.local сеть.

route delete 0.0.0.0
route add -p 0.0.0.0 mask 0.0.0.0 172.16.1.1 metric 200 if 4
route add -p 10.101.8.0 mask 255.255.252.0 172.16.1.1 metric 100 if 7

Однако мне все еще неясно, почему трафик не работает при попытке маршрутизации через тот же интерфейс, даже если шлюз тот же, и, кроме того, почему это не проблема в Linux. Если кто-нибудь сможет мне это объяснить и / или предложить лучшее решение, не требующее второго интерфейса, я с радостью приму ответ.