是否可以为 Hyper-V 的默认交换机适配器设置静态 IP 地址?每次我重新启动 PC,地址都会改变。
答案1
您可以在 控制面板 > 网络连接 > 更改适配器设置 通过右键单击 vEthernet 交换机,但 Windows 会在重启后将其重置为随机地址,并且该操作无法被禁用。
解决方案可以是使用 netsh 命令 或其 PowerShell 替代品。Netsh 需要以管理员身份运行。
命令语法为:
netsh interface ip set address [name=]InterfaceName [source=]{dhcp | static [addr=]IPAddress[mask=]SubnetMask [gateway=]{none | DefaultGateway [[gwmetric=]GatewayMetric]}}
将交换机设置为静态 IP 192.168.100.1
、掩码255.255.255.0
和网关无的示例命令是:
netsh interface ip set address name="vEthernet (Default Switch)" static 192.168.100.1 255.255.255.0 none
如果需要,您可以设置一个脚本,其中包含在 Windows 启动时或用户登录时运行的命令。
另一个解决方案是创建一个新的交换机,其 IP 地址将保持不变,与默认交换机不同。
答案2
我知道这可能有点题外,但由于我们设置此 IP 是为了例如通过 SSH 连接到我们的 Hyper-V 实例,因此可以分配静态 MAC 地址,然后编写一些"self-discovery"
脚本,这样我们就不必assign ip to vEthernet
每次都使用
分配静态 MAC:
右键单击 Hyper-V 实例 -> 设置 > 网卡 > 高级功能 -> 选择静态 MAC 和填充 MAC
在我的例子中,它是 powershell 脚本,它根据静态 MAC 从 arp 发现中提取 IP,然后通过 SSH 连接到它
$str = ((arp -a | findstr /i 00-15-5D-01-83-0B)[0]);
$ip = $str.Split(" ")[2].Trim()
ssh root@$ip
解释:
ARP
Displays and modifies the IP-to-Physical address translation tables used by
address resolution protocol (ARP).
ARP -s inet_addr eth_addr [if_addr]
ARP -d inet_addr [if_addr]
ARP -a [inet_addr] [-N if_addr] [-v]
-a Displays current ARP entries by interrogating the current
protocol data. If inet_addr is specified, the IP and Physical
addresses for only the specified computer are displayed. If
more than one network
arp -a | findstr /i 00-15-5D-01-83-0B
/i
= 忽略大小写
返回:
192.168.1.31 00-15-5d-01-83-0b dynamic
192.168.43.170 00-15-5d-01-83-0b static
[0] 索引
选择:
192.168.1.31 00-15-5d-01-83-0b dynamic
$str.Split(" ")[2].Trim()
返回:
192.168.1.31
然后 ssh 连接到它
答案3
0
我找到了一个替代解决方案,因为通过 netsh 更改 HyperV 默认交换机的 IP 或创建替代交换机对我来说都不起作用。我们可以通过添加阻止 IP 范围的环回接口来限制算法向交换机授予 IP 地址的可能性,而不是直接更改 Hyper-V 适配器的 IP。可以使用 hdwwiz.exe > 下一步 > “..从列表中手动选择” > 网络适配器 > 制造商 Microsoft > Microsoft KM-TEST 环回适配器来引入环回适配器的 IP 地址和子网掩码可以通过“查看网络连接”设置,右键单击新创建的接口 > 属性/Internet 协议版本 4 /属性
我们可以利用 Hyper V 默认交换机的子网掩码似乎始终为 255.255.240.0。因此,在 192.168.x 范围内,它始终使用 192.168.0.1、192.168.16.1、192.168.32.1 ... 192.168.240.1 之一作为 IP 地址。例如,我们可以引入一个 IP 为 192.168.0.1、子网掩码为 255.255.128.0 的环回接口,它将阻止从 192.168.0.1 到 192.168.127.255 的所有 IP。现在引入另一个 IP 为 192.168.128.1、子网掩码为 255.255.192.0 的环回接口,它将阻止从 192.168.128.1 到 192.168.191.255 的所有 IP。另一个可以是 IP 192.168.192.1,子网掩码为 255.255.224.0,阻止 192.168.192.1 到 192.168.223.255。如果您还知道使用 IP 通过环回接口阻止 192.168.240.1 192.168.240.1 和子网掩码 255.255.255.0 Hyper V 适配器可以拥有的唯一可能的 IP 地址是 192.168.224.1,而 192.168 范围内仍有许多可用的 IP 地址。也许有必要以相同的方式阻止 172.16.x 范围。另一方面,如果有设备依赖这些范围可用,您可能还需要在 192.168.0.x 范围内减少限制。似乎可以通过 Powershell 脚本引入环回接口,但到目前为止还没有尝试过。