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