我有一台虚拟化主机(可以是 VSphere 或 SCVVM),它有四个网卡,两个 1 gbps 和两个 10 gbps。这台机器在两个具有唯一名称的 vSwitch(例如 vSwitch0 和 vSwitch1)上托管虚拟机,一个位于 1 gbps 网卡上,另一个位于 10 gbps 网卡上。
该 VM 是通过一个漫长的 powershell 过程自动生成的,该过程创建导入 vm 定义和空虚拟磁盘、安装操作系统、安装其他软件等。
我的问题是,在客户操作系统 (Server 2012 R2) 中,网络适配器仅标记为“以太网适配器”和“以太网适配器 1”。我无法分辨哪个在“vSwitch0”或“vSwitch1”上。我需要每个适配器都有一个非常具体的 IP,具体取决于它连接到哪个虚拟交换机。
有什么想法吗?我需要以某种方式在配置客户操作系统的 powershell 脚本中配置它。
提前致谢!
答案1
我能想到的最简单的方法是以某种方式从 VM 配置中提取每个网络适配器的 MAC 地址,然后根据 VM 内的 NIC 进行检查。
你不一定需要放MAC 地址 - 如果您未指定自定义 MAC 地址,vSphere 将自动为您分配 MAC 地址(分配过程足够智能,知道不会重新分配已使用的地址,因此您不必担心冲突)。然后,您可以查询虚拟机的配置后已创建,并将其与操作系统中显示的 NIC 进行匹配。例如:
首先,通过 vSphere 查询虚拟机配置:
- 网卡连接到 vSwitch0 并具有 MAC 地址
00:56:3f:00:21:12
- 网卡B连接到 vSwitch1 并具有 MAC 地址
00:56:3f:12:32:4a
然后,查询创建后客户操作系统中存在的 NIC:
- 以太网适配器有 MAC 地址
00:56:3f:12:32:4a
,因此网卡B并附加到虚拟交换机1 - 以太网适配器 1有 MAC 地址
00:56:3f:00:21:12
,因此网卡并附加到虚拟交换机0
您也许能够通过编程来执行此操作,但是我对 vSphere PowerShell CLI 不够熟练,因此无法确定。
答案2
我处理双宿主虚拟机这个问题的方法是,在一个网络上有一个 DHCP 服务器,所以我知道获得 DHCP 分配的 IP 地址的 vNIC 连接到 DHCP 服务器所在的网络。为自己分配 APIPA 地址的 NIC 连接到另一个网络。这很粗糙,但很有效。您可能不想仅为此目的设置 DHCP 服务器,但就我而言,我使用 DHCP 服务器,因此我很幸运,因为我可以使用它来识别每个 vNIC 连接到哪个网络。