我在 Windows 10 Pro Client 上的 Hyper-V 上创建了几个虚拟机,该客户端配有有线 USB 以太网适配器。Windows 计算机在重启后保留其 IP 地址,而 Linux 计算机(Ubuntu Server)则不保留。两者都使用默认开关(注意:外部交换机不适用于 USB 以太网适配器)。
我注意到 Windows VM 保留了其 MAC 地址,因此我尝试将 Linux VM 的 MAC 地址从动态的到静止的。不幸的是,这并没有帮助。
目标是在主机和 Linux VM 之间建立 SSH 连接(始终通过相同的 IP 地址)。除此之外,我希望 VM 能够访问 Internet。注意:主机是一台笔记本电脑,因此 Internet 连接将通过不同的 LAN 和不同的接口建立(内置 WLAN、不同扩展坞上的不同有线 USB-LAN 适配器等)。
解决方案:
目前我正在研究配置内部交换机。这设置建议依赖于为内部交换机提供静态设置。不幸的是,它不允许设置默认网关,因此虚拟机无法使用互联网主机连接(至少我没有找到使用内部交换机来实现这一点的解决方案)。
注意:我对交换机使用 192.168.192.1/24,对虚拟机使用 192.168.192.2/24。我可以从主机 ping 交换机和虚拟机,反之亦然(我已在主机上正确设置了 Windows 防火墙)。
为了同时访问互联网(同时使用内部交换机通过不变的 IP 地址从主机连接到虚拟机),我向虚拟机添加了第二个网络接口并将其设置为默认交换机。我将第二个 NIC 配置为通过 DHCP 获取其配置(通过/etc/netplan/00-installer-config.yaml
):
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [192.168.192.2/24]
eth1:
dhcp4: true
ip a
表明它已启动并正在运行:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:97:34:01 brd ff:ff:ff:ff:ff:ff
inet 192.168.192.2/24 brd 192.168.192.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fe97:3401/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:97:34:03 brd ff:ff:ff:ff:ff:ff
inet 192.168.204.131/28 brd 192.168.204.143 scope global dynamic eth1
valid_lft 86333sec preferred_lft 86333sec
inet6 fe80::215:5dff:fe97:3403/64 scope link
valid_lft forever preferred_lft forever
ping 内部交换机 ( 192.168.204.129
) 有效(注意 Windows 防火墙!),ping 外部服务器,例如,8.8.8.8效果也很好。感谢 JW0914 在评论中提出的建议!
还请注意 John 的回答。它不适合我的情况,但它给你带来了一个好处,即虚拟机可以从路由器 LAN(而不仅仅是从主机)访问。
答案1
的唯一目的默认开关是为了提供 WAN 访问,并且不会在设计上提供静态 IP:
- 微软做了这个改变几年前,为了简化 Hyper-V VM 设置,我引入了外部交换机,因为以前必须在交换机管理器中创建外部交换机,无论连接类型如何,都可以访问主机的网络
根据需要静态 IP 的原因,创建虚拟交换机管理器或者电源外壳:
路由器管理的流量:
主机管理的流量:
- 内部的转变:在主机和客户端上手动分配 IP 子网
- 允许 VM ⟷ 主机和/或 VM ⟷ VM 之间的通信
- 缺少 DHCP 服务器和网关,因此只有 IP 和子网掩码将设置
避免使用路由器通常使用的子网 [192.168.1.0/24
、2.0/24
、100.0/24
等],否则在使用相同子网连接到路由器时会出现问题
- 私人的转变:在客户端上手动分配 IP 子网
- 允许虚拟机与主机流量隔离的虚拟机通信
- Hyper-V 管理器→操作→虚拟交换机管理器
- 新建虚拟网络交换机→创建虚拟交换机→ <类型> →创建虚拟交换机
- 创建一个姓名→ 选择连接类型→好的/申请
- + R→
powershell
→ Ctrl+Shift +好的 - 列出现有的网络适配器并记下
Name
要使用的适配器:PS $ Get-NetAdapter Name InterfaceDescription ifIndex Status MacAddress LinkSpeed ---- -------------------- ------- ------ ---------- --------- vWiFi Hyper-V Virtual Ethernet Adapter #3 62 Up A0-11-22-33-44-55 10 Gbps LAN Killer E2200 Gigabit Ethernet Controll… 25 Disconnected B0-11-22-33-44-55 0 bps BT Bluetooth Device (Personal Area Networ… 23 Disconnected B1-11-22-33-44-55 3 Mbps vLAN Hyper-V Virtual Ethernet Adapter 54 Up A1-11-22-33-44-55 10 Gbps vDefault Hyper-V Virtual Ethernet Adapter #2 58 Up A2-11-22-33-44-55 10 Gbps OpenVPN TAP6 TAP-Windows Adapter V9 12 Disconnected A3-11-22-33-44-55 1 Gbps OpenVPN WinTun Wintun Userspace Tunnel 11 Disconnected 100 Gbps WiFi Intel(R) Dual Band Wireless-AC 7260 5 Up B2-11-22-33-44-55 866.7 Mbps vShare Hyper-V Virtual Ethernet Adapter #4 2 Up A4-11-22-33-44-55 10 Gbps
- 创建虚拟交换机:
- 外部的:
New-VMSwitch -Name vWiFi -NetAdapterName WiFi -AllowManagementOS $true
- 内部的:
New-VMSwitch -Name vShare -SwitchType Internal
- 私人的:
New-VMSwitch -Mame vPrivate -SwitchType Private
- 外部的:
答案2
如果您需要使用 Hyper-V 来让客户机拥有相同的 IP 地址,请将客户机设置为桥接网络。这将可行,并且通常也适用于 VMware。这适用于一个网络。
考虑您正在使用的环境。
一:
带有传统有线以太网适配器的台式计算机非常适合桥接网络(外部交换机),其中客户机从主机连接到的路由器获取 IP 地址。
如果您需要访问访客机器,则可以这样做。桥接网络(外部交换机)是理想的选择。
这是使用桥接(外部)网络方法访问客户机的完整帖子。
这将在固定物理位置的笔记本电脑上运行,该笔记本电脑具有以太网连接、主板无线网卡以及安装在机器中的大多数 USB 无线适配器。
您永远不能使用蜂窝 USB 无线适配器进行桥接。
二:
典型的漫游笔记本电脑使用 NAT 网络,但 IP 地址不固定(静态)。它可以工作,我在一台机器上使用它,但不能保证。
如果您要将笔记本电脑移动到多个位置(例如家里和工作场所),此功能非常有用。
这里的技巧是确保在访问之前检查您的访客 IP。
要实现桥接网络,您需要将该网络类型添加到 Hyper-V 管理器。
我已经使用 Linux 客户机(Kali)完成了此操作并且运行良好。
打开 Hyper-V 管理器,然后打开虚拟交换机管理器并添加外部(桥接网络)交换机类型。为其指定一个您将在来宾设置中使用的名称。
完成后,转到 Hyper-V 管理器中的 Guest 区域、设置并转到网络适配器。从上一步添加外部适配器。
重新启动您更改的所有访客。