如何防止Hyper-V虚拟交换机的IP地址被更改?

问题描述 投票:0回答:4

我有一台安装了 Windows 10 2004 的笔记本电脑。我配置了 Hyper-V 并创建了两个虚拟机:在一台虚拟机上运行 Windows 10,以封装我必须用于工作联系人的多个恶意软件 IM 软件。在另一个虚拟机上运行 ubuntu server 20.04 进行开发。

我使用内部网络类型的虚拟交换机配置了 Hyper-V,并且 Hyper-V 自动指定了具有静态 IP 的虚拟交换机。我想用机器名连接到 ubuntu。因此,我指定了具有静态IP的ubuntu虚拟机,并在Windows 10主机的hosts文件中添加了一项。然后我可以使用VS Code的远程SSH功能在Windows 10主机中开发node.js应用程序。一切都很顺利,直到我重新启动我的笔记本电脑。

重新启动笔记本电脑后,Hyper-V 虚拟交换机的 IP 地址已更改。我无法再重新连接到 VM ubuntu,因为 VM ubuntu 配置了静态 IP 和基于虚拟交换机旧 IP 的默认网关。

我通过UI检查了虚拟交换机的IPv4属性,它被配置为“使用以下IP”,所以我认为IP不应该改变。但是我错了。每次我的笔记本电脑重新启动后,虚拟交换机的“静态IP”总是会发生变化。此更改会中断与 VM ubuntu 的连接。

那么,有什么办法可以防止虚拟交换机的IP地址被更改呢?或者某种方式向 Hyper-V 虚拟交换机添加名称解析机制(然后我可以在虚拟机中使用动态 IP 地址进行配置)?

static switch-statement ip virtual hyper-v
4个回答
10
投票

我刚刚通过 Hyper-V“虚拟交换机管理器”添加了一个额外的“内部”交换机,并将其命名为“静态交换机”。然后通过控制面板->网络和 Internet->网络和共享中心->更改适配器设置更改其设置。右键单击新适配器,然后选择“属性”->“Internet 协议版本 4 (TCP/IPv4)”,然后设置当前网络上未使用的静态 IP,例如 IP 地址:192.168.199.1 子网掩码:255.255.255.0。不需要其他设置。单击“确定”并关闭所有父窗口。 通过虚拟机设置添加新网卡到Hyper-V机器,添加硬件->网络适配器-添加。选择“静态开关”并单击“确定”。

编辑您的客户端虚拟机网络设置,在我的例子中是 Ubuntu 20.10,因此它是 eth1 的有线设置(新的“有线连接”)。我禁用了 IPv6 并使用手动配置(静态 IP)编辑 IPv4 设置,将 IP 地址设置为 192.168.199.2,网络掩码为 255.255.255.0,网关为 192.168.199.1(“静态交换机”)。不需要其他设置。单击“应用”并检查网络 eth1 是否已连接。

您应该能够从客户端虚拟机 ping 192.168.199.1 并从主机 ping 192.168.199.2。

此配置将在重新启动后保留,您可以使用任何您想要的名称在主机上编辑主机文件,例如 192.168.199.2 my.vm.machine

注意:您需要以管理员身份编辑主机文件。


1
投票
不要使用 Hyper-V 创建的默认开关。正如
    Miket25
  1. 所说:“默认切换是由HNS进行的,并且可能有一些设置导致它在重新启动时具有DHCP地址”。 每年使用 NAT 创建一个内部虚拟交换机。
  2. 这里
  3. 是指南。然后将虚拟机连接到该交换机。分配给该交换机的静态 IP 地址不会通过重新启动而更改。

0
投票

注意:虚拟机连接到 Hyperv 中的“外部交换机”

检查虚拟机使用的 DNS IP 地址
gtan@master:~$ systemd-resolve --status ... Link 2 (eth0) Current Scopes: DNS LLMNR setting: yes MulticastDNS setting: no DNSSEC setting: no DNSSEC supported: no DNS Servers: 192.168.141.81 DNS Domain: mshome.net
检查网关和子网掩码
gtan@master:/etc/netplan$ netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default _gateway 0.0.0.0 UG 0 0 0 eth0 10.44.0.0 0.0.0.0 255.255.255.0 U 0 0 0 cni0 10.44.1.0 10.44.1.0 255.255.255.0 UG 0 0 0 flannel.1 10.44.2.0 10.44.2.0 255.255.255.0 UG 0 0 0 flannel.1 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-894a4759cb12 172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 192.168.141.80 0.0.0.0 255.255.255.240 U 0 0 0 eth0 _gateway 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
eth0 网关 = 192.168.141.81 掩码 255.255.255.240(192.168.141.80 用于广播)

检查eth0 IP地址和子网掩码
gtan@master: ifconfig ... eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.141.85 netmask 255.255.255.240 broadcast 192.168.141.95 inet6 fe80::215:5dff:fe3a:1100 prefixlen 64 scopeid 0x20<link> ether 00:15:5d:3a:11:00 txqueuelen 1000 (Ethernet) RX packets 82792 bytes 103449317 (103.4 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 40353 bytes 10745111 (10.7 MB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ...
将“/etc/netplan/01-netcfg.yaml”编辑为此(先备份原始01-netcfg.yaml:“
    sudo cp ./01-netcfg.yaml ./01-netcfg.yaml.bak"
  1. ):
    
    
  2. network: version: 2 renderer: networkd ethernets: eth0: dhcp4: no addresses: - 192.168.141.85/28 gateway4: 192.168.141.81 nameservers: addresses: [8.8.8.8]
关闭虚拟机

在 Hyperv 中,选择虚拟机:

转到网络适配器 --> 高级功能 --> 将 MAC 地址设置为“静态”
    一切顺利!!!
  1. 下班后,对虚拟机使用“已保存”而不是“已暂停”

0
投票

sudo IP地址添加172.22.88.73/20 dev eth0

窗户:

© www.soinside.com 2019 - 2024. All rights reserved.