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