У меня есть хост виртуализации (может быть VSphere или SCVVM) с четырьмя сетевыми адаптерами, двумя 1 Гбит / с и двумя 10 Гбит / с. На этом компьютере виртуальная машина размещена на двух коммутаторах vSwitch с уникальными именами (например, vSwitch0 и vSwitch1), один на сетевом адаптере 1 Гбит / с, а другой - на сетевом адаптере 10 Гбит / с.
Эта виртуальная машина создается автоматически с помощью длительного процесса PowerShell, который создает определение импорта виртуальной машины и пустой виртуальный диск, устанавливает ОС, устанавливает другое программное обеспечение и т. Д.
Моя проблема в том, что в гостевой ОС (Server 2012 R2) сетевые адаптеры просто помечены как «Ethernet-адаптер» и «Ethernet-адаптер 1». Я не могу сказать, что находится на «vSwitch0» или «vSwitch1». Мне нужно, чтобы у каждого адаптера был очень конкретный IP-адрес, в зависимости от того, к какому виртуальному коммутатору он подключен.
Любые идеи? Мне нужно как-то настроить это в сценарии PowerShell, который настраивает гостевую ОС.
Заранее спасибо!
Самый простой способ, который я могу придумать, - это каким-то образом извлечь MAC-адрес каждого сетевого адаптера из конфигурации виртуальной машины и сравнить его с сетевыми адаптерами внутри виртуальной машины.
Вам не обязательно нужно устанавливать MAC-адреса - vSphere автоматически назначит вам MAC-адрес, если вы не укажете пользовательский (назначение достаточно разумно, чтобы знать, что нельзя переназначать уже используемые адреса, поэтому вам не нужно беспокоиться о конфликтах). Затем вы можете запросить конфигурацию виртуальной машины после он был создан, и сопоставьте его с сетевыми картами в том виде, в котором они отображаются в ОС. Например:
Сначала вы запрашиваете конфигурацию виртуальной машины через vSphere:
00:56:3f:00:21:12
00:56:3f:12:32:4a
Затем вы запрашиваете сетевые карты, присутствующие в гостевой ОС после создания:
00:56:3f:12:32:4a
и поэтому NIC B и прикреплен к vSwitch100:56:3f:00:21:12
и поэтому NIC A и прикреплен к vSwitch0Возможно, вы сможете сделать это программно, однако я недостаточно разбираюсь в интерфейсе командной строки vSphere PowerShell, чтобы знать наверняка.
То, как я справился с этим для моих виртуальных машин с двойным подключением, заключается в том, что у меня есть DHCP-сервер в одной сети, поэтому я знаю, что vNIC, который получает IP-адрес, назначенный DHCP, подключен к сети, где находится DHCP-сервер. Сетевая карта, которая назначает себе адрес APIPA, подключена к другой сети. Это грубо, но работает. Возможно, вы не захотите настраивать DHCP-сервер только для этой цели, но в моем случае я использую DHCP-сервер, поэтому мне повезло, я могу использовать его, чтобы определить, к какой сети подключен каждый vNIC.